Använda SNAT (Source Network Address Translation) för utgående anslutningar

Vissa scenarier kräver att virtuella datorer eller beräkningsinstanser har utgående anslutning till Internet. Klientdels-IP-adresser för en offentlig lastbalanserare kan användas för att tillhandahålla utgående anslutning till Internet för serverdelsinstanser. Den här konfigurationen använder källnätverksadressöversättning (SNAT) för att översätta den virtuella datorns privata IP-adress till lastbalanserarens offentliga IP-adress. SNAT mappar IP-adressen i serverdelen mot lastbalanseras offentliga IP-adress. SNAT förhindrar att externa källor får direktadresser till instanserna i serverdelen.

Azures utgående anslutningsmetoder

Följande metoder är Azures vanligaste metoder för att aktivera utgående anslutning:

# Metod Typ av portallokering Produktionsklass? Klassificering
1 Använd klientdelens IP-adress (es) för en lastbalanserare för utgående trafik via utgående regler Statisk, explicit Ja, men inte i stor skala OK
2 Associera en NAT-gateway till undernätet Dynamisk, explicit Ja Bästa
3 Tilldela en offentlig IP-adress till den virtuella datorn Statisk, explicit Ja OK
4 Standardåtkomst för utgående trafik Implicit Inga Värsta

Diagram of Azure outbound options.

1. Använd klientdelens IP-adress för en lastbalanserare för utgående trafik via utgående regler

Diagram public load balancer with outbound rules.

Med regler för utgående trafik kan du explicit definiera SNAT (källnätverksadressöversättning) för en offentlig SKU-standardlastbalanserare. Med den här konfigurationen kan du använda den offentliga IP-adressen eller IP-adresserna för lastbalanseraren för utgående anslutning av serverdelsinstanserna.

Den här konfigurationen aktiverar:

  • IP-maskering

  • Förenkla dina tillåtna listor

  • Minskar antalet offentliga IP-resurser för distribution

Med regler för utgående trafik har du fullständig deklarativ kontroll över utgående Internetanslutning. Med regler för utgående trafik kan du skala och justera den här möjligheten efter dina specifika behov via manuell portallokering. Om du manuellt allokerar SNAT-portar baserat på storleken på serverdelspoolen och antalet frontendIPConfigurations kan du undvika SNAT-överbelastning.

Du kan allokera SNAT-portar manuellt antingen med "portar per instans" eller "maximalt antal serverdelsinstanser". Om du har virtuella datorer i serverdelen rekommenderar vi att du allokerar portar med "portar per instans" för att få maximal SNAT-portanvändning.

Beräkna portar per instans enligt följande:

Antal ip-adresser för klientdelen * 64 000/Antal serverdelsinstanser

Om du har VM-skalningsuppsättningar i serverdelen rekommenderar vi att du allokerar portar med "maximalt antal serverdelsinstanser". Om fler virtuella datorer läggs till i serverdelen än vad återstående SNAT-portar tillåts kan skalning av vm-skalningsuppsättningar blockeras eller så får de nya virtuella datorerna inte tillräckligt med SNAT-portar.

Mer information om regler för utgående trafik finns i Regler för utgående trafik.

2. Associera en NAT-gateway till undernätet

Diagram of a NAT gateway and public load balancer.

Azure NAT Gateway förenklar utgående Internetanslutning för virtuella nätverk. När du konfigurerar i ett undernät använder alla utgående anslutningar dina angivna statiska offentliga IP-adresser. Utgående anslutning är möjlig utan lastbalanserare eller offentliga IP-adresser som är direkt kopplade till virtuella datorer. NAT Gateway är fullständigt hanterad och mycket motståndskraftig.

Att använda en NAT-gateway är den bästa metoden för utgående anslutning. En NAT-gateway är mycket utökningsbar, tillförlitlig och har inte samma problem med SNAT-portöverbelastning.

Mer information om Azure NAT Gateway finns i Vad är Azure NAT Gateway.

3. Tilldela en offentlig IP-adress till den virtuella datorn

Diagram of virtual machines with instance level public IP addresses.

Sammanslutningar Metod IP-protokoll
Offentlig IP-adress på den virtuella datorns nätverkskort SNAT (Källnätverksadressöversättning)
används inte.
TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)
ICMP (Internet Control Message Protocol)
ESP (Kapsling av säkerhetsnyttolast)

