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.
Uitgaande connectiviteitsmethoden van Azure
De volgende methoden zijn de meest gebruikte methoden van Azure om uitgaande connectiviteit mogelijk te maken:
# | Wijze | 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 | Slechtst |
1. Gebruik het front-end-IP-adres van een load balancer voor uitgaand verkeer via 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 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 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.
Wanneer meerdere front-end-IP's 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.
2. Een NAT-gateway koppelen aan het subnet
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
Verenigingen | Wijze | 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
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 het onveilig is en de IP-adressen onderhevig zijn aan wijzigingen.
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.
Bijvoorbeeld: 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 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 toegepast, worden berekend als: MIN(# van standaard-SNAT-poorten die zijn opgegeven op basis van de poolgrootte * aantal front-end-IP's dat is gekoppeld aan de groep, 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.
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 de gids voor probleemoplossing voor hulp bij het beperken van SNAT-poortuitputting.
Opnieuw gebruiken van poort
Voor TCP-verbindingen gebruikt de load balancer één SNAT-poort voor elk doel-IP en elke poort. Voor verbindingen met hetzelfde doel-IP-adres kan één SNAT-poort opnieuw worden gebruikt zolang de doelpoort verschilt. Hergebruik is niet mogelijk wanneer er al een verbinding met hetzelfde doel-IP en dezelfde poort bestaat.
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.
Afzonderlijke poorten kunnen opnieuw worden gebruikt voor een onbeperkt aantal verbindingen waarvoor hergebruik is toegestaan (wanneer het doel-IP of de doelpoort 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
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 IPv4-configuraties van een netwerkinterface worden niet ondersteund met uitgaande regels. Voor uitgaande connectiviteit in secundaire IPv4-configuraties koppelt u openbare IP-adressen op exemplaarniveau of maakt u in plaats daarvan gebruik van NAT Gateway.
Volgende stappen
- Problemen met uitgaande verbindingen oplossen vanwege SNAT-uitputting
- Controleer de metrische gegevens van SNAT en maak vertrouwd met de juiste manier om ze te filteren, te splitsen en weer te geven.
- Meer informatie over het migreren van uw bestaande uitgaande connectiviteitsmethode naar NAT-gateway