AWS Solutions Architect · Lektion

NAT-gateway och privata subnät

Låt resurser i privata subnät nå internet utan att vara direkt åtkomliga utifrån genom att använda en hanterad NAT-gateway.

Lektion 3 av 413 steg

NAT-gateway och privata subnät är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AWS Solutions Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Internetproblemet för privata subnät

Resurser i privata subnät har endast privata IP-adresser och ingen rutt till en Internet Gateway, så de kan inte initiera utgående anslutningar till internet. Men de behöver ofta kunna nå internet för att ladda ner OS-uppdateringar, hämta Docker-avbildningar, anropa API:er från tredje part eller uppdatera programvara. Lösningen är att dirigera trafik från privata subnät genom en enhet som har internetåtkomst och utför NAT (Network Address Translation), vilket döljer de privata IP-adresserna bakom en publik IP-adress. AWS erbjuder två alternativ: NAT Gateway (hanterad) och en självhanterad NAT Instance (äldre lösning).

NAT Gateway: Hanterad utgående NAT

En NAT Gateway är en fullständigt hanterad och mycket tillgänglig tjänst som gör det möjligt för instanser i privata subnät att initiera utgående anslutningar till internet samtidigt som oönskad inkommande trafik blockeras. Den finns i ett publikt subnät, har en Elastic IP och skalas automatiskt upp till 100 Gbit/s bandbredd. Ni behöver aldrig uppdatera, skala eller hantera den underliggande infrastrukturen. NAT Gateway översätter den privata käll-IP-adressen i utgående paket till sin egen EIP och skickar sedan svaren tillbaka till den ursprungliga privata IP-adressen.

# 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}]'

Dirigera trafik från privata subnät via NAT

När Ni har skapat en NAT Gateway lägger Ni till en route i routningstabellen för det privata subnätet: destination 0.0.0.0/0 → NAT Gateway-ID. Detta anger att all trafik från instanser i det privata subnätet som är avsedd för internet ska gå till NAT Gateway, som sedan vidarebefordrar den via Internet Gateway till internet. Routningstabellen har fortfarande den lokala VPC-routen (t.ex. 10.0.0.0/16 → local) för intern trafik. Utan denna route har instanser i det privata subnätet fortfarande ingen internetåtkomst, även om en NAT Gateway har distribuerats.

# 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

NAT Gateway-arkitektur med flera AZ

En NAT Gateway är specifik för en AZ – den hanterar endast trafik från subnät i samma AZ. För hög tillgänglighet distribuerar Ni en NAT Gateway per AZ och skapar AZ-specifika routningstabeller för privata subnät: den privata routningstabellen i AZ-a dirigerar 0.0.0.0/0 till NAT-GW i AZ-a, och den privata routningstabellen i AZ-b dirigerar trafiken till NAT-GW i AZ-b. Detta undviker avgifter för dataöverföring mellan AZ:er och säkerställer att instanserna i AZ-b, med sin egen NAT, fortsätter att ha internetåtkomst om AZ-a slutar fungera.

# 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 jämfört med NAT Instance

En NAT Instance är en egenhanterad EC2-instans som kör en NAT AMI – den äldre lösningen från tiden innan NAT Gateways fanns. NAT Instances kräver att Ni inaktiverar source/destination check på EC2-instansen, hanterar bandbredd och skalning, installerar säkerhetsuppdateringar för operativsystemet och hanterar fel. De är billigare vid användningsfall med mycket låg bandbredd och kan användas som bastionvärdar. NAT Gateways är det rekommenderade valet i produktion: de är helt hanterade, skalas automatiskt, har ett tillgänglighets-SLA på 99,99 % inom en AZ och kräver inga säkerhetsuppdateringar. På provet har denna jämförelse traditionellt testats.

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

Prissättning för NAT Gateway

Prissättningen för NAT Gateway består av två delar: en timkostnad per NAT Gateway (cirka 0,045 USD/timme i us-east-1, ungefär 32 USD/månad) och en databehandlingsavgift per GB (cirka 0,045 USD/GB i us-east-1). För arbetsbelastningar som överför stora datamängder via NAT, till exempel hämtning av stora containeravbildningar eller massnedladdningar, kan kostnaden för databehandling bli den största kostnadsposten. Optimera NAT-kostnaderna genom att dirigera S3- och DynamoDB-trafik via VPC Gateway Endpoints (kringgår NAT helt och är kostnadsfria) och AWS API-anrop via VPC Interface Endpoints i stället för via NAT.

Utformning av privata subnät för RDS

