SNAT (Source Network Address Translation) gebruiken voor uitgaande verbindingen

Voor bepaalde scenario's moeten virtuele machines of rekenprocessen uitgaande connectiviteit met internet hebben. De front-end-IP's van een openbare load balancer kunnen worden gebruikt om uitgaande connectiviteit met internet te bieden voor back-endinstanties. Deze configuratie maakt gebruik van SNAT (Source Network Address Translation) om het privé-IP-adres van de virtuele machine te vertalen naar het openbare IP-adres van de load balancer. SNAT wijst het IP-adres van de back-end toe aan het openbare IP-adres van uw load balancer. SNAT voorkomt dat externe bronnen een direct adres hebben voor de back-endinstanties.

Uitgaande connectiviteitsmethoden van Azure

De volgende methoden zijn de meest gebruikte methoden van Azure om uitgaande connectiviteit mogelijk te maken:

# Methode Type poorttoewijzing Op productieniveau? Beoordeling
1 De front-end-IP-adressen van een load balancer gebruiken voor uitgaand verkeer via uitgaande regels Statisch, expliciet Ja, maar niet op schaal OK
2 Een NAT-gateway koppelen aan het subnet Dynamisch, expliciet Ja Beste
3 Een openbaar IP-adres toewijzen aan de virtuele machine Statisch, expliciet Ja OK
4 Standaardtoegang voor uitgaand verkeer Impliciet Nee Ergste

Diagram van uitgaande Opties voor Azure.

1. Gebruik het front-end-IP-adres van een load balancer voor uitgaand verkeer via uitgaande regels

Diagram openbare load balancer met uitgaande regels.

Met uitgaande regels kunt u SNAT (bronnetwerkadresomzetting) expliciet definiëren voor een openbare SKU-load balancer. Met deze configuratie kunt u het openbare IP- of IP-adres van uw load balancer gebruiken voor uitgaande connectiviteit van de back-endinstanties.

Deze configuratie maakt het volgende mogelijk:

  • IP-maskering

  • Uw acceptatielijsten vereenvoudigen

  • Vermindert het aantal openbare IP-resources voor implementatie

Met uitgaande regels hebt u volledige declaratieve controle over uitgaande internetverbinding. Met uitgaande regels kunt u deze mogelijkheid schalen en afstemmen op uw specifieke behoeften via handmatige poorttoewijzing. Het handmatig toewijzen van de SNAT-poort op basis van de grootte van de back-endpool en het aantal front-endIPConfigurations kan helpen bij het voorkomen van SNAT-uitputting.

U kunt SNAT-poorten handmatig toewijzen door 'poorten per exemplaar' of 'maximum aantal back-endexemplaren' toe te wijzen. Als u virtuele machines in de back-end hebt, is het raadzaam om poorten toe te wijzen op 'poorten per exemplaar' om maximaal SNAT-poortgebruik te krijgen.

Bereken poorten per exemplaar als volgt:

Aantal front-end-IP's * 64.000/aantal back-endinstanties

Als u virtuele-machineschaalsets in de back-end hebt, is het raadzaam om poorten toe te wijzen op 'maximum aantal back-endexemplaren'. Als er meer VM's worden toegevoegd aan de back-end dan de resterende SNAT-poorten zijn toegestaan, kan het uitschalen van virtuele-machineschaalsets worden geblokkeerd of ontvangen de nieuwe VM's onvoldoende SNAT-poorten.

Zie Regels voor uitgaand verkeer voor meer informatie over uitgaande regels.

2. Een NAT-gateway koppelen aan het subnet

Diagram van een NAT-gateway en een openbare load balancer.

Azure NAT Gateway vereenvoudigt uitgaande internetverbinding voor virtuele netwerken. Indien geconfigureerd op een subnet, maken alle uitgaande verbindingen gebruik van uw opgegeven statische openbare IP-adressen. Uitgaande connectiviteit is mogelijk zonder load balancer of openbare IP-adressen die rechtstreeks zijn gekoppeld aan virtuele machines. NAT Gateway is volledig beheerd en zeer tolerant.

Het gebruik van een NAT-gateway is de beste methode voor uitgaande connectiviteit. Een NAT-gateway is zeer uitbreidbaar, betrouwbaar en heeft niet dezelfde zorgen over uitputting van SNAT-poorten.

Nat-gateway heeft voorrang op andere uitgaande connectiviteitsmethoden, waaronder een load balancer, openbare IP-adressen op exemplaarniveau en Azure Firewall.

Zie Wat is Azure NAT Gateway voor meer informatie over Azure NAT Gateway.

3. Wijs een openbaar IP-adres toe aan de virtuele machine

Diagram van virtuele machines met openbare IP-adressen op exemplaarniveau.

Verenigingen Methode IP-protocollen
Openbaar IP-adres op de NIC van de VIRTUELE machine SNAT (Source Network Address Translation)
wordt niet gebruikt.
TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)
ICMP (Internet Control Message Protocol)
ESP (Encapsulating Security Payload)

