AWS Solutions Architect · Lezione

NAT gateway e subnet private

Consentirete alle risorse delle subnet private di raggiungere Internet senza renderle direttamente raggiungibili, usando un NAT gateway gestito.

Lezione 3 di 413 passaggi

NAT gateway e subnet private è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.

Il problema dell'accesso Internet dalle subnet private

Le risorse nelle subnet private dispongono solo di indirizzi IP privati e non hanno alcuna route verso un Internet Gateway, quindi non possono avviare connessioni in uscita verso Internet. Tuttavia, spesso hanno bisogno di raggiungere Internet per scaricare patch del sistema operativo, estrarre immagini Docker, chiamare API di terze parti o aggiornare il software. La soluzione consiste nell'instradare il traffico delle subnet private attraverso un dispositivo che dispone dell'accesso a Internet ed esegue la NAT (Network Address Translation), nascondendo gli IP privati dietro un IP pubblico. AWS offre due opzioni: NAT Gateway (gestito) e NAT Instance autogestita (legacy).

NAT Gateway: NAT in uscita gestita

Un NAT Gateway è un servizio completamente gestito e ad alta disponibilità che consente alle istanze nelle subnet private di avviare connessioni in uscita verso Internet, bloccando al contempo il traffico in entrata non richiesto. Risiede in una subnet pubblica, dispone di un Elastic IP e raggiunge automaticamente una larghezza di banda fino a 100 Gbps. Non è necessario applicare patch, dimensionare o gestire l'infrastruttura sottostante. Il NAT Gateway traduce l'IP privato di origine dei pacchetti in uscita nel proprio EIP, quindi restituisce le risposte all'IP privato originale.

# Create a NAT Gateway in the public subnet
aws ec2 allocate-address --domain vpc  # Get an EIP
aws ec2 create-nat-gateway \
  --subnet-id subnet-public-1a \
  --allocation-id eipalloc-12345678 \
  --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=nat-gw-1a}]'

Instradamento del traffico delle sottoreti private tramite NAT

Dopo aver creato un NAT Gateway, aggiunga una route alla tabella di routing della sottorete privata: destinazione 0.0.0.0/0 → ID del NAT Gateway. In questo modo tutto il traffico diretto a Internet dalle istanze della sottorete privata viene inviato al NAT Gateway, che lo inoltra quindi tramite l'Internet Gateway verso Internet. La tabella di routing mantiene anche la route locale della VPC (ad esempio, 10.0.0.0/16 → local) per il traffico interno. Senza questa voce nella tabella di routing, le istanze della sottorete privata non avranno accesso a Internet, anche se è stato implementato un NAT Gateway.

# Add route in private subnet's route table pointing to NAT gateway
aws ec2 create-route \
  --route-table-id rtb-private-app-1a \
  --destination-cidr-block 0.0.0.0/0 \
  --nat-gateway-id nat-12345678

Architettura NAT Gateway multi-AZ

Un NAT Gateway è specifico per una AZ: gestisce il traffico solo dalle sottoreti presenti nella stessa AZ. Per ottenere un'elevata disponibilità, implementi un NAT Gateway per ogni AZ e crei tabelle di routing private specifiche per AZ: la tabella di routing privata nella AZ-a instrada 0.0.0.0/0 verso il NAT-GW nella AZ-a; la tabella di routing privata nella AZ-b instrada il traffico verso il NAT-GW nella AZ-b. In questo modo evita i costi di trasferimento dati tra AZ e garantisce che, se la AZ-a si guasta, le istanze nella AZ-b, con il proprio NAT, continuino ad avere accesso a Internet.

# Architecture: two NAT gateways, two private route tables
# NAT-GW-1a in subnet-public-1a  --> rtb-private-1a
# NAT-GW-1b in subnet-public-1b  --> rtb-private-1b

# Associate private-1a subnets with rtb-private-1a (NAT-GW-1a)
aws ec2 associate-route-table \
  --route-table-id rtb-private-1a \
  --subnet-id subnet-private-app-1a

NAT Gateway e NAT Instance a confronto

Una NAT Instance è un'istanza EC2 gestita autonomamente che esegue una NAT AMI: l'approccio precedente all'introduzione dei NAT Gateway. Le NAT Instance richiedono di: disabilitare il controllo dell'origine/destinazione sull'istanza EC2, gestire larghezza di banda e scalabilità, applicare le patch al sistema operativo e gestire i guasti. Sono più economiche per casi d'uso con larghezza di banda molto ridotta e possono essere utilizzate come bastion host. I NAT Gateway sono la scelta consigliata per la produzione: sono completamente gestiti, scalano automaticamente, offrono uno SLA di disponibilità del 99,99% all'interno di una AZ e non richiedono l'applicazione di patch. L'esame ha tradizionalmente verificato questo confronto.

# For NAT Instance: disable source/dest check (required!)
aws ec2 modify-instance-attribute \
  --instance-id i-nat-instance-id \
  --no-source-dest-check

Prezzi dei NAT Gateway

Il prezzo dei NAT Gateway comprende due componenti: un costo orario per ogni NAT Gateway (circa 0,045 $/ora in us-east-1, ovvero circa 32 $/mese) e un costo di elaborazione dei dati per GB (circa 0,045 $/GB in us-east-1). Per i carichi di lavoro che trasferiscono grandi quantità di dati tramite NAT, ad esempio il download di immagini di container di grandi dimensioni o download in blocco, il costo di elaborazione dei dati può diventare predominante. Ottimizzi i costi del NAT instradando il traffico verso S3 e DynamoDB tramite VPC Gateway Endpoints (che bypassano completamente il NAT e sono gratuiti) e instradando le chiamate alle API AWS tramite VPC Interface Endpoints invece che tramite NAT.

