Gebruik Source Network Address Translation (SNAT) 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.

Kies een uitgaande connectiviteitsmethode

Kies een expliciete uitgaande connectiviteitsmethode voordat je een workload uitrolt:

  • Gebruik Azure NAT Gateway voor schaalbare, uitsluitend uitgaande connectiviteit vanaf een subnet.
  • Gebruik een instantie-niveau publiek IP wanneer een virtuele machine een eigen publiek adres nodig heeft.
  • Gebruik uitgaande regels wanneer backend-instanties een load balancer frontend-IP gebruiken voor uitgaande connectiviteit.
  • Vermijd standaard uitgaande toegang voor productieworkloads. Nieuwe virtuele netwerken gebruiken standaard privé-subnetten.

Uitgaande connectiviteitsmethoden van Azure

De volgende methoden zijn Azure meestgebruikte methoden voor het inschakelen van uitgaande connectiviteit, vermeld in volgorde van prioriteit wanneer meerdere methoden worden gebruikt:

# Wijze Type van poorttoewijzing Op productiewaardig niveau? Beoordeling
1 Azure NAT Gateway aan het subnet koppelen Dynamisch, expliciet Ja Beste
2 Een openbaar IP-adres toewijzen aan de virtuele machine Statisch, expliciet Ja OK
3 Gebruik de front-end IP-adressen van een load balancer voor uitgaand verkeer met behulp van uitgaande regels. Statisch, expliciet Ja, maar niet op schaal OK
4 De front-end-IP-adressen van een load balancer gebruiken voor uitgaand verkeer zonder uitgaande regels Statisch, impliciet Nee Slechtst
5 Standaard uitgaande toegang Impliciet Nee Slechtst

Diagram van Azure uitgaande opties.

1. Koppel Azure NAT Gateway aan het subnet

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

Azure NAT Gateway vereenvoudigt uitgaande internetconnectiviteit voor virtuele netwerken. Wanneer je het op een subnet configureert, gebruikt alle uitgaande connectiviteit je opgegeven statische publieke IP-adressen. Je kunt uitgaande connectiviteit hebben zonder load balancer of publieke IP-adressen die direct aan virtuele machines zijn gekoppeld. NAT Gateway is volledig beheerd en zeer tolerant.

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

NAT Gateway heeft voorrang op andere methoden voor uitgaande connectiviteit, waaronder een load balancer, openbare IP-adressen op instantieniveau en Azure Firewall.

Zie Wat is Azure NAT Gateway voor meer informatie over Azure NAT Gateway. Zie SNAT met NAT Gateway voor meer informatie over de werking van SNAT met NAT Gateway.

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

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

Verenigingen Wijze IP-protocollen
Openbaar IP-adres op de NIC van de VIRTUELE machine SNAT (Source Network Address Translation)
wordt niet gebruikt.
TCP (Transmissiecontroleprotocol)
UDP (Gebruikersdatagramprotocol)
ICMP (Internetbesturingsberichtprotocol)
ESP (Insluitende beveiligingslading)

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. De instantie 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.

3. Gebruik het front-end-IP-adres(en) van een load balancer voor uitgaand verkeer via uitgaande regels

Schema van een publieke load balancer met uitgaande regels.

Met uitgaande regels kunt u SNAT (bronnetwerkadresomzetting) expliciet definiëren voor een standaard 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 regels voor uitgaand verkeer hebt u volledige declaratieve controle over uitgaande internetverbindingen. Met uitgaande regels kunt u deze functionaliteit via handmatige poorttoewijzing schalen en afstemmen op uw specifieke behoeften. 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 instantie' 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 instantie' om maximaal SNAT-poortgebruik te krijgen.

Bereken poorten per exemplaar als volgt:

Aantal frontend-IP's * 64.000 / aantal backend-instanties

Als u Virtual Machine Scale Sets in de backend hebt, is het raadzaam om poorten toe te wijzen op basis van het "maximum aantal backend-exemplaren". Als er meer VM's aan de back-end worden toegevoegd dan de resterende SNAT-poorten zijn toegestaan, kan het uitschalen van Virtual Machine Scale Sets worden geblokkeerd of ontvangen de nieuwe VM's onvoldoende SNAT-poorten.