Trafiken återgår till den begärande klienten från den virtuella datorns offentliga IP-adress (IP på instansnivå).

Azure använder den offentliga IP-adress som tilldelats IP-konfigurationen för instansens nätverkskort för alla utgående flöden. Instansen har alla tillfälliga portar tillgängliga. Det spelar ingen roll om den virtuella datorn är lastbalanserad eller inte. Det här scenariot har företräde framför de andra.

En offentlig IP-adress som tilldelats en virtuell dator är en 1:1-relation (i stället för 1: många) och implementeras som tillståndslös 1:1 NAT.

4. Standardutgående åtkomst

Diagram of default outbound access.

I Azure tilldelas virtuella datorer som skapats i ett virtuellt nätverk utan explicit definierad utgående anslutning en offentlig IP-standardadress för utgående trafik. Den här IP-adressen möjliggör utgående anslutning från resurserna till Internet. Den här åtkomsten kallas för standardåtkomst för utgående trafik. Den här åtkomstmetoden rekommenderas inte eftersom den är osäker och IP-adresserna kan komma att ändras.

Viktigt!

Den 30 september 2025 dras den utgående standardåtkomsten för nya distributioner tillbaka. Mer information finns i det officiella meddelandet. Vi rekommenderar att du använder en av de oförklarliga formerna av anslutning som visas i alternativ 1–3 ovan.

Vad är SNAT-portar?

Portar används för att generera unika identifierare som används för att underhålla distinkta flöden. Internet använder en femtupppel för att ge denna skillnad.

Om en port används för inkommande anslutningar har den en lyssnare för inkommande anslutningsbegäranden på den porten. Den porten kan inte användas för utgående anslutningar. För att upprätta en utgående anslutning används en tillfällig port för att ge målet en port där du kan kommunicera och underhålla ett distinkt trafikflöde. När dessa tillfälliga portar används för SNAT kallas de för SNAT-portar.

Per definition har varje IP-adress 65 535 portar. Varje port kan antingen användas för inkommande eller utgående anslutningar för TCP (Transmission Control Protocol) och UDP (User Datagram Protocol). När en offentlig IP-adress läggs till som en klientdels-IP till en lastbalanserare är 64 000 portar berättigade till SNAT.

Varje port som används i en belastningsutjämning eller inkommande NAT-regel förbrukar ett intervall på åtta portar från de 64 000 tillgängliga SNAT-portarna. Den här användningen minskar antalet portar som är berättigade till SNAT, om samma klientdels-IP används för utgående anslutning. Om belastningsutjämning eller inkommande NAT-regler förbrukade portar finns i samma block med åtta portar som används av en annan regel, kräver reglerna inte extra portar.

Kommentar

Om du behöver ansluta till azure PaaS-tjänster som stöds, till exempel Azure Storage, Azure SQL eller Azure Cosmos DB, kan du använda Azure Private Link för att undvika SNAT helt. Azure Private Link skickar trafik från ditt virtuella nätverk till Azure-tjänster via Azure-stamnätverket i stället för via Internet.

Private Link är det rekommenderade alternativet över tjänstslutpunkter för privat åtkomst till Azure-värdbaserade tjänster. Mer information om skillnaden mellan Private Link och tjänstslutpunkter finns i Jämför privata slutpunkter och tjänstslutpunkter.

Hur fungerar standard-SNAT?

När en virtuell dator skapar ett utgående flöde översätter Azure källans IP-adress till en tillfällig IP-adress. Översättningen görs via SNAT.

Om du använder SNAT utan utgående regler via en offentlig lastbalanserare, förallokeras SNAT-portar enligt beskrivningen i följande standardtabell för SNAT-portar:

Standardportallokeringstabell

När belastningsutjämningsregler har valts för att använda standardportallokering eller utgående regler konfigureras med "Använd standardantalet utgående portar" allokeras SNAT-portar som standard baserat på serverdelspoolens storlek. Serverdelar får det antal portar som definieras av tabellen, per klientdels-IP, upp till högst 1 024 portar.