Progettazione delle sottoreti private per RDS

Le istanze di database nelle sottoreti private non dovrebbero instradare il traffico tramite il NAT Gateway: non devono avviare connessioni verso Internet. I database devono solo ricevere connessioni dal livello applicativo, all'interno della VPC, e potenzialmente raggiungere servizi AWS come S3, per esportazioni e importazioni, tramite un VPC endpoint. Per l'applicazione di patch e gli aggiornamenti dei database, RDS è un servizio gestito, quindi le patch del sistema operativo non vengono applicate direttamente. Per i database autogestiti su EC2, utilizzi Systems Manager Patch Manager, che può applicare le patch tramite SSM senza accesso a Internet se è stato configurato il VPC endpoint SSM.

NAT Gateway e sicurezza

Il NAT Gateway fornisce un NAT stateful solo in uscita: consente le connessioni in uscita avviate dalle istanze e le relative risposte, ma blocca tutto il traffico in ingresso non sollecitato. Non è un firewall: non ispeziona né filtra il contenuto del traffico. Per filtrare il traffico in uscita, ad esempio consentendo solo determinati domini o indirizzi IP di destinazione dalle sottoreti private, sono necessari controlli aggiuntivi: AWS Network Firewall implementato nella VPC oppure un'appliance firewall di terze parti dietro un Gateway Load Balancer. I gruppi di sicurezza e le NACL si applicano comunque alle istanze nelle sottoreti private, indipendentemente dal NAT.

NAT Gateway privato

Oltre ai NAT Gateway pubblici, con EIP per l'accesso a Internet, AWS supporta i NAT Gateway privati senza EIP. I NAT Gateway privati vengono utilizzati per tradurre gli indirizzi IP privati del traffico tra VPC oppure tra una VPC e reti on-premises quando gli intervalli CIDR si sovrappongono. Ad esempio, se VPC-A (10.0.0.0/16) deve comunicare con una rete on-premises che utilizza anch'essa 10.0.0.0/16, un NAT Gateway privato nella VPC-A traduce gli IP di origine in un intervallo non sovrapposto prima di instradare il traffico tramite un Transit Gateway verso l'ambiente on-premises.

Monitoraggio delle metriche del NAT Gateway

Monitori lo stato e le prestazioni del NAT Gateway tramite le metriche CloudWatch. Metriche principali: ActiveConnectionCount (connessioni TCP attive attualmente tramite il NAT), BytesInFromDestination / BytesInFromSource (trasferimento dati in entrambe le direzioni), PacketDropCount (pacchetti eliminati, indicano limiti di larghezza di banda o errori) ed ErrorPortAllocation (il NAT ha esaurito le allocazioni delle porte, situazione che può indicare l'esaurimento delle porte a causa di un numero eccessivo di connessioni). Ogni NAT Gateway supporta fino a 55.000 connessioni simultanee per ogni destinazione univoca; oltre tale limite, le connessioni potrebbero essere eliminate.

# Get NAT Gateway active connection count
aws cloudwatch get-metric-statistics \
  --namespace AWS/NATGateway \
  --metric-name ActiveConnectionCount \
  --dimensions Name=NatGatewayId,Value=nat-12345678 \
  --start-time 2024-01-01T00:00:00Z \
  --end-time 2024-01-01T01:00:00Z \
  --period 300 --statistics Maximum

Quando le sottoreti private non necessitano del NAT

Non tutti i carichi di lavoro nelle sottoreti private necessitano di un NAT Gateway. Valuti il modello di accesso: se le istanze devono comunicare solo con altre risorse della VPC e con servizi AWS accessibili tramite VPC endpoint (S3, DynamoDB, SSM, ECR, Secrets Manager), può eliminare completamente il NAT Gateway, risparmiando circa 32 $ al mese per AZ oltre ai costi di elaborazione dei dati. Questo è il modello ideale per microservizi completamente privati che utilizzano VPC Interface Endpoints per accedere a tutti i servizi AWS. Valuti ogni servizio chiamato dalle istanze e verifichi se un Gateway Endpoint gratuito o un Interface Endpoint a pagamento può sostituire il NAT.

Verifica rapida

Verifichi la comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: i NAT Gateway consentono alle istanze delle sottoreti private di accedere a Internet in uscita traducendo i relativi IP privati in un Elastic IP; è necessario aggiungere una route 0.0.0.0/0 nella tabella di routing della sottorete privata che punti al NAT Gateway; e per ottenere un'elevata disponibilità ed evitare i costi di trasferimento dati tra AZ è necessario implementare un NAT Gateway per ogni AZ. Nella prossima lezione confronteremo le Network ACL e i Security Group per una difesa VPC a più livelli.

Gratis per iniziare

Impara AWS Solutions Architect con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «NAT gateway e subnet private» è gratuita?

Sì — il testo completo di «NAT gateway e subnet private» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.

Cosa imparerò in «NAT gateway e subnet private»?

Consentirete alle risorse delle subnet private di raggiungere Internet senza renderle direttamente raggiungibili, usando un NAT gateway gestito. Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AWS Solutions Architect?

Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «NAT gateway e subnet private»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?

Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Architettura VPC e blocchi CIDR
  2. Internet gateway e tabelle di routing
  3. NAT gateway e subnet private
  4. Network ACL e security group a confronto
← Torna a AWS Solutions Architect