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

Zum Aktivieren der ausgehenden Konnektivität in Azure werden die folgenden Methoden verwendet:

# 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 Verwenden des ausgehenden Standardzugriffs Implizit No Minimum

Abbildung ausgehender Azure-Optionen

1. Verwenden der Front-End-IP-Adressen eines Lastenausgleichsmoduls für ausgehende Verbindungen über Ausgangsregeln

Abbildung eines öffentlichen Lastenausgleichs mit ausgehenden Regeln

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.

Die Ports pro Instanz sollten wie folgt berechnet werden:

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 VMs hinzugefügt werden, als noch SNAT-Ports zur Verfügung stehen, ist es möglich, dass die Skalierung der VMs blockiert wird oder dass die neuen VMs nicht genügend SNAT-Ports erhalten.

Weitere Informationen zu Ausgangsregeln finden Sie unter Ausgangsregeln.

2. Zuordnen eines NAT-Gateways zum Subnetz

Abbildung eines NAT-Gateways und eines öffentlichen Lastenausgleichs

Virtual Network NAT (Network Address Translation, Netzwerkadressenübersetzung) vereinfacht die Einrichtung von ausschließlich ausgehender 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 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.

Weitere Informationen zu Azure Virtual Network NAT finden Sie unter Was ist Azure Virtual Network NAT?

3. Zuweisen einer öffentlichen IP-Adresse für die VM

Abbildung von virtuellen Computern mit öffentlichen IP-Adressen auf Instanzebene

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)

Der Datenverkehr wird von der öffentlichen IP-Adresse des virtuellen Computers (IP-Adresse auf Instanzebene) wieder an den anfordernden Client geleitet.

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.

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

Abbildung des ausgehenden Standardzugriffs

Hinweis

Diese Methode wird für Produktionsworkloads NICHT empfohlen, da sie das Risiko einer Portüberlastung erhöht. Verwenden Sie diese Methode nicht für Produktionsworkloads, um potenzielle Verbindungsfehler zu vermeiden.

Jeder Azure-Ressource, der keine öffentliche IP-Adresse zugeordnet ist, die sich nicht hinter einem Lastenausgleichsmodul mit Ausgangsregeln befindet, die nicht Teil des flexiblen Orchestrierungsmodus für VM-Skalierungsgruppen ist oder deren Subnetz keine NAT-Gatewayressource zugeordnet ist, wird eine minimale Anzahl von Ports für ausgehende Verbindungen zugeordnet. Dieser Zugriff wird als ausgehender Standardzugriff bezeichnet und ist die ungünstigste Methode, um ausgehende Konnektivität für Ihre Anwendungen bereitzustellen.

Einige andere Beispiele für ausgehenden Standardzugriff sind folgende:

  • Verwenden eines Lastenausgleichs der SKU „Basic“.
  • Eine VM in Azure (ohne die oben genannten Zuordnungen). In diesem Fall wird die ausgehende Konnektivität über die IP-Adresse des ausgehenden Standardzugriffs bereitgestellt. Diese IP ist eine dynamische IP, die von Azure zugewiesen wird und die Sie nicht kontrollieren können. Standard-SNAT wird für Produktions-Workloads nicht empfohlen und kann Verbindungsfehler verursachen.
  • Eine VM im Back-End-Pool eines Lastenausgleichsmoduls ohne Ausgangsregeln. Dies führt dazu, dass Sie die Frontend-IP-Adresse eines Load Balancers für ausgehende und eingehende Verbindungen verwenden und anfälliger für Verbindungsfehler bei der SNAT-Portauslastung sind.

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. Während alle öffentlichen IP-Adresse, die als Frontend-IPs hinzugefügt werden, zugewiesen werden können, werden die Frontend-IPs einzeln verbraucht. Wenn beispielsweise zwei Back-End-Instanzen jeweils 64.000 Ports zugewiesen bekommen und Zugriff auf zwei Frontend-IP-Adressen haben, belegen beide Back-End-Instanzen Ports von der ersten Frontend-IP-Adresse, bis alle 64.000 Ports aufgebraucht sind.

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 für Lastenausgleichs- oder NAT-Regeln für eingehenden Datenverkehr im gleichen Block von acht Ports befinden, die von einer anderen Regel verwendet werden, werden keine zusätzlichen Ports benötigt.

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 wie in der nachstehenden Tabelle für die Standard-SNAT-Portzuordnung beschrieben vorab zugeordnet.

Standardport-Zuordnungstabelle

In der folgenden -Tabelle werden die SNAT-Port-Vorabzuordnungen für die Back-End-Poolgrößen angegeben:

Poolgröße (VM-Instanzen) Standard-SNAT-Ports pro IP-Konfiguration
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 derselben IP-Adresse und demselben 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 unterschiedliche Zielports für den Rückgabedatenverkehr (der SNAT-Port, der zum Herstellen der Verbindung verwendet wird) hat der Client keine Möglichkeit, ein Abfrageergebnis von einem anderen zu 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

Neue ausgehende Verbindungen mit einer IP-Zieladresse schlagen fehl, wenn Porterschöpfung auftritt. 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.

Bei TCP-Verbindungen verwendet der Load Balancer einen einzelnen SNAT-Port für jede Ziel-IP und jeden -Port. Diese Mehrfachnutzung ermöglicht mehrere Verbindungen mit derselben IP-Zieladresse und demselben SNAT-Port. Diese Mehrfachnutzung ist eingeschränkt, wenn die Verbindung nicht mit verschiedenen Zielports erfolgt.

Für UDP-Verbindungen verwendet der Load Balancer einen porteingeschränkten Cone NAT-Algorithmus, der einen SNAT-Port pro IP-Zieladresse für den Zielport verwendet.

Ein Port wird für eine unbegrenzte Anzahl von Verbindungen wiederverwendet. Der Port wird nur wiederverwendet, wenn die IP-Zieladresse oder der -port unterschiedlich ist.

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 angegebenen SNAT-Ports überschreiten, können keine neuen ausgehenden Verbindungen hergestellt werden.

  • Fragmentierte Pakete werden gelöscht, es sei denn, der ausgehende Datenverkehr erfolgt über eine öffentliche IP-Adresse auf Instanzebene über die NIC des virtuellen Computers.

  • Sekundäre IP-Konfigurationen einer Netzwerkschnittstelle ermöglichen keine ausgehende Kommunikation über ein Lastenausgleichsmodul (es sei denn, ihr ist eine öffentliche IP-Adresse zugeordnet).

Nächste Schritte