Databasinstanser i privata subnät bör inte dirigeras via NAT Gateway – de har inget behov av att initiera anslutningar till internet. Databaser behöver endast ta emot anslutningar från applikationslagret (inom VPC:n) och eventuellt nå AWS-tjänster som S3 (för export och import) via en VPC-endpoint. RDS är en hanterad tjänst, så vid korrigeringar och uppdateringar av databasen installerar Ni inte operativsystemets säkerhetsuppdateringar direkt. För egenhanterade databaser på EC2 använder Ni Systems Manager Patch Manager, som kan installera uppdateringar via SSM utan internetåtkomst om SSM VPC-endpointen är konfigurerad.

NAT Gateway och säkerhet

NAT Gateway tillhandahåller tillståndsbaserad NAT endast för utgående trafik: den tillåter initierade utgående anslutningar och deras svar, men blockerar all oinitierad inkommande trafik. Den är inte en brandvägg och inspekterar eller filtrerar inte trafikinnehåll. För filtrering av utgående trafik, till exempel för att endast tillåta specifika destinationsdomäner eller IP-adresser från privata subnät, behöver Ni ytterligare kontroller: AWS Network Firewall distribuerad i VPC:n eller en brandväggsapparat från tredje part bakom en Gateway Load Balancer. Säkerhetsgrupper och NACL:er gäller fortfarande för instanser i privata subnät, oavsett NAT.

Privat NAT Gateway

Utöver publika NAT Gateways (med EIP:er för internetåtkomst) stöder AWS privata NAT Gateways utan EIP. Privata NAT Gateways används för att översätta privata IP-adresser för trafik mellan VPC:er eller mellan en VPC och lokala nätverk när CIDR-intervallen överlappar. Om VPC-A (10.0.0.0/16) till exempel behöver kommunicera med ett lokalt nätverk som också använder 10.0.0.0/16, översätter en privat NAT Gateway i VPC-A käll-IP-adresserna till ett icke-överlappande intervall innan trafiken dirigeras via en Transit Gateway till det lokala nätverket.

Övervakning av NAT Gateway-mätvärden

Övervaka NAT Gateways hälsa och prestanda via CloudWatch-mätvärden. Viktiga mätvärden är: ActiveConnectionCount (aktuella aktiva TCP-anslutningar genom NAT), BytesInFromDestination / BytesInFromSource (dataöverföring i båda riktningarna), PacketDropCount (bortkastade paket – kan indikera bandbreddsbegränsningar eller fel) och ErrorPortAllocation (NAT har slut på portallokeringar – kan indikera portbrist på grund av för många anslutningar). Varje NAT Gateway stöder upp till 55 000 samtidiga anslutningar per unik destination. Därefter kan anslutningar komma att tappas.

# 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

När privata subnät inte behöver NAT

Alla arbetsbelastningar i privata subnät behöver inte en NAT Gateway. Ta hänsyn till åtkomstmönstret: om instanserna endast behöver kommunicera med andra VPC-resurser och AWS-tjänster som är åtkomliga via VPC-endpoints (S3, DynamoDB, SSM, ECR, Secrets Manager), kan Ni ta bort NAT Gateway helt och spara cirka 32 USD per månad och AZ samt databehandlingsavgifterna. Detta är det idealiska mönstret för helt privata mikrotjänster som använder VPC Interface Endpoints för all åtkomst till AWS-tjänster. Utvärdera varje tjänst som instanserna anropar och kontrollera om en kostnadsfri Gateway Endpoint eller en avgiftsbelagd Interface Endpoint kan ersätta NAT.

Snabbkontroll

Testa Er förståelse av AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har Ni lärt Er att: NAT Gateways möjliggör utgående internetåtkomst för instanser i privata subnät genom att översätta deras privata IP-adresser till en Elastic IP, Ni måste lägga till en 0.0.0.0/0-route i routningstabellen för det privata subnätet som pekar på NAT Gateway och Ni bör distribuera en NAT Gateway per AZ för att uppnå hög tillgänglighet och undvika dataavgifter mellan AZ:er. Härnäst jämför vi Network ACL:er och säkerhetsgrupper för lagerbaserat VPC-skydd.

Gratis att börja

Lär dig AWS Solutions Architect med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”NAT-gateway och privata subnät” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”NAT-gateway och privata subnät”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Vad lär jag mig i ”NAT-gateway och privata subnät”?

Låt resurser i privata subnät nå internet utan att vara direkt åtkomliga utifrån genom att använda en hanterad NAT-gateway. Ni övar på AWS Solutions Architect med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AWS Solutions Architect?

Du behöver inga förkunskaper. Utbildningen i AWS Solutions Architect på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”NAT-gateway och privata subnät”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AWS Solutions Architect-lektionen?

Ja. Varje AWS Solutions Architect-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. VPC-arkitektur och CIDR-block
  2. Internetgateway och routningstabeller
  3. NAT-gateway och privata subnät
  4. Nätverks-ACL:er jämfört med säkerhetsgrupper
← Tillbaka till AWS Solutions Architect