Notitie

Wanneer meerdere front-end-IP-adressen zijn geconfigureerd met behulp van uitgaande regels, kunnen uitgaande verbindingen afkomstig zijn van een van de front-end-IP's die zijn geconfigureerd voor het back-endexemplaren. Het wordt afgeraden om afhankelijkheden te bouwen waarop front-end-IP kan worden geselecteerd voor verbindingen.

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

4. Gebruik de front-end-IP-adressen van een load balancer voor uitgaand verkeer zonder uitgaande regels

Deze optie is vergelijkbaar met de vorige, behalve wanneer er geen uitgaande regels worden gemaakt. In dit geval worden de frontends van de load balancer nog steeds voor uitgaand verkeer gebruikt, maar dit gebeurt impliciet zonder regels die aangeven welke frontend zal worden gebruikt. Als u geen uitgaande regels gebruikt, vermindert u ook de schaalbaarheid van uitgaand verkeer, omdat impliciete uitgaande connectiviteit een vast aantal SNAT-poorten per front-end-IP-adres heeft, wat kan leiden tot poortuitputting in scenario's met veel verkeer.

5. 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, toegewezen aan een standaard openbaar IP-adres voor uitgaand verkeer. 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 het onveilig is en de IP-adressen onderhevig zijn aan wijzigingen.

Belangrijk

Op 31 maart 2026 maken nieuwe virtuele netwerken standaard gebruik van privésubnetten. Zie de officiële aankondiging voor meer informatie. Gebruik een van de expliciete vormen van connectiviteit, zoals wordt weergegeven in opties 1-3 hierboven.

Azure Load Balancer SNAT-poorten

Poorten genereren unieke id's die afzonderlijke stromen onderhouden. Het internet maakt gebruik van een vijftal om dit onderscheid te maken.

Als u een poort gebruikt voor binnenkomende verbindingen, heeft deze een listener voor binnenkomende verbindingsaanvragen op die poort. Deze poort kan niet worden gebruikt voor uitgaande verbindingen. Als u een uitgaande verbinding tot stand wilt brengen, gebruikt u een tijdelijke poort om de bestemming te voorzien van een poort waarop u een afzonderlijke verkeersstroom kunt communiceren 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 u een openbaar IP-adres als front-end-IP toevoegt 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, gebruikt u Azure Private Link om volledig SNAT te voorkomen. Azure Private Link verzendt verkeer van uw virtuele netwerk naar Azure services via het Azure backbone-netwerk in plaats van via internet.

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

Standaard SNAT-gedrag van Azure Load Balancer

Wanneer een virtuele machine een uitgaande verkeerstroom maakt, vertaalt Azure het bron-IP-adres naar een kortstondig IP-adres. Azure deze vertaling via SNAT uitvoert.

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

Standaardtabel voor poorttoewijzing

Wanneer u standaardpoorttoewijzing inschakelt, wijst het systeem SNAT-poorten toe op basis van de grootte van de back-endpool. Elke back-end ontvangt het aantal poorten dat is gedefinieerd door de tabel, per front-end-IP, tot maximaal 1024 poorten. Gebruik geen standaardpoorttoewijzing voor productieworkloads, omdat er een minimaal aantal poorten aan elk back-endexemplaren worden toegewezen en het risico op SNAT-poortuitputting toeneemt. Overweeg in plaats daarvan Azure NAT Gateway te gebruiken of handmatig poorten toe te wijzen voor de uitgaande regels van je load balancer.

U kunt de standaardpoorttoewijzing op verschillende manieren inschakelen:

  • Configureer een taakverdelingsregel met disableOutboundSnat ingesteld opfalse, of selecteer de standaardoptie voor poorttoewijzing op een load balancer-regel in de Azure-portal.
  • Configureer een uitgaande regel, maar stel de allocatedOutboundPorts eigenschap 0in op of selecteer Standaardpoorttoewijzing inschakelen in de Azure-portal.

