Istanze NAT - Amazon Virtual Private Cloud

Istanze NAT

Importante

L'AMI NAT è basata sull'ultima versione di Amazon Linux, 2018.03 che ha raggiunto la fine del supporto standard il 31 dicembre 2020. Per ulteriori informazioni, consulta il seguente post sul blog: fine del supporto di Amazon Linux AMI. Questa AMI riceverà solo gli aggiornamenti di sicurezza critici (non ci saranno aggiornamenti regolari).

Se si utilizza un'AMI NAT esistente, AWS consiglia di migrare a un gateway NAT. I gateway NAT offrono una migliore disponibilità, una larghezza di banda superiore e richiedono un numero minore di interventi amministrativi. Se le istanze NAT corrispondono meglio al caso d'uso, è possibile creare la propria AMI NAT. Per ulteriori informazioni, consultare Confronto delle istanze NAT e i gateway NAT.

È possibile creare una propria AMI che fornisce la traduzione degli indirizzi di rete e utilizzarla per avviare un'istanza EC2 come istanza NAT. L'istanza NAT (Network Address Translation) viene avviata in una sottorete pubblica nel VPC per consentire alle istanze nella sottorete privata di avviare il traffico IPv4 in uscita verso Internet o altri servizi AWS e impedire alle stesse di ricevere traffico in entrata avviato da qualcuno su Internet.

La quota di istanze NAT dipende dalla quota di istanze per la regione. Per ulteriori informazioni, consultare Quote di servizio di Amazon EC2 nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Principi di base di un'istanza NAT

L'immagine seguente illustra i principi di base di un'istanza NAT. La tabella di routing principale è associata alla sottorete privata e invia il traffico dalle istanze nella sottorete privata all'istanza NAT nella sottorete pubblica. L'istanza NAT invia quindi il traffico al gateway Internet per il VPC. Il traffico è attribuito all'indirizzo IP elastico dell'istanza NAT. L'istanza NAT specifica un numero di porta elevato per la risposta; se si riceve una risposta, l'istanza NAT la invia a un'istanza nella sottorete privata in base al numero di porta della risposta.

Il traffico Internet dalle istanze nella sottorete privata viene instradato all'istanza NAT, che comunica con Internet. Pertanto, l'istanza NAT deve avere accesso a Internet. Deve trovarsi in una sottorete pubblica (una sottorete con una tabella di routing con una route al gateway Internet) e deve avere un indirizzo IP pubblico o un indirizzo IP elastico.


        Configurazione di un'istanza NAT

Configurazione dell'istanza NAT

Utilizzare la procedura seguente per configurare un VPC e un'istanza NAT.

Requisito

Prima di iniziare, creare un'AMI configurata per l'esecuzione di NAT sull'istanza. I comandi specifici per configurare NAT dipendono dal sistema operativo utilizzato. Ad esempio, per Amazon Linux 2, utilizzare i comandi seguenti:

sudo sysctl -w net.ipv4.ip_forward=1 sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo yum install iptables-services sudo service iptables save

