Istanze NAT - Amazon Virtual Private Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Istanze NAT

Un'istanza NAT fornisce la Network Address Translation (NAT), ovvero la traduzione degli indirizzi di rete. È possibile utilizzare un'istanza NAT per consentire alle risorse di una sottorete privata di comunicare con destinazioni esterne al cloud privato virtuale (VPC), come Internet o una rete on-premise. Le risorse nella sottorete privata possono avviare il traffico IPv4 in uscita verso Internet, ma non possono ricevere il traffico in entrata avviato su Internet.

Importante

L'AMI NAT è basato sull'ultima versione dell'AMI Amazon Linux, 2018.03, che ha raggiunto la fine del supporto standard il 31 dicembre 2020 e la fine del supporto di manutenzione il 31 dicembre 2023. Per ulteriori informazioni, consulta il seguente post sul blog: fine del supporto di Amazon Linux AMI.

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. Per ulteriori informazioni, consulta Confronto delle istanze NAT e i gateway NAT.

Se le istanze NAT si adattano meglio al tuo caso d'uso rispetto ai gateway NAT, puoi creare la tua AMI NAT da una versione corrente di Amazon Linux come descritto in. Creazione di un'AMI NAT

Principi di base di un'istanza NAT

L'immagine seguente illustra i principi di base di un'istanza NAT. La tabella di routing associata alla sottorete privata invia il traffico Internet dalle istanze nella sottorete privata all'istanza NAT nella sottorete pubblica. L'istanza NAT invia quindi il traffico al gateway Internet. Il traffico è attribuito all'indirizzo IP pubblico 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.

L'istanza NAT deve avere accesso a Internet pertanto deve trovarsi in una sottorete pubblica (una sottorete con una tabella di routing con un percorso verso il gateway Internet) e deve avere un indirizzo IP pubblico o un indirizzo IP elastico.


        Configurazione di un'istanza NAT

Per iniziare con le istanze NAT, crea un'AMI NAT, crea un gruppo di sicurezza per l'istanza NAT e avvia l'istanza NAT nel VPC.

La quota di istanze NAT dipende dalla quota di istanze per la regione. Per ulteriori informazioni, consulta Service Quotas di Amazon EC2 nella Riferimenti generali di AWS.

Creazione di un VPC per l'istanza NAT

Utilizza la procedura seguente per creare un VPC con una sottorete pubblica e una sottorete privata.

Per creare il VPC
  1. Apri alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Seleziona Crea VPC.

  3. Per Resources to create (Risorse da creare), scegli VPC and more (VPC e altro).

  4. Per Name tag auto-generation (Generazione automatica di tag nome), immetti un nome per il VPC.

  5. Per configurare le sottoreti, procedi come segue:

    1. Per Number of Availability Zones (Numero di zone di disponibilità), scegli 1 o 2, a seconda delle tue esigenze.

    2. Per Number of public subnets (Numero di sottoreti pubbliche), assicurati di avere una sottorete pubblica per zona di disponibilità.

    3. Per Number of private subnets (Numero di sottoreti private), assicurati di avere una sottorete privata per ogni zona di disponibilità.

  6. Seleziona Crea VPC.

Creazione di un gruppo di sicurezza per l'istanza NAT