Verkeer keert terug naar de aanvragende client vanaf het openbare IP-adres van de virtuele machine (IP op exemplaarniveau).

Azure gebruikt het openbare IP-adres dat is toegewezen aan de IP-configuratie van de NIC van het exemplaar voor alle uitgaande stromen. Het exemplaar heeft alle tijdelijke poorten beschikbaar. Het maakt niet uit of de VM taakverdeling heeft of niet. Dit scenario heeft voorrang op de andere, met uitzondering van NAT Gateway.

Een openbaar IP-adres dat is toegewezen aan een VIRTUELE machine is een 1:1-relatie (in plaats van 1: veel) en geïmplementeerd als een staatloze 1:1 NAT.

4. Standaard uitgaande toegang

Diagram van standaard uitgaande toegang.

In Azure worden virtuele machines die zijn gemaakt in een virtueel netwerk zonder expliciete uitgaande connectiviteit gedefinieerd, een standaard openbaar IP-adres voor uitgaand verkeer toegewezen. Dit IP-adres maakt uitgaande connectiviteit van de resources naar internet mogelijk. Deze toegang wordt standaard uitgaande toegang genoemd. Deze toegangsmethode wordt niet aanbevolen omdat deze onveilig is en de IP-adressen kunnen worden gewijzigd.

Belangrijk

Op 30 september 2025 wordt de standaard uitgaande toegang voor nieuwe implementaties buiten gebruik gesteld. Zie de officiële aankondiging voor meer informatie. Het wordt aanbevolen om een van de explictvormen van connectiviteit te gebruiken, zoals wordt weergegeven in opties 1-3 hierboven.

Wat zijn SNAT-poorten?

Poorten worden gebruikt om unieke id's te genereren die worden gebruikt om afzonderlijke stromen te onderhouden. Internet maakt gebruik van een vijf tuple om dit onderscheid te maken.

Als een poort wordt gebruikt voor binnenkomende verbindingen, heeft deze een listener voor binnenkomende verbindingsaanvragen op die poort. Deze poort kan niet worden gebruikt voor uitgaande verbindingen. Om een uitgaande verbinding tot stand te brengen, wordt een tijdelijke poort gebruikt om de bestemming te voorzien van een poort waarop een afzonderlijke verkeersstroom kan worden gecommuniceerd en onderhouden. Wanneer deze tijdelijke poorten worden gebruikt voor SNAT, worden ze SNAT-poorten genoemd.

Elk IP-adres heeft per definitie 65.535 poorten. Elke poort kan worden gebruikt voor binnenkomende of uitgaande verbindingen voor TCP (Transmission Control Protocol) en UDP (User Datagram Protocol). Wanneer een openbaar IP-adres wordt toegevoegd als front-end-IP aan een load balancer, komen 64.000 poorten in aanmerking voor SNAT.

Elke poort die wordt gebruikt in een taakverdeling of binnenkomende NAT-regel verbruikt een bereik van acht poorten van de 64.000 beschikbare SNAT-poorten. Dit gebruik vermindert het aantal poorten dat in aanmerking komt voor SNAT, als hetzelfde front-end-IP-adres wordt gebruikt voor uitgaande connectiviteit. Als de verbruikte poorten voor taakverdeling of binnenkomende NAT-regels zich in hetzelfde blok bevinden van acht poorten die door een andere regel worden gebruikt, zijn voor de regels geen extra poorten vereist.

Notitie

Als u verbinding wilt maken met ondersteunde Azure PaaS-services , zoals Azure Storage, Azure SQL of Azure Cosmos DB, kunt u Azure Private Link gebruiken om SNAT volledig te voorkomen. Azure Private Link verzendt verkeer van uw virtuele netwerk naar Azure-services via het Backbone-netwerk van Azure in plaats van via internet.

Private Link is de aanbevolen optie voor service-eindpunten voor privétoegang tot gehoste Azure-services. Zie Privé-eindpunten en service-eindpunten vergelijken voor meer informatie over het verschil tussen Private Link en service-eindpunten.

Hoe werkt standaard-SNAT?

Wanneer een VIRTUELE machine een uitgaande stroom maakt, vertaalt Azure het bron-IP-adres naar een kortstondig IP-adres. Deze vertaling wordt uitgevoerd via SNAT.

Als u SNAT gebruikt zonder uitgaande regels via een openbare load balancer, worden SNAT-poorten vooraf toegewezen, zoals wordt beschreven in de volgende standaardtoewijzingstabel voor SNAT-poorten:

Standaardtabel voor poorttoewijzing

Wanneer taakverdelingsregels zijn geselecteerd voor het gebruik van standaardpoorttoewijzing of uitgaande regels zijn geconfigureerd met 'Het standaardaantal uitgaande poorten gebruiken', worden SNAT-poorten standaard toegewezen op basis van de grootte van de back-endpool. Back-ends ontvangen het aantal poorten dat is gedefinieerd door de tabel, per front-end-IP, tot maximaal 1024 poorten.

