Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT) mit Azure NAT-Gateway
Die Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT) ermöglicht den Datenverkehr aus einem privaten virtuellen Netzwerk, um eine Verbindung mit dem Internet herzustellen und gleichzeitig vollständig privat zu bleiben. SNAT schreibt die Quell-IP und den Port des ursprünglichen Pakets in eine öffentliche IP- und Portkombination um. Ports werden als eindeutige Bezeichner verwendet, um unterschiedliche Verbindungen voneinander zu unterscheiden. Das Internet verwendet einen Fünf-Tupel-Hash (Protokoll, Quell-IP/Port, Ziel-IP/Port), um diese Unterscheidung zu ermöglichen.
SNAT ermöglicht es auch, dass mehrere private Instanzen innerhalb eines virtuellen Netzwerks dieselbe öffentliche IP-Adresse oder einen Satz von IP-Adressen (Präfix) verwenden, um sich mit dem Internet zu verbinden.
Das NAT-Gateway ermöglicht eine n:1-SNAT-Funktion. Viele private Instanzen in einem Subnetz können SNAT an eine öffentliche IP-Adresse senden, die an das NAT-Gateway angefügt ist, um eine Verbindung mit dem Internet herzustellen. Wenn NAT-Gateway mehrere Verbindungen mit demselben Zielendpunkt herstellen, verwendet jede neue Verbindung einen anderen SNAT-Port, sodass Verbindungen voneinander unterschieden werden können.
Eine Überlastung der SNAT-Ports tritt auf, wenn einem Quellendpunkt die verfügbaren SNAT-Ports ausgehen, um zwischen neuen Verbindungen zu unterscheiden. Wenn die SNAT-Portausschöpfung auftritt, schlagen Verbindungen fehl.
Skalieren von SNAT für NAT-Gateway
Die Skalierung des NAT-Gateways ist hauptsächlich eine Funktion, bei der es um die Verwaltung des freigegebenen verfügbaren SNAT-Portbestands geht.
Das SNAT-Port-Inventar wird von den öffentlichen IP-Adressen, den öffentlichen IP-Präfixen oder beidem bereitgestellt, die mit dem NAT-Gateway verbunden sind. Das SNAT-Portinventar wird allen Instanzen innerhalb eines an das NAT-Gateway angeschlossenen Subnetzes bei Bedarf zur Verfügung gestellt. Da die Arbeitsauslastung der privaten Instanzen eines Subnetzs skaliert wird, weist das NAT-Gateway SNAT-Ports nach Bedarf zu.
Wenn mehrere Subnetze innerhalb eines virtuellen Netzwerks an dieselbe NAT-Gatewayressource angefügt sind, wird das von NAT Gateway bereitgestellte SNAT-Portinventar von allen Subnetzen gemeinsam genutzt.
Eine einzelne NAT Gateway-Instanz kann auf bis zu 16 IP-Adressen hochskaliert werden. Jede öffentliche IP-Adresse des NAT-Gateways bietet 64.512 SNAT-Ports für das Herstellen ausgehender Verbindungen. Das NAT-Gateway kann bis auf über 1 Million SNAT-Ports skaliert werden. Bei TCP und UDP handelt es sich um separate SNAT-Portbestände, und sie hängen nicht mit NAT Gateway zusammen.
Das NAT-Gateway weist SNAT-Ports dynamisch zu.
Das NAT-Gateway weist SNAT-Ports dynamisch ressourcenübergreifend in einem Subnetz zu, z. B. VMs. Alle verfügbaren SNAT-Ports werden bei Bedarf von jeder virtuellen Maschine in den mit NAT-Gateway konfigurierten Subnetzen verwendet.
Abbildung: SNAT-Portzuordnung
Für andere SNAT-Methoden ist eine vorherige Zuweisung von SNAT-Ports für jede virtuelle Maschine erforderlich. Diese Vorabzuweisung von SNAT-Ports kann dazu führen, dass die SNAT-Ports auf einigen virtuellen Maschinen erschöpft sind, während auf anderen noch SNAT-Ports für ausgehende Verbindungen verfügbar sind.
Mit dem NAT-Gateway ist die Vorabzuweisung von SNAT-Ports nicht erforderlich. Das bedeutet, dass SNAT-Ports nicht von virtuellen Maschinen ungenutzt bleiben, die sie nicht aktiv benötigen.
Nachdem ein SNAT-Port freigegeben wurde, ist er für die Verwendung durch jeden virtuellen Computer innerhalb von Subnetzen verfügbar, die mit NAT-Gateway konfiguriert sind. Bei der bedarfsgesteuerten Zuteilung können SNAT-Ports von dynamischen und divergenten Workloads in Subnetzen je nach Bedarf genutzt werden. Solange SNAT-Ports verfügbar sind, sind SNAT-Flüsse erfolgreich.
Abbildung: SNAT-Portauslastung
Auswahl und Wiederverwendung von NAT-Gateway-SNAT-Ports
Das NAT-Gateway wählt einen SNAT-Port nach dem Zufallsprinzip aus dem verfügbaren Bestand an Ports aus, um neue ausgehende Verbindungen herzustellen. Wenn das NAT-Gateway keine verfügbaren SNAT-Ports findet, verwendet es einen SNAT-Port erneut. Ein und derselbe SNAT-Port kann für die gleichzeitige Verbindung zu mehreren verschiedenen Zielen verwendet werden.
Ein SNAT-Port kann wiederverwendet werden, um eine Verbindung mit demselben Zielendpunkt herzustellen. Bevor der Port wiederverwendet wird, platziert NAT-Gateway einen SNAT-Port-Wiederverwendungszeitgeber für die Abkühlung am Port, nachdem die Verbindung geschlossen wurde.
Der SNAT-Portwiederverwendungstimer verhindert, dass Ports zu schnell ausgewählt werden, um eine Verbindung mit demselben Ziel herzustellen. Dieser Vorgang ist hilfreich, wenn Zielendpunkte Firewalls oder andere Dienste konfiguriert haben, die einen coolen Timer auf Quellports platzieren. Die SNAT-Portwiederverwendungstimer variieren je nach Dem Schließen eines Verbindungsflusses. Weitere Informationen finden Sie unter Timer für die Wiederverwendung von Ports.
Abbildung: SNAT-Portwiederverwendung
Beispiel für SNAT-Flows für das NAT-Gateway
Viele zu einem SNAT mit NAT-Gateway
NAT-Gateway bietet eine Many-to-One-Konfiguration, bei der mehrere private Instanzen innerhalb eines über ein NAT-Gateway konfigurierten Subnetzes dieselbe öffentliche IP-Adresse für ausgehende Verbindungen verwenden können.
In der folgenden Tabelle stellen zwei verschiedene VMs (10.0.0.1 und 10.2.0.1) Verbindungen mit der https://microsoft.com-Ziel-IP-Adresse 23.53.254.142 her. Wenn das NAT-Gateway mit der öffentlichen IP-Adresse 65.52.1.1 konfiguriert ist, werden die Quell-IP-Adressen der einzelnen VMs in die öffentliche IP-Adresse des NAT-Gateways und einen SNAT-Port übersetzt:
Flow | Quelltupel | Quelltupel nach SNAT | Zieltupel |
---|---|---|---|
1 | 10.0.0.1:4283 | 65.52.1.1:1234 | 23.53.254.142:80 |
2 | 10.0.0.1:4284 | 65.52.1.1:1235 | 23.53.254.142:80 |
3 | 10.2.0.1:5768 | 65.52.1.1:1236 | 23.53.254.142:80 |
IP-Maskierung oder Portmaskierung bedeutet das Ersetzen der privaten IP-Adresse und des Ports durch die öffentliche IP-Adresse und den öffentlichen Port, bevor eine Verbindung mit dem Internet hergestellt wird. Mehrere private Ressourcen können hinter derselben öffentlichen IP-Adresse des NAT-Gateways maskiert werden.
NAT-Gateway verwendet einen SNAT-Port, um eine Verbindung mit einem neuen Ziel herzustellen.
Wie bereits erwähnt, kann das NAT-Gateway denselben SNAT-Port wiederverwenden, um gleichzeitig eine Verbindung mit einem neuen Zielendpunkt herzustellen. In der folgenden Tabelle übersetzt NAT-Gateway Den Fluss 4 in einen SNAT-Port, der bereits für andere Ziele verwendet wird (siehe Fluss 1 aus der vorherigen Tabelle).
Flow | Quelltupel | Quelltupel nach SNAT | Zieltupel |
---|---|---|---|
4 | 10.0.0.1:4285 | 65.52.1.1:1234 | 26.108.254.155:80 |
Abkühlen des SNAT-Ports des NAT-Gateways für die Wiederverwendung am selben Ziel
In einem Szenario, in dem NAT-Gateway einen SNAT-Port wiederverwendet, um neue Verbindungen mit demselben Zielendpunkt herzustellen, wird der SNAT-Port zunächst in einer SNAT-Portwiederverwendungsphase zur Abkühlung platziert. Der SNAT-Portwiederverwendungszeitraum trägt dazu bei, dass SNAT-Ports nicht zu schnell wiederverwendet werden, wenn eine Verbindung mit demselben Ziel hergestellt wird. Diese SNAT-Portwiederverwendung für die Abkühlung auf DEM NAT-Gateway ist in Szenarien nützlich, in denen der Zielendpunkt über eine Firewall mit einem eigenen Quellporttimer verfügt, um sich abzukühlen.
Um zu veranschaulichen, dass dieser SNAT-Port das Cool Down-Verhalten wiederverwendet, werfen wir einen genaueren Blick auf Flow 4 aus der vorherigen Tabelle. Flow 4 war eine Verbindung mit einem Zielendpunkt hergestellt, der von einer Firewall mit einem 20-Sekunden-Quellport mit einem coolen Down-Timer versehen wurde.
Flow | Quelltupel | Quelltupel nach SNAT | Zieltupel | Pakettypverbindung wird geschlossen mit | Zielfirewall-Timer zum Abkühlen für den Quellport |
---|---|---|---|---|---|
4 | 10.0.0.1:4285 | 65.52.1.1:1234 | 26.108.254.155:80 | TCP FIN (TCP-Beendigung) | 20 Sekunden |
Verbindungsfluss 4 wird mit einem TCP FIN-Paket geschlossen. Da die Verbindung mit einem TCP FIN-Paket geschlossen wird, platziert NAT-Gateway SNAT-Port 1234 für 65 Sekunden abkühlen, bevor sie wiederverwendet werden kann. Da der Port 1234 länger abkühlt als der Firewallquellport die Zeitdauer von 20 Sekunden abkühlt, wird der Verbindungsfluss 5 ohne Problem mit der wiederverwendenden SNAT-Port 1234 fortgesetzt.
Flow | Quelltupel | Quelltupel nach SNAT | Zieltupel |
---|---|---|---|
5 | 10.2.0.1:5769 | 65.52.1.1:1234 | 26.108.254.155:80 |
Denken Sie daran, dass das NAT-Gateway SNAT-Ports unter verschiedenen SNAT-Ports wiederverwenden, je nachdem, wie die vorherige Verbindung geschlossen wurde. Weitere Informationen zur Wiederverwendung von Zeitgebern für den SNAT-Port finden Sie unter PortWiederverwendungszeitgeber.
Die Umsetzung der Zuweisung von Quellports im obigen Beispiel ist nicht verbindlich. Die vorstehenden Abbildungen sind nur Abbildungen der grundlegenden Konzepte.