Crea un gruppo di sicurezza con le regole descritte nella tabella seguente. Queste regole consentono all'istanza NAT di ricevere traffico destinato a Internet dalle istanze nella sottorete privata nonché traffico SSH dalla propria 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 Consente il traffico HTTP in entrata dai server nella sottorete privata
CIDR della sottorete privata TCP 443 Consente il traffico HTTPS in entrata dai server nella sottorete privata
Intervallo di indirizzi IP pubblici della rete TCP 22 Consente l'accesso SSH in entrata alle istanze NAT dalla rete (sul gateway Internet).
In uscita
Destinazione Protocollo Intervallo porte Commenti
0.0.0.0/0 TCP 80 Consente l'accesso HTTP in uscita a Internet
0.0.0.0/0 TCP 443 Consente l'accesso HTTPS in uscita a Internet
Creazione del gruppo di sicurezza
  1. Accedi alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Scegli Gruppi di sicurezza nel riquadro di navigazione.

  3. Scegliere Create Security Group (Crea gruppo di sicurezza).

  4. Immettere un nome e una descrizione per il gruppo di sicurezza.

  5. Per VPC, seleziona l'ID del VPC per l'istanza NAT.

  6. Aggiungi le regole per il traffico in entrata in Regole in entrata come riportato di seguito:

    1. Scegli Aggiungi regola. Scegli HTTP per Tipo e immetti l'intervallo di indirizzi IP della sottorete privata nel campo Origine.

    2. Scegli Aggiungi regola. Scegli HTTPS per Tipo e immetti l'intervallo di indirizzi IP della sottorete privata nel campo Origine.

    3. Scegli Aggiungi regola. Scegli SSH per Tipo e inserisci l'intervallo di indirizzi IP della tua rete nel campo Origine.

  7. Aggiungi le regole per il traffico in uscita in Regole in uscita come riportato di seguito:

    1. Scegli Aggiungi regola. Scegli HTTP per Tipo e immetti 0.0.0.0/0 nel campo Destinazione.

    2. Scegli Aggiungi regola. Scegli HTTPS per Tipo e immetti 0.0.0.0/0 nel campo Destinazione.

  8. Scegliere Create Security Group (Crea gruppo di sicurezza).

Per ulteriori informazioni, consulta Gruppi di sicurezza.

Creazione di un'AMI NAT

Un'AMI NAT è configurata per eseguire NAT su un'istanza EC2. È necessario creare un'AMI NAT e quindi avviare l'istanza NAT utilizzando l'AMI.

Se per l'AMI NAT prevedi di utilizzare un sistema operativo diverso da Amazon Linux, consulta la documentazione del sistema operativo per scoprire come configurare NAT. Assicurati di salvare queste impostazioni in modo che rimangano salvate anche dopo il riavvio dell'istanza.

Per creare un'AMI NAT per Amazon Linux
  1. Avvia un'istanza EC2 con AL2023 o Amazon Linux 2 in esecuzione. Assicurati di specificare il gruppo di sicurezza che hai creato per l'istanza NAT.

  2. Connettiti all'istanza ed esegui i comandi seguenti sull'istanza per abilitare iptables.

    sudo yum install iptables-services -y sudo systemctl enable iptables sudo systemctl start iptables
  3. Effettua le seguenti operazioni sull'istanza per abilitare l'inoltro IP in modo che persista dopo il riavvio:

    1. Usando un editor di testo, come nano o vim, crea il seguente file di configurazione: /etc/sysctl.d/custom-ip-forwarding.conf.

    2. Aggiungi la seguente riga al file di configurazione.

      net.ipv4.ip_forward=1
    3. Salva il file di configurazione ed esci dall'editor di testo.

    4. Esegui il seguente comando per applicare il file di configurazione.

      sudo sysctl -p /etc/sysctl.d/custom-ip-forwarding.conf
  4. Esegui il comando seguente sull'istanza e annota il nome dell'interfaccia di rete principale. Queste informazioni serviranno per la fase successiva.

    netstat -i

    Nel seguente output di esempio, docker0 è un'interfaccia di rete creata da docker, eth0 è l'interfaccia di rete principale e lo è l'interfaccia di loopback.

    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg docker0 1500 0 0 0 0 0 0 0 0 BMU eth0 9001 7276052 0 0 0 5364991 0 0 0 BMRU lo 65536 538857 0 0 0 538857 0 0 0 LRU

    Nell'output di esempio seguente, l'interfaccia di rete è enX0.

    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enX0 9001 1076 0 0 0 1247 0 0 0 BMRU lo 65536 24 0 0 0 24 0 0 0 LRU

    Nell'output di esempio seguente, l'interfaccia di rete è ens5.

    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg ens5 9001 14036 0 0 0 2116 0 0 0 BMRU lo 65536 12 0 0 0 12 0 0 0 LRU
  5. Esegui il comando riportato sull'istanza per configurare NAT. Se l'interfaccia di rete principale non è eth0, sostituire eth0 con l'interfaccia di rete principale che hai annotato nel passaggio precedente.

    sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo /sbin/iptables -F FORWARD sudo service iptables save
  6. Crea un'AMI NAT dall'istanza EC2. Per maggiori informazioni, consulta Creazione di un'AMI Linux da un'istanza nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Avvio di un'istanza NAT

