Verwenden von der Quell-Netzwerkadressenübersetzung (SNAT) für ausgehende Verbindungen
Bestimmte Szenarien erfordern, dass virtuelle Computer oder Compute-Instanzen über ausgehende Verbindungen mit dem Internet verfügen. Mithilfe der Front-End-IP-Adressen eines öffentlichen Lastenausgleichs können ausgehende Verbindungen mit dem Internet für Back-End-Instanzen bereitgestellt werden. Bei dieser Konfiguration wird die Quell-Netzwerkadressenübersetzung (Source Network Address Translation, SNAT) verwendet, um die private IP-Adresse der VM in die öffentliche IP-Adresse des Lastenausgleichsmoduls zu übersetzen. Die IP-Adresse des Back-Ends wird von SNAT auf die öffentliche IP-Adresse Ihrer Load Balancer-Instanz abgebildet. SNAT verhindert, dass externe Quellen eine direkte Adresse für die Back-End-Instanzen abrufen können.
Methoden für ausgehende Verbindungen in Azure
Die folgenden Methoden sind die am häufigsten verwendeten Methoden von Azure, um ausgehende Konnektivität zu ermöglichen:
# | Methode | Typ der Portzuordnung | Produktionsqualität? | Rating |
---|---|---|---|---|
1 | Verwenden der Front-End-IP-Adressen eines Lastenausgleichsmoduls für ausgehende Verbindungen über Ausgangsregeln | Statisch, explizit | Ja, aber nicht im großen Stil | OK |
2 | Zuordnen eines NAT-Gateways zum Subnetz | Dynamisch, explizit | Yes | Sehr hoch |
3 | Zuweisen einer öffentlichen IP-Adresse für die VM | Statisch, explizit | Yes | OK |
4 | Standardzugriff in ausgehender Richtung | Implizit | No | Minimum |
1. Verwenden der Front-End-IP-Adressen eines Lastenausgleichsmoduls für ausgehende Verbindungen über Ausgangsregeln
Mithilfe von Ausgangsregeln können Sie die Quell-Netzwerkadressenübersetzung (SNAT) für ein öffentliches Lastenausgleichsmodul der SKU „Standard“ explizit definieren. Mit dieser Konfiguration können Sie die öffentliche(n) IP-Adresse(n) Ihres Lastenausgleichs für ausgehende Verbindungen der Back-End-Instanzen verwenden.
Diese Konfiguration ermöglicht Folgendes:
IP-Maskierung
Vereinfachen ihrer Positivlisten
Verringert die Anzahl öffentlicher IP-Ressourcen für die Bereitstellung.
Mit Ausgangsregeln besitzen Sie vollständige deklarative Kontrolle über ausgehende Internetkonnektivität. Ausgangsregeln ermöglichen Ihnen durch manuelle Portzuordnung das Skalieren und Optimieren dieser Fähigkeit gemäß Ihren speziellen Anforderungen. Durch manuelles Zuordnen des SNAT-Ports basierend auf der Größe des Back-End-Pools und der Anzahl der frontendIPConfigurations kann eine SNAT-Auslastung vermieden werden.
Sie können SNAT-Ports manuell entweder nach „Ports pro Instanz“ oder „maximale Anzahl von Back-End-Instanzen“ zuordnen. Falls im Back-End VMs vorhanden sind, empfiehlt es sich, die Ports nach „Ports pro Instanz“ zuzuweisen, um eine maximale Nutzung der SNAT-Ports zu erreichen.
Berechnen Sie Ports pro Instanz wie folgt:
Anzahl der Frontend-IPs * 64K / Anzahl der Backend-Instanzen
Wenn Sie Virtual Machine Scale Sets im Backend haben, wird empfohlen, die Ports nach der "maximalen Anzahl von Backend-Instanzen" zuzuweisen. Wenn dem Back-End mehr virtuelle Computer hinzugefügt werden als SNAT-Ports zur Verfügung stehen, wird das Aufskalieren von VM-Skalierungsgruppen möglicherweise blockiert, oder die neuen virtuellen Computer erhalten nicht genügend SNAT-Ports.
Wenn mehrere Frontend-IPs mit Ausgangsregeln konfiguriert sind, können ausgehende Verbindungen von jeder der Frontend-IPs stammen, die für die Backend-Instanz konfiguriert sind. Wir empfehlen, keine Abhängigkeiten davon aufzubauen, welche Frontend-IP für Verbindungen ausgewählt wird.
Weitere Informationen zu Ausgangsregeln finden Sie unter Ausgangsregeln.
2. Zuordnen eines NAT-Gateways zum Subnetz
Azure NAT Gateway vereinfacht ausschließlich die ausgehende Internetkonnektivität für virtuelle Netzwerke. Bei der Konfiguration in einem Subnetz werden für die gesamte Konnektivität in ausgehender Richtung die von Ihnen angegebenen statischen öffentlichen IP-Adressen verwendet. Die ausgehende Konnektivität ist möglich, ohne dass ein Lastenausgleich oder öffentliche IP-Adressen direkt virtuellen Computern zugeordnet werden. NAT Gateway ist vollständig verwaltet und äußerst resilient.
Die Verwendung eines NAT-Gateways ist die beste Methode für ausgehende Verbindungen. Ein NAT-Gateway ist hochgradig erweiterbar, zuverlässig und unterliegt nicht dieselben Bedenken hinsichtlich der SNAT-Porterschöpfung.
Das NAT-Gateway besitzt Vorrang vor anderen ausgehenden Konnektivitätsmethoden, einschließlich des Lastenausgleichs, öffentlicher IP-Adressen auf Instanzebene und Azure Firewall.
Weitere Informationen zu Azure NAT Gateway finden Sie unter Was ist Azure NAT Gateway?.
3. Zuweisen einer öffentlichen IP-Adresse für die VM
Associations | Methode | IP-Protokolle |
---|---|---|
Öffentliche IP-Adresse auf der NIC des virtuellen Computers | SNAT (Source Network Address Translation, Übersetzung der Quellnetzwerkadresse) wird nicht verwendet. |
TCP (Transmission Control Protocol) UDP (User Datagram Protocol) ICMP (Internet Control Message Protocol) ESP (Encapsulating Security Payload) |
Datenverkehr wird von der öffentlichen IP-Adresse des virtuellen Computers (IP-Adresse auf Instanzebene) wieder an den anfordernden Client zurückgegeben.
In Azure wird die öffentliche IP-Adresse verwendet, die der IP-Konfiguration der NIC einer Instanz für alle ausgehenden Datenflüsse zugewiesen ist. Für die Instanz sind alle kurzlebigen Ports verfügbar. Es ist unerheblich, ob der virtuelle Computer einen Lastenausgleich aufweist oder nicht. Dieses Szenario hat Vorrang vor den anderen Szenarien, mit Ausnahme von NAT Gateway.
Eine öffentliche IP-Adresse, die einem virtuellen Computer zugewiesen ist, ist eine 1:1-Beziehung (keine 1:n-Beziehung) und wird als zustandslose 1:1-NAT implementiert.
4. Ausgehender Standardzugriff
In Azure wird virtuellen Computern in einem virtuellen Netzwerk ohne explizite ausgehende Konnektivität eine standardmäßige öffentliche IP-Adresse in ausgehender Richtung zugewiesen. Diese IP-Adresse ermöglicht ausgehende Konnektivität zwischen den Ressourcen und dem Internet. Dieser Zugriff wird als Standardzugriff in ausgehender Richtung bezeichnet. Diese Zugriffsmethode wird nicht empfohlen, da sie unsicher ist und sich die IP-Adressen ändern können.
Wichtig
Am 30. September 2025 wird standardmäßiger ausgehender Zugriff für neue Bereitstellungen eingestellt. Weitere Informationen finden Sie in der offiziellen Ankündigung. Es wird empfohlen, eine der explict-Formen der Konnektivität zu verwenden, wie in den oben aufgeführten Optionen 1-3 dargestellt.
Was sind SNAT-Ports?
Ports werden verwendet, um eindeutige Bezeichner zu generieren, mit denen unterschiedliche Datenflüsse verwaltet werden. Das Internet verwendet ein 5-Tupel, um diesen Unterschied zu gewährleisten.
Wenn ein Port für eingehende Verbindungen verwendet wird, verfügt er über einen Listener für eingehende Verbindungsanforderungen an diesem Port. Dieser Port kann nicht für ausgehende Verbindungen verwendet werden. Um eine ausgehende Verbindung herzustellen, wird ein kurzlebiger Port verwendet, um dem Ziel einen Port bereitzustellen, über den ein eindeutiger Datenverkehrsfluss kommuniziert und verwaltet werden kann. Wenn diese kurzlebigen Ports für SNAT verwendet werden, bezeichnet man sie als SNAT-Ports.
Per Definition umfasst jede IP-Adresse 65.535 Ports. Jeder Port kann entweder für eingehende oder ausgehende Verbindungen für TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) verwendet werden. Wenn einem Lastenausgleich eine öffentliche IP-Adresse als Front-End-IP-Adresse hinzugefügt wird, sind 64.000 Ports für SNAT berechtigt.
Jeder Port, der in einer Lastenausgleichs- oder NAT-Regel für eingehenden Datenverkehr verwendet wird, verwendet einen Bereich von acht Ports der 64.000 verfügbaren SNAT-Ports. Diese Verwendung reduziert die Anzahl der für SNAT verfügbaren Ports, wenn dieselbe Front-End-IP für ausgehende Konnektivität genutzt wird. Wenn sich Ports, die im Rahmen des Lastenausgleichs oder im Rahmen von NAT-Regeln für eingehenden Datenverkehr genutzt werden, im gleichen Block von acht Ports befinden, die von einer anderen Regel genutzt werden, sind für die Regeln keine zusätzlichen Ports erforderlich.
Hinweis
Wenn Sie eine Verbindung mit unterstützten Azure PaaS-Diensten wie Azure Storage, Azure SQL oder Azure Cosmos DB herstellen müssen, können Sie Azure Private Link verwenden, um SNAT vollständig zu vermeiden. Azure Private Link sendet Datenverkehr von Ihrem virtuellen Netzwerk an Azure-Dienste über das Azure-Backbone-Netzwerk, anstatt das Internet zu nutzen.
Private Link ist die empfohlene Option für Dienstendpunkte für den privaten Zugriff auf in Azure gehostete Dienste. Weitere Informationen zum Unterschied zwischen Private Link und Dienstendpunkten finden Sie unter Vergleichen privater Endpunkte und Dienstendpunkte.
Wie funktioniert Standard-SNAT?
Wenn eine VM einen ausgehenden Datenfluss erstellt, übersetzt Azure die Quell-IP-Adresse in eine kurzlebige IP-Adresse. Diese Übersetzung erfolgt über SNAT.
Wird SNAT ohne Ausgangsregeln über einen öffentlichen Lastenausgleich verwendet, werden SNAT-Ports vorab zugeordnet, wie in der folgenden Zuordnungstabelle für SNAT-Standardports beschrieben:
Standardport-Zuordnungstabelle
Wenn Lastenausgleichsregeln ausgewählt sind, um die Standardportzuordnung zu verwenden, oder Ausgangsregeln mit „Standardanzahl ausgehender Ports verwenden“ konfiguriert sind, werden SNAT-Ports standardmäßig basierend auf der Größe des Back-End-Pools zugeordnet. Back-Ends erhalten pro Front-End-IP die Anzahl der von der Tabelle definierten Ports bis zu maximal 1024 Ports.
Beispiel: Bei 100 VMs in einem Back-End-Pool und nur einer Front-End-IP-Adresse erhält jede VM 512 Ports. Wenn eine zweite Front-End-IP-Adresse hinzugefügt wird, erhält jede VM zusätzliche 512 Ports. Das bedeutet, dass jeder VM insgesamt 1024 Ports zugeordnet sind. Deshalb erhöht das Hinzufügen einer dritten Front-End-IP die Anzahl der zugeordneten SNAT-Ports NICHT über 1024 Ports hinaus.
Als Faustregel kann die Anzahl der SNAT-Ports, die bei Nutzung der Standardportzuordnung bereitgestellt werden, wie folgt berechnet werden: MIN(Anzahl der standardmäßig bereitgestellten SNAT-Ports basierend auf der Poolgröße * Anzahl der mit dem Pool verbundenen Front-End-IPs, 1024)
Die folgende Tabelle zeigt die Vorzuordnungen der SNAT-Ports für eine einzelne Front-End-IP-Adresse, abhängig von der Größe des Back-End-Pools:
Poolgröße (VM-Instanzen) | Standard-SNAT-Ports |
---|---|
1-50 | 1\.024 |
51-100 | 512 |
101-200 | 256 |
201-400 | 128 |
401-800 | 64 |
801-1.000 | 32 |
Portauslastung
Für jede Verbindung mit der gleichen IP-Adresse und dem gleichen Zielport wird ein SNAT-Port verwendet. Diese Verbindung verwaltet einen eindeutigen Datenverkehrsfluss von der Back-End-Instanz oder dem Client zu einem Server. Durch diesen Prozess erhält der Server einen eindeutigen Port, an den Datenverkehr adressiert werden soll. Ohne diesen Prozess weiß der Clientcomputer nicht, zu welchem Datenfluss ein Paket gehört.
Stellen Sie sich vor, dass mehrere Browser https://www.microsoft.com verwenden:
IP-Zieladresse = 23.53.254.142
Zielport = 443
Protokoll = TCP
Ohne SNAT-Ports für den Antwortdatenverkehr kann der Client die einzelnen Antwortergebnisse nicht voneinander trennen.
Für ausgehende Verbindungen kann ein Burst auftreten. Einer Back-End-Instanz können nicht genügend Ports zugeordnet werden. Verwenden Sie die Funktionalität der Wiederverwendung von Verbindungen innerhalb Ihrer Anwendung. Ohne Wiederverwendung von Verbindungen erhöht sich das Risiko der Erschöpfung von SNAT Ports.
Weitere Informationen zum Verbindungspooling mit Azure App Service finden Sie unter Fehlerbehebung für intermittierende ausgehende Verbindungsfehler in Azure App Service
Im Falle einer Portauslastung können keine neuen ausgehenden Verbindungen mit einer Ziel-IP-Adresse hergestellt werden. Verbindungen werden erfolgreich hergestellt, wenn ein Port verfügbar wird. Diese Erschöpfung tritt auf, wenn die 64.000 Ports von einer IP-Adresse dünn über viele Back-End-Instanzen verteilt sind. Anleitungen zur Entschärfung von SNAT-Porterschöpfung finden Sie im Leitfaden zur Problembehandlung.
Wiederverwendung von Ports
Bei TCP-Verbindungen verwendet der Lastenausgleich einen einzelnen SNAT-Port für jede Ziel-IP-Adresse und jeden Port. Für Verbindungen zum gleichen Ziel-IP kann ein einzelner SNAT-Port wiederverwendet werden, solange der Zielport unterschiedlich ist. Eine Wiederverwendung ist nicht möglich, wenn bereits eine Verbindung zu derselben Ziel-IP und demselben Zielport besteht.
Für UDP-Verbindungen verwendet der Load Balancer einen porteingeschränkten Cone NAT-Algorithmus, der unabhängig vom Zielport einen SNAT-Port pro Ziel-IP verwendet.
Einzelne Ports können für eine unbegrenzte Anzahl von Verbindungen wiederverwendet werden, sofern die Wiederverwendung zulässig ist (wenn die Ziel-IP oder der Ziel-Port unterschiedlich ist).
Im Beispiel in der folgenden Tabelle stellt eine Backend-Instanz mit der privaten IP-Adresse 10.0.0.1 TCP-Verbindungen zu den Ziel-IP-Adressen 23.53.254.142 und 26.108.254.155 her, während der Lastverteiler mit der Frontend-IP-Adresse 192.0.2.0 konfiguriert ist. Da die Ziel-IPs unterschiedlich sind, kann derselbe SNAT-Port für mehrere Verbindungen wiederverwendet werden.
Flow | Quelltupel | Quelltupel nach SNAT | Zieltupel |
---|---|---|---|
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 |
Einschränkungen
Wenn sich eine Verbindung im Leerlauf befindet und keine neuen Pakete gesendet werden, werden die Ports nach 4 bis 120 Minuten freigegeben.
Dieser Schwellenwert kann über Ausgangsregeln konfiguriert werden.
Jede IP-Adresse stellt 64.000 Ports bereit, die für SNAT verwendet werden können.
Jeder Port kann sowohl für TCP- als auch für UDP-Verbindungen mit einer IP-Zieladresse verwendet werden.
Ein UDP-SNAT-Port ist unabhängig davon erforderlich, ob der Zielport eindeutig ist. Für jede UDP-Verbindung mit einer IP-Zieladresse wird ein UDP-SNAT-Port verwendet.
Ein TCP-SNAT-Port kann für mehrere Verbindungen mit derselben IP-Zieladresse verwendet werden, vorausgesetzt, die Zielports unterscheiden sich.
SNAT-Erschöpfung tritt auf, wenn einer Back-End-Instanz die angegebenen SNAT-Ports ausgehen. Ein Load Balancer kann weiterhin nicht verwendete SNAT-Ports aufweisen. Wenn die von einer Back-End-Instanz verwendeten SNAT-Ports die Anzahl verfügbarer SNAT-Ports übersteigen, kann sie keine neuen ausgehenden Verbindungen herstellen.
Fragmentierte Pakete werden gelöscht, es sei denn, für den ausgehenden Datenverkehr wird eine öffentliche IP-Adresse auf Instanzebene der NIC des virtuellen Computers verwendet.
Sekundäre IPv4-Konfigurationen einer Netzwerkschnittstelle werden bei Ausgangsregeln nicht unterstützt. Für die ausgehende Konnektivität bei sekundären IPv4-Konfigurationen fügen Sie öffentliche IP-Adressen auf Instanzebene hinzu oder nutzen Sie stattdessen das NAT Gateway.
Nächste Schritte
- Problembehandlung von Fehlern bei ausgehenden Verbindungen aufgrund von SNAT-Erschöpfung
- Überprüfen Sie die SNAT-Metriken, und machen Sie sich mit den richtigen Verfahren zum Filtern, Aufteilen und Anzeigen dieser Metriken vertraut.
- Erfahren Sie, wie Sie Ihre vorhandene Methode für ausgehende Konnektivität zu NAT Gateway migrieren.