Consentire alle risorse private di comunicare all'esterno del VPC
Questa sezione descrive come creare e utilizzare istanze NAT per consentire alle risorse di una sottorete privata di comunicare all'esterno del cloud privato virtuale.
Attività
1. 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
-
Apri alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/
. -
Seleziona Crea VPC.
-
Per Resources to create (Risorse da creare), scegli VPC and more (VPC e altro).
-
Per Name tag auto-generation (Generazione automatica di tag nome), immetti un nome per il VPC.
-
Per configurare le sottoreti, procedi come segue:
-
Per Number of Availability Zones (Numero di zone di disponibilità), scegli 1 o 2, a seconda delle tue esigenze.
-
Per Number of public subnets (Numero di sottoreti pubbliche), assicurati di avere una sottorete pubblica per zona di disponibilità.
-
Per Number of private subnets (Numero di sottoreti private), assicurati di avere una sottorete privata per ogni zona di disponibilità.
-
-
Seleziona Crea VPC.
2. 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 in entrata consigliate.
| 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). |
Di seguito sono riportate le regole in uscita consigliate.
| 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
-
Accedi alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/
. -
Scegli Gruppi di sicurezza nel riquadro di navigazione.
-
Scegliere Create Security Group (Crea gruppo di sicurezza).
-
Immettere un nome e una descrizione per il gruppo di sicurezza.
-
Per VPC, seleziona l'ID del VPC per l'istanza NAT.
-
Aggiungi le regole per il traffico in entrata in Regole in entrata come riportato di seguito:
-
Scegli Aggiungi regola. Scegli HTTP per Tipo e immetti l'intervallo di indirizzi IP della sottorete privata nel campo Origine.
-
Scegli Aggiungi regola. Scegli HTTPS per Tipo e immetti l'intervallo di indirizzi IP della sottorete privata nel campo Origine.
-
Scegli Aggiungi regola. Scegli SSH per Tipo e inserisci l'intervallo di indirizzi IP della tua rete nel campo Origine.
-
-
Aggiungi le regole per il traffico in uscita in Regole in uscita come riportato di seguito:
-
Scegli Aggiungi regola. Scegli HTTP per Tipo e immetti 0.0.0.0/0 nel campo Destinazione.
-
Scegli Aggiungi regola. Scegli HTTPS per Tipo e immetti 0.0.0.0/0 nel campo Destinazione.
-
-
Scegliere Create Security Group (Crea gruppo di sicurezza).
Per ulteriori informazioni, consulta Gruppi di sicurezza.
3. 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
-
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.
-
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 -
Effettua le seguenti operazioni sull'istanza per abilitare l'inoltro IP in modo che persista dopo il riavvio:
Usando un editor di testo, come nano o vim, crea il seguente file di configurazione:
/etc/sysctl.d/custom-ip-forwarding.conf.-
Aggiungi la seguente riga al file di configurazione.
net.ipv4.ip_forward=1 Salva il file di configurazione ed esci dall'editor di testo.
-
Esegui il seguente comando per applicare il file di configurazione.
sudo sysctl -p /etc/sysctl.d/custom-ip-forwarding.conf
-
Esegui il comando seguente sull'istanza e annota il nome dell'interfaccia di rete principale. Queste informazioni serviranno per la fase successiva.
netstat -iNel seguente output di esempio,
docker0è un'interfaccia di rete creata da docker,eth0è l'interfaccia di rete principale eloè 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 LRUNell'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 LRUNell'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 -
Esegui il comando riportato sull'istanza per configurare NAT. Se l'interfaccia di rete principale non è
eth0, sostituireeth0con l'interfaccia di rete principale che hai annotato nel passaggio precedente.sudo /sbin/iptables -t nat -A POSTROUTING -oeth0-j MASQUERADE sudo /sbin/iptables -F FORWARD sudo service iptables save -
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.
4. 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
Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di controllo scegliere Avvia istanza.
-
Nel campo Nome, inserisci un nome per l'istanza NAT.
-
Per Applicazioni e immagini del sistema operativo, seleziona l'AMI NAT (scegli Sfoglia altre AMI, Le mie AMI).
-
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.
-
In Coppia di chiavi, scegli una coppia di chiavi esistente o Crea una nuova coppia di chiavi.
-
In Network settings (Impostazioni di rete) effettua le seguenti operazioni:
-
Scegli Modifica.
-
Per VPC scegli il VPC creato.
-
Per Sottorete, scegli la sottorete pubblica creata per il VPC.
-
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.
-
Per Firewall, scegli Seleziona gruppo di sicurezza esistente, quindi scegli il gruppo di sicurezza creato.
-
-
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.
-
Disabilitazione dei controlli dell'origine/della destinazione per l'istanza NAT (consulta 5. Disabilitazione dei controlli di origine/destinazione).
-
Aggiorna la tabella di routing per inviare il traffico all'istanza NAT (consulta 6. Aggiornamento della tabella di routing).
5. 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
-
Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel riquadro di navigazione, seleziona Istanze.
-
Seleziona l'istanza NAT.
-
Seleziona Operazioni, Rete, Modifica il controllo dell'origine/della destinazione.
-
Per Controllo origine/destinazione, seleziona Arresta.
-
Selezionare Salva.
-
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.
6. 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
-
Apri la console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/
. -
Nel riquadro di navigazione, seleziona Tabelle di routing.
-
Seleziona la tabella di routing per la sottorete privata.
-
Nella scheda Routing, scegli Modifica route e scegli Aggiungi instradamento.
-
Immetti 0,0.0.0/0 per Destinazione e l'ID dell'istanza NAT nel campo Destinazione.
-
Scegli Save changes (Salva modifiche).
Per ulteriori informazioni, consulta Configurare le tabelle di routing.
7. 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.
Attività
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
Accedi alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/
. Nel pannello di navigazione, seleziona Gruppi di sicurezza.
Seleziona la casella di controllo relativa al gruppo di sicurezza associato all'istanza NAT.
Nella scheda Inbound rules (Regole in entrata), seleziona Edit inbound rules (Modifica regole in entrata).
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.
-
Dalla scheda Regole in uscita, seleziona Modifica regole in uscita.
-
Scegliere Add rule (Aggiungi regola). Seleziona SSH per Tipo. Seleziona Personalizzato per Destinazione e specifica l'intervallo di indirizzi IP della sottorete privata.
-
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
Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di controllo scegliere Avvia istanza.
-
Seleziona la sottorete privata.
-
Non assegnare un indirizzo IP pubblico all'istanza.
-
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.
-
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
-
Dal computer locale, configura l'inoltro dell'agente SSH, in modo da poter utilizzare l'istanza NAT come host bastione.
-
Dal computer locale connettiti all'istanza NAT.
-
Dall'istanza NAT, esegui il comando ping, che specifica un sito Web abilitato per ICMP.
[ec2-user@ip-10-0-4-184]$pingietf.orgPer 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 ... -
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 -
Dall'istanza privata, verifica che sia possibile connettersi a Internet eseguendo il comando ping.
[ec2-user@ip-10-0-135-25]$pingietf.orgPer 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 5. Disabilitazione dei controlli di origine/destinazione.
-
Controlla che le tabelle di routing siano state correttamente configurate. Per ulteriori informazioni, consulta 6. 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 la sezione relativa alla terminazione dell'istanza nella Guida per l'utente di Amazon EC2.
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.