Utilizza la procedura seguente per avviare un'istanza NAT utilizzando il VPC, il gruppo di sicurezza e l'AMI NAT creata.

Avvio di un'istanza NAT
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di controllo scegliere Avvia istanza.

  3. Nel campo Nome, inserisci un nome per l'istanza NAT.

  4. Per Applicazioni e immagini del sistema operativo, seleziona l'AMI NAT (scegli Sfoglia altre AMI, Le mie AMI).

  5. Per Tipo di istanza, seleziona un tipo di istanza che fornisce le risorse di calcolo, memoria e archiviazione di cui ha bisogno l'istanza NAT.

  6. In Coppia di chiavi, scegli una coppia di chiavi esistente o Crea una nuova coppia di chiavi.

  7. In Network settings (Impostazioni di rete) effettua le seguenti operazioni:

    1. Scegli Modifica.

    2. Per VPC scegli il VPC creato.

    3. Per Sottorete, scegli la sottorete pubblica creata per il VPC.

    4. Per Auto-assign Public IP (Assegna automaticamente IP pubblico), scegli Enable (Abilita). In alternativa, dopo aver avviato l'istanza NAT, alloca un indirizzo IP elastico e assegnalo all'istanza NAT.

    5. Per Firewall, scegli Seleziona gruppo di sicurezza esistente, quindi scegli il gruppo di sicurezza creato.

  8. Scegliere Launch Instance (Avvia istanza). Scegli l'ID dell'istanza per aprire la relativa pagina dei dettagli. Attendi che lo stato dell'istanza passi a In esecuzione e che i controlli di stato abbiano esito positivo.

  9. Disabilitazione dei controlli dell'origine/della destinazione per l'istanza NAT (consulta Disabilitazione dei controlli di origine/destinazione).

  10. Aggiorna la tabella di routing per inviare il traffico all'istanza NAT (consulta Aggiornamento della tabella di routing).

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.

Disabilitazione dei controlli di origine/destinazione
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione, seleziona Istanze.

  3. Seleziona l'istanza NAT.

  4. Seleziona Operazioni, Rete, Modifica il controllo dell'origine/della destinazione.

  5. Per Controllo origine/destinazione, seleziona Arresta.

  6. Selezionare Salva.

  7. 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.

Aggiornamento della tabella di routing

La tabella di routing per la sottorete privata deve avere un percorso che invia traffico Internet all'istanza NAT.

Aggiornamento della tabella di routing
  1. Apri la console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel riquadro di navigazione, seleziona Tabelle di routing.

  3. Seleziona la tabella di routing per la sottorete privata.

  4. Nella scheda Routing, scegli Modifica route e scegli Aggiungi instradamento.

  5. Immetti 0,0.0.0/0 per Destinazione e l'ID dell'istanza NAT nel campo Destinazione.

  6. Seleziona Salvataggio delle modifiche.

Per ulteriori informazioni, consulta Configurare le tabelle di routing.

Testa l'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 sottorete privata può accedere a Internet tramite l'istanza NAT utilizzando quest'ultima come server host bastione.

Fase 1: aggiornamento del gruppo di sicurezza dell'istanza NAT

Per consentire alle istanze della sottorete privata di inviare traffico ping all'istanza NAT, aggiungi una regola per permettere il traffico ICMP in entrata e in uscita. Per consentire all'istanza NAT di fungere da host bastione, aggiungi una regola per permettere il traffico SSH in uscita verso la sottorete privata.

Per aggiornare il gruppo di sicurezza dell'istanza NAT
  1. Accedi alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel pannello di navigazione, seleziona Gruppi di sicurezza.

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

  4. Nella scheda Inbound rules (Regole in entrata), seleziona Edit inbound rules (Modifica regole in entrata).

  5. Scegliere Add rule (Aggiungi regola). Scegli Tutti ICMP - IPv4 per Tipo. Scegli Personalizzato per Origine e specifica l'intervallo di indirizzi IP della sottorete privata. Scegliere Salva regole.

  6. Dalla scheda Regole in uscita, seleziona Modifica 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.

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

Fase 2. avvio di un'istanza di test nella sottorete privata

Avviare un'istanza nella sottorete privata. È necessario consentire l'accesso SSH dall'istanza NAT e utilizzare la stessa coppia di chiavi utilizzata per l'istanza NAT.