Come configurare un'istanza NAT

  1. Creare un VPC con due sottoreti.

    1. Crea un VPC (consulta la sezione Crea un VPC).

    2. Crea due sottoreti (consulta la sezione Creazione di una sottorete).

    3. Collega un gateway Internet al VPC (consulta la sezione Creazione e collegamento di un gateway Internet).

    4. Crea una tabella di routing personalizzata che invia il traffico destinato all'esterno del VPC al gateway Internet e quindi associala a una sottorete per renderla pubblica (consulta la sezione Creazione di una tabella di routing personalizzata).

  2. Creare il gruppo di sicurezza NATSG (consulta Creazione del gruppo di sicurezza NATSG). Questo gruppo di sicurezza verrà specificato all'avvio dell'istanza NAT.

  3. Avviare un'istanza nella sottorete pubblica da un'AMI che è stata configurata per essere Eseguite come istanza NAT.

    1. Apri la console di Amazon EC2.

    2. Nel pannello di controllo, scegliere il pulsante Launch Instance (Avvia istanza) e completare la procedura guidata come segue:

      1. Nella pagina Scegli un'Amazon Machine Image (AMI) , imposta il filtro su Di mia proprietà, quindi seleziona la tua AMI.

      2. Nella pagina Choose an Instance Type (Scegli il tipo di istanza), selezionare il tipo di istanza, quindi selezionare Next: Configure Instance Details (Successivo: Configura i dettagli dell'istanza).

      3. Nella pagina Configure Instance Details (Configura i dettagli dell'istanza), selezionare il VPC creato dall'elenco Network (Rete) e selezionare la sottorete pubblica dall'elenco Subnet (Sottorete).

      4. (Facoltativo) Selezionare la casella di controllo Public IP (IP pubblico) per richiedere che l'istanza NAT riceva un indirizzo IP pubblico. Se si sceglie di non assegnare un indirizzo IP pubblico ora, è possibile allocare un indirizzo IP elastico e assegnarlo all'istanza dopo che è stata avviata. Scegliere Next: Add Storage (Successivo: Aggiungi storage).

      5. È possibile scegliere di aggiungere storage all'istanza e, nella pagina successiva, di aggiungere tag. Scegliere Next: Configure Security Group (Successivo: Configura il gruppo di sicurezza).

      6. Nella pagina Configure Security Group (Configura gruppo di sicurezza), selezionare l'opzione Select an existing security group (Seleziona un gruppo di sicurezza esistente) e scegliere il gruppo di sicurezza NATSG creato. Scegli Review and Launch (Analizza e avvia).

      7. Esaminare le impostazioni scelte. Apportare le Eventuali modifiche necessarie, quindi selezionare Launch (Avvia) per selezionare una coppia di chiavi e avviare l'istanza.

  4. Disabilitare l'attributo SrcDestCheck per l'istanza NAT (consulta Disabilitazione dei controlli di origine/destinazione).

  5. Se non si è assegnato un indirizzo IP pubblico all'istanza NAT durante l'avvio (fase 3), è necessario associarvi un indirizzo IP elastico.

    1. Accedere alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

    2. Nel riquadro di navigazione, selezionare Elastic IPs (IP elastici), quindi selezionare Allocate new address (Alloca un nuovo indirizzo).

    3. Scegliere Alloca.

    4. Selezionare l'indirizzo IP elastico dall'elenco, quindi selezionare Actions (Operazioni), Associate Address (Associa indirizzo).

    5. Selezionare la risorsa dell'Interfaccia di rete, quindi selezionare l'interfaccia di rete per l'istanza NAT. Selezionare l'indirizzo a cui associare l'IP elastico dall'elenco Private IP (IP privato), quindi selezionare Associate (Associa).

  6. Aggiornare la tabella di routing principale per inviare il traffico all'istanza NAT. Per ulteriori informazioni, consulta Aggiornamento della tabella di routing principale.

Avvio di un'istanza NAT tramite la riga di comando

Per avviare un'istanza NAT nella sottorete, utilizza uno dei comandi seguenti. Per ulteriori informazioni, consulta Uso di Amazon VPC. È possibile utilizzare l'ID AMI dell'AMI configurata per l'esecuzione come istanza NAT. Per informazioni su come creare un'AMI su Amazon Linux 2, consulta Creazione di AMI supportate da Amazon EBS nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Creazione del gruppo di sicurezza NATSG

Definisci il gruppo di sicurezza NATSG come descritto nella tabella seguente per consentire all'istanza NAT di ricevere traffico destinato a Internet dalle istanze in una sottorete privata nonché traffico SSH dalla rete. L'istanza NAT può anche inviare traffico a Internet, di modo che le istanze nella sottorete privata possano ottenere aggiornamenti software.

Di seguito sono riportate le regole consigliate.

In entrata
Crea Protocollo Intervallo porte Commenti
CIDR della sottorete privata TCP 80 Allow inbound HTTP traffic from servers in the private subnet
CIDR della sottorete privata TCP 443 Allow inbound HTTPS traffic from servers in the private subnet
Intervallo di indirizzi IP pubblici della rete TCP 22 Allow inbound SSH access to the NAT instance from your network (over the internet gateway)
In uscita
Destinazione Protocollo Intervallo porte Commenti
0.0.0.0/0 TCP 80 Allow outbound HTTP access to the internet
0.0.0.0/0 TCP 443 Allow outbound HTTPS access to the internet

Per creare il gruppo di sicurezza NATSG

  1. Accedere alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel riquadro di navigazione, scegliere Security Groups (Gruppi di sicurezza) e quindi Create Security Group (Crea gruppo di sicurezza).

  3. Nella finestra di dialogo Create Security Group (Crea un gruppo di sicurezza), specificare NATSG come nome del gruppo di sicurezza e fornire una descrizione. Selezionare l'ID del VPC dall'elenco VPC, quindi selezionare Yes, Create (Sì, crea).

  4. Selezionare il gruppo di sicurezza NATSG appena creato. Nel riquadro dei dettagli vengono visualizzati i dettagli relativi al gruppo di sicurezza e le schede per l'utilizzo delle relative regole in entrata e in uscita.

  5. Aggiungere le regole per il traffico in entrata utilizzando la scheda Inbound Rules (Regole in entrata) come segue:

    1. Seleziona Edit (Modifica).

    2. Selezionare Add another rule (Aggiungi un'altra regola), quindi selezionare HTTP dall'elenco Type (Tipo). Nel campo Source (Origine) specificare l'intervallo di indirizzi IP della sottorete privata.

    3. Selezionare Add another rule (Aggiungi un'altra regola), quindi selezionare HTTPS dall'elenco Type (Tipo). Nel campo Source (Origine) specificare l'intervallo di indirizzi IP della sottorete privata.

    4. Selezionare Add another rule (Aggiungi un'altra regola), quindi selezionare SSH dall'elenco Type (Tipo). Nel campo Source (Origine), specificare l'intervallo di indirizzi IP pubblici della rete.

    5. Selezionare Salva.

  6. Aggiungere le regole per il traffico in uscita utilizzando la scheda Outbound Rules (Regole in uscita) come segue:

    1. Seleziona Edit (Modifica).

    2. Selezionare Add another rule (Aggiungi un'altra regola), quindi selezionare HTTP dall'elenco Type (Tipo). Nel campo Destination (Destinazione), specificare 0.0.0.0/0.

    3. Selezionare Add another rule (Aggiungi un'altra regola), quindi selezionare HTTPS dall'elenco Type (Tipo). Nel campo Destination (Destinazione), specificare 0.0.0.0/0.

    4. Selezionare Salva.

Per ulteriori informazioni, consulta Controlla il traffico verso le risorse utilizzando gruppi di sicurezza.

Disabilitazione dei controlli di origine/destinazione

Per impostazione predefinita, ogni istanza EC2 esegue controlli dell'origine/della destinazione. Ciò significa che l'istanza deve Essere l'origine o la destinazione di tutto il traffico che invia o riceve. Tuttavia, un'istanza NAT deve Essere in grado di inviare E ricevere traffico quando non è l'origine o la destinazione. Di conseguenza, devi disabilitare i controlli dell'origine/della destinazione sull'istanza NAT.

Puoi disabilitare l'attributo SrcDestCheck di un'istanza NAT in esecuzione o arrestata utilizzando la console o la riga di comando.

Per disabilitare il controllo dell'origine/della destinazione tramite la console

  1. Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione, seleziona Instances (Istanze).

  3. Seleziona l'istanza NAT, scegli Operazioni, Reti, Modifica controllo di origine/destinazione.

  4. Verifica che il controllo di origine/destinazione sia stato interrotto. Altrimenti, seleziona Arresta.

  5. Selezionare Salva.

  6. Se l'istanza NAT dispone di un'interfaccia di rete secondaria, selezionala da Interfacce di rete nella scheda Rete. Scegli l'ID interfaccia per accedere alla pagina delle interfacce di rete. Seleziona Operazioni, Modifica controllo di origine/destinazione, deseleziona l'opzione Abilita e scegli Salva.

Per disabilitare il controllo dell'origine/della destinazione tramite la riga di comando

È possibile utilizzare uno dei seguenti comandi. Per ulteriori informazioni, consulta Uso di Amazon VPC.

Aggiornamento della tabella di routing principale

La sottorete privata nel VPC non è associata a una tabella di routing personalizzata, di conseguenza utilizza la tabella di routing principale. Per impostazione predefinita, la tabella di routing principale consente alle istanze nel VPC di comunicare tra loro. Devi aggiungere una route che invia il traffico rimanente della sottorete all'istanza NAT.

Per aggiornare la tabella di routing principale

  1. Accedere alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel riquadro di navigazione, selezionare Route Tables (Tabelle di routing).

  3. Seleziona la tabella di routing principale per il VPC (la colonna Principale riporta ). Nel riquadro dei dettagli sono visualizzate le schede per utilizzare la route, le associazioni e la propagazione della route.

  4. Nella scheda Route, effettuare le seguenti operazioni:

    1. Selezionare Modifica route, quindi scegliere Aggiungi route.

    2. Specificare 0.0.0.0/0 per Destinazione e l'ID istanza dell'istanza NAT per Target.

    3. Scegliere Save changes (Salva modifiche).

  5. Nella scheda Associazioni sottorete scegli Modifica associazioni sottorete. Selezionare la casella di controllo per la sottorete privata, quindi selezionare Salva associazioni.

Per ulteriori informazioni, consultare Configurare le tabelle di routing.

Test della configurazione dell'istanza NAT

Dopo aver avviato un'istanza NAT e completato le fasi di configurazione descritte in precedenza, puoi eseguire un test per verificare se un'istanza nella tua sottorete privata può accedere a Internet tramite l'istanza NAT utilizzando quest'ultima come host bastione. A questo proposito, aggiornare le regole del gruppo di sicurezza NATSG per consentire il traffico ICMP in entrata e in uscita, avviare un'istanza nella sottorete privata, configurare l'inoltro dell'agente SSH per accedere alle istanze nella sottorete privata, collegarsi all'istanza, quindi testare la connettività Internet.

Per aggiornare il gruppo di sicurezza dell'istanza NAT

  1. Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Fai clic su Gruppi di sicurezza nel pannello di navigazione.

  3. Selezionare la casella di controllo relativa al gruppo di sicurezza associato all'istanza NAT.

  4. Seleziona Modifica regole in entrata nella scheda Regole in entrata.

  5. Scegliere Add rule (Aggiungi regola). Scegli Tutti ICMP - IPv4 per Tipo. Scegli Personalizzato per Sorgente e specifica l'intervallo di indirizzi IP della sottorete privata (ad esempio, 10.0.1.0/24). Scegliere Save rules (Salva regole).

  6. Scegli Modifica regole in uscita nella scheda Regole in uscita.

  7. Scegliere Add rule (Aggiungi regola). Seleziona SSH per Tipo. Seleziona Personalizzato per Destinazione e specifica l'intervallo di indirizzi IP della sottorete privata (ad esempio, 10.0.1.0/24).

  8. Scegliere Add rule (Aggiungi regola). Scegli Tutti ICMP - IPv4 per Tipo. Scegliere Ovunque - IPv4 per Destinazione. Scegliere Save rules (Salva regole).

Per avviare un'istanza nella sottorete privata

  1. Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione, seleziona Instances (Istanze).

  3. Avviare un'istanza nella sottorete privata. Assicurarsi di configurare le seguenti opzioni nella procedura guidata di avvio, quindi selezionare Launch (Avvia):

    • Nella pagina Choose an Amazon Machine Image (AMI) (Scegli un'Amazon Machine Image (AMI)), selezionare un'AMI Amazon Linux nella categoria Quick Start.

    • Nella pagina Configure Instance Details (Configura i dettagli dell'istanza), selezionare la sottorete privata dall'elenco Subnet (Sottorete) e non assegnare un indirizzo IP pubblico all'istanza.

    • Nella pagina Configure Security Group (Configurazione del gruppo di sicurezza), assicurarsi che il gruppo di sicurezza includa una regola in entrata che autorizza l'accesso SSH dall'indirizzo IP privato dell'istanza NAT o dall'intervallo di indirizzi IP della sottorete pubblica e assicurarsi di avere una regola in uscita che autorizzi il traffico ICMP in uscita.

    • Nella finestra di dialogo Select an existing key pair or create a new key pair (Seleziona una coppia di chiavi esistente o crea una nuova coppia di chiavi), selezionare la stessa coppia di chiavi utilizzata per avviare l'istanza NAT.

Per configurare l'inoltro dell'agente SSH per Linux o OS X

  1. Dal computer locale, aggiungere la chiave privata all'agente di autenticazione.

    Per Linux, utilizzare il comando seguente:

    ssh-add -c mykeypair.pem

    Per OS X, utilizzare i seguenti comandi:

    ssh-add -K mykeypair.pem
  2. Connettersi all'istanza NAT utilizzando l'opzione -A per abilitare l'inoltro dell'agente SSH, ad esempio:

    ssh -A ec2-user@54.0.0.123

Per configurare l'inoltro agente SSH per Windows (PuTTY)

  1. Scaricare e installare Pageant dalla pagina di download PuTTY, se non è già installato.

  2. Convertire la chiave privata in formato .ppk. Per ulteriori informazioni, consulta la pagina relativa alla conversione della chiave privata utilizzando PuTTYgen.

  3. Avviare Pageant, fare clic con il tasto destro del mouse del mouse sull'icona Pageant nella barra delle applicazioni (potrebbe Essere nascosta), quindi selezionare Add Key (Aggiungi chiave). Selezionare il file .ppk creato, immettere la passphrase se necessario e scegliere Open (Apri).

  4. Avviare una sessione PuTTY per connettersi all'istanza NAT. Nella categoria Auth, accertarsi di selezionare l'opzione Allow agent forwarding (Consenti inoltro agente) e lasciare vuoto il campo Private key file for authentication (File chiave privata per autenticazione).

Per eseguire il test della connessione Internet

  1. Verificare che l'istanza NAT possa comunicare con Internet eseguendo il comando ping per un sito Web con ICMP abilitato, ad esempio:

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=48 time=74.9 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=48 time=75.1 ms ...

    Premere Ctrl+C sulla tastiera per annullare il comando ping.

  2. Dall'istanza NAT, connettersi all'istanza nella sottorete privata utilizzando il relativo indirizzo IP privato, ad esempio:

    ssh ec2-user@10.0.1.123
  3. Dall'istanza privata, verificare che sia possibile connettersi a Internet eseguendo il comando ping:

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms ...

    Premere Ctrl+C sulla tastiera per annullare il comando ping.

    Se il comando ping non riesce, procedi come descritto di seguito:

    • Verificare che le regole del gruppo di sicurezza dell'istanza NAT autorizzino il traffico ICMP in entrata dalla sottorete privata. In caso contrario, l'istanza NAT non può ricevere il comando ping dall'istanza privata.

    • Controlla che le tabelle di routing siano state correttamente configurate. Per ulteriori informazioni, consulta Aggiornamento della tabella di routing principale.

    • Assicurarsi di aver disabilitato il controllo dell'origine/della destinazione per l'istanza NAT. Per ulteriori informazioni, consulta Disabilitazione dei controlli di origine/destinazione.

    • Assicurarsi di aver eseguito il ping di un sito Web in cui ICMP è abilitato. In caso contrario, non riceverai pacchetti di risposta. Per completare il test, esegui lo stesso comando ping dal terminale a riga di comando sul computer.

  4. (Facoltativo) Terminare l'istanza privata se non è più necessaria. Per ulteriori informazioni, consulta Termina l'istanza nella Guida per l'utente di Amazon EC2 per le istanze Linux.