Als voorbeeld: met 100 VM's in een back-endpool en slechts één front-end-IP ontvangt elke VM 512 poorten. Als er een tweede front-end-IP-adres wordt toegevoegd, ontvangt elke VIRTUELE machine een extra 512 poorten. Dit betekent dat aan elke VIRTUELE machine in totaal 1024 poorten zijn toegewezen. Als gevolg hiervan verhoogt het toevoegen van een derde front-end-IP het aantal toegewezen SNAT-poorten niet meer dan 1024 poorten.

Als vuistregel kan het aantal SNAT-poorten dat wordt opgegeven wanneer standaardpoorttoewijzing wordt gebruikt, worden berekend als: MIN(# van standaard SNAT-poorten die zijn opgegeven op basis van poolgrootte * aantal front-end-IP's die zijn gekoppeld aan de pool, 1024)

In de volgende tabel ziet u de SNAT-poortvoorbezettingen voor één front-end-IP, afhankelijk van de grootte van de back-endpool:

Poolgrootte (VM-exemplaren) Standaard-SNAT-poorten
1-50 1024
51-100 512
101-200 256
201-400 128
401-800 64
801-1,000 32

Poortuitputting

Elke verbinding met hetzelfde doel-IP en dezelfde doelpoort maakt gebruik van een SNAT-poort. Deze verbinding onderhoudt een afzonderlijke verkeersstroom van het back-endexemplaren of de client naar een server. Dit proces geeft de server een afzonderlijke poort waarop verkeer moet worden adresseren. Zonder dit proces weet de clientcomputer niet van welke stroom een pakket deel uitmaakt.

Stel dat er meerdere browsers naartoe https://www.microsoft.comgaan. Dit is:

  • Doel-IP = 23.53.254.142

  • Doelpoort = 443

  • Protocol = TCP

Zonder SNAT-poorten voor het retourverkeer kan de client het ene queryresultaat niet scheiden van een andere.

Uitgaande verbindingen kunnen bursten. Een back-endinstantie kan onvoldoende poorten worden toegewezen. Gebruik de functionaliteit voor hergebruik van verbindingen in uw toepassing. Zonder hergebruik van verbindingen wordt het risico op uitputting van SNAT-poorten verhoogd.

Zie Problemen met onregelmatige uitgaande verbindingsfouten in Azure-app Service oplossen voor meer informatie over het groeperen van verbindingen met Azure-app Service

Nieuwe uitgaande verbindingen met een doel-IP mislukken wanneer poortuitputting plaatsvindt. Verbinding maken ionen slagen wanneer een poort beschikbaar wordt. Deze uitputting treedt op wanneer de 64.000 poorten van een IP-adres dun zijn verdeeld over veel back-endinstanties. Zie de gids voor probleemoplossing voor hulp bij het beperken van SNAT-poortuitputting.

Voor TCP-verbindingen gebruikt de load balancer één SNAT-poort voor elk doel-IP en elke poort. Deze multiuse maakt meerdere verbindingen met hetzelfde doel-IP mogelijk met dezelfde SNAT-poort. Deze multiuse is beperkt als de verbinding niet naar verschillende doelpoorten is.

Voor UDP-verbindingen maakt de load balancer gebruik van een nat-algoritme met poortbeperking, dat één SNAT-poort per doel-IP verbruikt, ongeacht de doelpoort.

Een poort wordt opnieuw gebruikt voor een onbeperkt aantal verbindingen. De poort wordt alleen opnieuw gebruikt als het doel-IP of de poort anders is.

Beperkingen

  • Wanneer een verbinding inactief is zonder dat er nieuwe pakketten worden verzonden, worden de poorten na 4 tot 120 minuten vrijgegeven.

  • Deze drempelwaarde kan worden geconfigureerd via uitgaande regels.

  • Elk IP-adres bevat 64.000 poorten die kunnen worden gebruikt voor SNAT.

  • Elke poort kan worden gebruikt voor zowel TCP- als UDP-verbindingen met een doel-IP-adres

  • Er is een UDP SNAT-poort nodig, ongeacht of de doelpoort uniek is of niet. Voor elke UDP-verbinding met een doel-IP wordt één UDP SNAT-poort gebruikt.

  • Een TCP SNAT-poort kan worden gebruikt voor meerdere verbindingen met hetzelfde doel-IP, mits de doelpoorten verschillend zijn.

  • SNAT-uitputting treedt op wanneer een back-endinstantie onvoldoende SNAT-poorten heeft. Een load balancer kan nog steeds ongebruikte SNAT-poorten hebben. Als de gebruikte SNAT-poorten van een back-endexemplaren de opgegeven SNAT-poorten overschrijden, kan het geen nieuwe uitgaande verbindingen tot stand brengen.

  • Gefragmenteerde pakketten worden verwijderd, tenzij uitgaand verkeer plaatsvindt via een openbaar IP-adres op exemplaarniveau op de NIC van de VIRTUELE machine.

  • Secundaire IP-configuraties van een netwerkinterface bieden geen uitgaande communicatie (tenzij er een openbaar IP-adres is gekoppeld) via een load balancer.

Volgende stappen