Per avviare un'istanza di test nella sottorete privata
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di controllo scegliere Avvia istanza.

  3. Seleziona la sottorete privata.

  4. Non assegnare un indirizzo IP pubblico all'istanza.

  5. Assicurati che il gruppo di sicurezza di questa istanza consenta l'accesso SSH in entrata dall'istanza NAT o dall'intervallo di indirizzi IP della sottorete pubblica, e il traffico ICMP in uscita.

  6. Seleziona la stessa coppia di chiavi utilizzata per l'istanza NAT.

Fase 3: esecuzione del ping di un sito Web abilitato per ICMP

Per verificare che l'istanza di test nella sottorete privata possa utilizzare l'istanza NAT per comunicare con Internet, esegui il comando ping.

Test della connessione Internet dall'istanza privata
  1. Dal computer locale, configura l'inoltro dell'agente SSH, in modo da poter utilizzare l'istanza NAT come host bastione.

    Linux and macOS
    ssh-add key.pem
    Windows

    Scarica e installa Pageant, se non è già installato.

    Converti la chiave privata in formato .ppk tramite PuTTYgen.

    Avvia Pageant, fai clic con il tasto destro del mouse sull'icona Pageant nella barra delle applicazioni (potrebbe essere nascosta), quindi seleziona Aggiungi chiave. Seleziona il file .ppk creato, immetti la passphrase se necessario e scegli Apri.

  2. Dal computer locale connettiti all'istanza NAT.

    Linux and macOS
    ssh -A ec2-user@nat-instance-public-ip-address
    Windows

    Connettiti all'istanza NAT tramite PuTTY. In Autenticazione, devi selezionare Consenti inoltro agente e lascia vuoto il campo File della chiave privata per l'autenticazione.

  3. Dall'istanza NAT, esegui il comando ping, che specifica un sito Web abilitato per ICMP.

    [ec2-user@ip-10-0-4-184]$ ping ietf.org

    Per confermare che l'istanza NAT abbia accesso a Internet, verifica di aver ricevuto un output simile al seguente, quindi premi Ctrl+C per annullare il comando ping. In caso contrario, verifica che l'istanza NAT si trovi in una sottorete pubblica (ossia che la relativa tabella di routing abbia una route verso un gateway Internet).

    PING ietf.org (104.16.45.99) 56(84) bytes of data. 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=7.88 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.09 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=7.97 ms ...
  4. Dall'istanza NAT, connettiti all'istanza nella sottorete privata utilizzando il relativo indirizzo IP privato.

    [ec2-user@ip-10-0-4-184]$ ssh ec2-user@private-server-private-ip-address
  5. Dall'istanza privata, verifica che sia possibile connettersi a Internet eseguendo il comando ping.

    [ec2-user@ip-10-0-135-25]$ ping ietf.org

    Per confermare che l'istanza privata abbia accesso a Internet tramite l'istanza NAT, verifica di aver ricevuto un output simile al seguente, quindi premi Ctrl+C per annullare il comando ping.

    PING ietf.org (104.16.45.99) 56(84) bytes of data. 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=8.76 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.26 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=8.27 ms ...
Risoluzione dei problemi

Se il comando ping non viene eseguito dal server nella sottorete privata, completa la seguente procedura per risolvere il problema:

  • Verifica di aver eseguito il ping su un sito Web con ICMP abilitato. Altrimenti, il server non sarà in grado di ricevere pacchetti di risposta. Per completare il test, esegui lo stesso comando ping dal terminale a riga di comando sul computer.

  • Verifica che il gruppo di sicurezza dell'istanza NAT consenta il traffico ICMP in entrata dalla sottorete privata. In caso contrario, l'istanza NAT non potrà ricevere il comando ping dall'istanza privata.

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

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

Fase 4: pulizia

Se non hai più bisogno del server di test nella sottorete privata, termina l'istanza in modo che non venga più fatturata. Per ulteriori informazioni, consulta Termina l'istanza nella Guida per l'utente di Amazon EC2 per le istanze Linux.

Se non hai più bisogno dell'istanza NAT, puoi interromperla o terminarla in modo che non venga più fatturata. Se hai creato un'AMI NAT, puoi creare una nuova istanza NAT ogni volta che è necessario.