Med till exempel 100 virtuella datorer i en serverdelspool och endast en klientdels-IP får varje virtuell dator 512 portar. Om en andra klientdels-IP läggs till får varje virtuell dator ytterligare 512 portar. Det innebär att varje virtuell dator allokeras totalt 1 024 portar. Därför ökar inte antalet allokerade SNAT-portar utöver 1024-portar genom att lägga till en tredje klientdels-IP-adress.

Som tumregel kan antalet SNAT-portar som tillhandahålls när standardportallokering används beräknas som: MIN(# av standard-SNAT-portar som tillhandahålls baserat på poolstorlek * antal klientdels-IP-adresser som är associerade med poolen, 1024)

Följande tabell visar SNAT-portförflyttningar för en enskild klientdels-IP, beroende på storleken på serverdelspoolen:

Poolstorlek (VM-instanser) Standard-SNAT-portar
1-50 1,024
51–100 512
101–200 256
201–400 128
401-800 64
801-1,000 32

Portöverbelastning

Varje anslutning till samma mål-IP och målport använder en SNAT-port. Den här anslutningen upprätthåller ett distinkt trafikflöde från serverdelsinstansen eller klienten till en server. Den här processen ger servern en distinkt port för att hantera trafik. Utan den här processen känner klientdatorn inte till vilket flöde ett paket ingår i.

Tänk dig att flera webbläsare går till https://www.microsoft.com, vilket är:

  • Mål-IP = 23.53.254.142

  • Målport = 443

  • Protokoll = TCP

Utan SNAT-portar för returtrafiken kan klienten inte skilja ett frågeresultat från ett annat.

Utgående anslutningar kan brista. En serverdelsinstans kan tilldelas otillräckliga portar. Använd funktioner för återanvändning av anslutningar i ditt program. Utan återanvändning av anslutning ökar risken för SNAT-portöverbelastning.

Mer information om anslutningspooler med Azure App Service finns i Felsöka tillfälliga utgående anslutningsfel i Azure App Service

Nya utgående anslutningar till en mål-IP-adress misslyckas när portöverbelastning inträffar. Anslut ions lyckas när en port blir tillgänglig. Den här överbelastningen uppstår när de 64 000 portarna från en IP-adress sprids tunt över många serverdelsinstanser. Vägledning om hur du åtgärdar SNAT-portöverbelastning finns i felsökningsguiden.

För TCP-anslutningar använder lastbalanseraren en enda SNAT-port för varje mål-IP och port. Den här multianvändningen möjliggör flera anslutningar till samma mål-IP med samma SNAT-port. Den här multianvändningen är begränsad om anslutningen inte är till olika målportar.

För UDP-anslutningar använder lastbalanseraren en portbegränsad NAT-algoritm som förbrukar en SNAT-port per mål-IP oavsett målport.

En port återanvänds för ett obegränsat antal anslutningar. Porten återanvänds endast om mål-IP-adressen eller porten är annorlunda.

Krav

  • När en anslutning är inaktiv utan att några nya paket skickas släpps portarna efter 4–120 minuter.

  • Det här tröskelvärdet kan konfigureras via regler för utgående trafik.

  • Varje IP-adress innehåller 64 000 portar som kan användas för SNAT.

  • Varje port kan användas för både TCP- och UDP-anslutningar till en mål-IP-adress

  • Det krävs en UDP SNAT-port om målporten är unik eller inte. För varje UDP-anslutning till en mål-IP används en UDP SNAT-port.

  • En TCP SNAT-port kan användas för flera anslutningar till samma mål-IP förutsatt att målportarna är olika.

  • SNAT-överbelastning uppstår när en serverdelsinstans får slut på angivna SNAT-portar. En lastbalanserare kan fortfarande ha oanvända SNAT-portar. Om en serverdelsinstans använda SNAT-portar överskrider sina angivna SNAT-portar kan den inte upprätta nya utgående anslutningar.

  • Fragmenterade paket tas bort om inte utgående är via en offentlig IP-adress på instansnivå på den virtuella datorns nätverkskort.

  • Sekundära IP-konfigurationer för ett nätverksgränssnitt tillhandahåller inte utgående kommunikation (såvida inte en offentlig IP-adress är associerad med den) via en lastbalanserare.

Nästa steg