Met bijvoorbeeld 100 VM's in een back-endpool en slechts één front-end-IP ontvangt elke VM 512 poorten. Als u een tweede front-end-IP toevoegt, ontvangt elke VIRTUELE machine extra 512 poorten. Deze toewijzing 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 kunt u het aantal SNAT-poorten berekenen dat wordt opgegeven wanneer de standaardpoorttoewijzing wordt toegepast als: MIN(# of default SNAT ports provided based on pool size * number of frontend IPs associated with the 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-instanties) 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 je voor dat er meerdere browsers ernaartoe https://www.microsoft.com gaan, wat betekent:

  • Bestemming 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. Aan een back-endinstantie kunnen 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 groepsgewijze verbindingen met Azure App Service.

Nieuwe uitgaande verbindingen met een doel-IP mislukken wanneer poortuitputting plaatsvindt. Verbindingen slagen wanneer er een poort beschikbaar komt. Deze uitputting treedt op wanneer de 64.000 poorten van een IP-adres dun zijn verdeeld over veel back-endinstanties. Zie Ondersteuning en probleemoplossing voor Azure Load Balancer voor hulp bij het beperken van SNAT-poortuitputting.

Opnieuw gebruiken van poort

Voor TCP vereist elke actieve verbinding een aparte vertaalde broncombinatie voor een specifieke bestemmingscombinatie, een combinatie van het bestemmings-IP-adres en de bestemmingspoort. Je kunt een SNAT-poort hergebruiken voor een verbinding met een ander bestemmings-IP-adres of een andere bestemmingspoort. Je kunt het niet hergebruiken voor een andere actieve verbinding van dezelfde backend-instantie naar hetzelfde bestemmings-IP-adres en bestemmingspoort.

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.

U kunt afzonderlijke poorten opnieuw gebruiken voor een onbeperkt aantal verbindingen waarbij hergebruik is toegestaan (wanneer het doel-IP of de poort verschilt).

In het voorbeeld in de volgende tabel maakt een back-endinstantie met privé-IP 10.0.0.1 TCP-verbindingen met doel-IP-adressen 23.53.254.142 en 26.108.254.155, terwijl de load balancer is geconfigureerd met front-end-IP-adres 192.0.2.0. Omdat de doel-IP's verschillen, kan dezelfde SNAT-poort opnieuw worden gebruikt voor meerdere verbindingen.

Stroom Bron-tuple Bron-tuple na SNAT Doel-tuple
1 10.0.0.1:80 192.0.2.0:1 23.53.254.142:80
2 10.0.0.1:80 192.0.2.0:1 26.108.254.155:80

Beperkingen

De volgende beperkingen gelden voor Azure Load Balancer SNAT. Individuele beperkingen identificeren wanneer ze alleen gelden voor TCP, UDP, uitgaande regels of instantie-niveau publieke IP-configuraties.

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

  • U kunt deze drempelwaarde configureren via uitgaande regels.

  • Elk IP-adres bevat 64.000 poorten die u voor SNAT kunt gebruiken.

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

  • U hebt 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, zolang de doelpoorten verschillen.

  • SNAT-uitputting treedt op wanneer een back-endexemplaar geen toegewezen SNAT-poorten meer beschikbaar heeft. Een load balancer kan nog steeds ongebruikte SNAT-poorten hebben. Als de gebruikte SNAT-poorten van een back-endinstantie de opgegeven SNAT-poorten overschrijden, kunnen er geen nieuwe uitgaande verbindingen worden tot stand gebracht.

  • Het systeem verwerpt gefragmenteerde pakketten, tenzij het uitgaande verkeer via een openbaar IP-adres op instantieniveau op de NIC van de VM verloopt.

  • Uitgaande regels bieden geen ondersteuning voor secundaire IPv4-configuraties van een netwerkinterface. Voor uitgaande connectiviteit op secundaire IPv4-configuraties, koppel je instantieniveau publieke IP-adressen of gebruik je in plaats daarvan Azure NAT Gateway.

Volgende stappen