Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Source Network Address Translation (SNAT)

Übersicht

Source Network Address Translation (source-nat oder SNAT) ermöglicht es, dass Datenverkehr von einem privaten Netzwerk ins Internet geleitet wird. Virtuelle Maschinen, die in einem privaten Netzwerk gestartet werden, können über ein Gateway, das SNAT ausführen kann, auf das Internet zugreifen. Das Gateway verfügt über einen Arm im öffentlichen Netzwerk und ersetzt als Teil von SNAT die Quell-IP des ursprünglichen Pakets durch seine eigene IP-Adresse auf der öffentlichen Seite. Im Rahmen von SNAT wird auch der Quellport aktualisiert, sodass mehrere VMs das öffentliche Netzwerk über eine einzige öffentliche Gateway-IP erreichen können.

Das folgende Diagramm zeigt ein virtuelles Netzwerk mit dem privaten Subnetz 10.1.1.0/24. Die Standardroute für das virtuelle Netzwerk verweist auf das SNAT-Gateway. Das Gateway ersetzt die Quell-IP von 10.1.1.0/24 und verwendet seine öffentliche Adresse 172.21.1.1 für ausgehende Pakete. Um eindeutige NAT-Sitzungen beizubehalten, muss auch der Quellport des Datenverkehrs ersetzt werden.

Abbildung 1: Virtuelles Netzwerk mit einem privaten Subnetz Virtual Network With a Private Subnet

Neutronen-APIs für Router

OpenStack unterstützt die Implementierung von SNAT-Gateways über seine Neutron-APIs für Router. Das SNAT-Flag kann auf dem externen Gateway des Routers aktiviert oder deaktiviert werden. Der Standardwert ist True (aktiviert).

Das OpenContrail-Plugin unterstützt die Neutron-APIs für Router und erstellt die relevanten Service-Template- und Service-Instanz-Objekte im API-Server. Der Service Scheduler in OpenContrail instanziiert das Gateway auf einem zufällig ausgewählten virtuellen Router. OpenContrail verwendet einen Netzwerk-Namensraum, um diese Funktion zu unterstützen.

Beispielkonfiguration: SNAT für Contrail

Die SNAT-Funktion wird auf OpenContrail durch Neutron-API-Aufrufe aktiviert.

Im folgenden Konfigurationsbeispiel wird veranschaulicht, wie ein Testnetzwerk und ein öffentliches Netzwerk erstellt werden, sodass das Testnetzwerk über das SNAT-Gateway in den öffentlichen Bereich gelangen kann.

  1. Erstellen Sie das öffentliche Netzwerk, und legen Sie das externe Router-Flag fest.

    neutron net-create public

    neutron subnet-create public 172.21.1.0/24

    neutron net-update public -- --router:external=True

  2. Erstellen Sie das Testnetzwerk.

    neutron net-create test

    neutron subnet-create --name test-subnet test 10.1.1.0/24

  3. Erstellen Sie den Router mit einer zu testenden Schnittstelle.

    neutron router-create r1

    neutron router-interface-add r1 test-subnet

  4. Legen Sie das externe Gateway für den Router fest.

    neutron router-gateway-set r1 public

Netzwerk-Namespace

Das Setzen des externen Gateways ist der Auslöser für OpenContrail, den Linux-Netzwerknamensraum für SNAT einzurichten.

Der Netzwerknamensraum kann durch Ausführen des folgenden Neutron-Befehls gelöscht werden:

neutron router-gateway-clear r1

SNAT und Sicherheitsgruppen

Wenn ein logischer Router für die Unterstützung von SNAT aktiviert ist, wird die Standardsicherheitsgruppe automatisch auf die linke SNAT-Schnittstelle angewendet. Diese automatische Anwendung der Standardsicherheitsgruppe ermöglicht es der virtuellen Maschine, Datenverkehr ohne zusätzliche Benutzerkonfiguration zu senden und zu empfangen, wenn die Standardsicherheitsgruppe von miteinander verbundenen virtuellen Maschinen verwendet wird. Zum Senden und Empfangen von Datenverkehr ist jedoch eine zusätzliche Konfiguration erforderlich, wenn Ihre virtuelle Maschine mit virtuellen Maschinen verbunden ist, die nicht die Standardsicherheitsgruppe verwenden.

Wenn Sie Ihre virtuelle Maschine mit einer virtuellen Maschine verbinden, die nicht die Standardsicherheitsgruppe verwendet, müssen Sie eine der folgenden Konfigurationsaktualisierungen vornehmen, damit Ihre virtuelle Maschine Datenverkehr weiterleiten kann:

  • Aktualisieren Sie die Standardsicherheitsgruppe, um Regeln hinzuzufügen, die den VM-Datenverkehr zulassen.

  • Aktualisieren Sie die Regeln für die VM-Sicherheitsgruppe, um Datenverkehr von der Standardsicherheitsgruppe zuzulassen.

  • Wenden Sie dieselbe Sicherheitsgruppe auf die VM und die linke SNAT-Schnittstelle an.

Informationen zur Konfiguration von Sicherheitsgruppen in Umgebungen, die Contrail Networking verwenden, finden Sie unter Verwenden von Sicherheitsgruppen mit VM-Instanzen.

Verwenden der Webbenutzeroberfläche zum Konfigurieren von Routern mit SNAT

Sie können die Contrail-Benutzeroberfläche verwenden, um Router für SNAT zu konfigurieren und den SNAT-Status von Routern zu überprüfen.

Um SNAT für einen Router zu aktivieren, gehen Sie zu Konfigurieren > Netzwerk- > Router. Wählen Sie in der Liste der Router den Router aus, für den SNAT aktiviert werden soll. Klicken Sie auf das Zahnrad "Bearbeiten", um das Fenster "Router bearbeiten" anzuzeigen. Aktivieren Sie das Kontrollkästchen für SNAT, um SNAT auf dem Router zu aktivieren.

Im Folgenden sehen Sie einen Router, für den SNAT aktiviert wurde.

Abbildung 2: Bearbeiten des Routerfensters zum Aktivieren von SNAT Edit Router Window to Enable SNAT

Wenn ein Router für SNAT aktiviert wurde, können Sie die Konfiguration anzeigen, indem Sie Configure > Networking > Routers ( NetzwerkRouter konfigurieren auswählen. Klicken Sie in der Liste der Router auf Öffnen Sie den gewünschten Router. In der Liste der Funktionen für diesen Router wird der Status von SNAT aufgeführt. Im Folgenden sehen Sie einen Router, der in der Liste geöffnet wurde. Der Status des Routers zeigt an, dass SNAT aktiviert ist.

Abbildung 3: Routerstatus für SNAT Router Status for SNAT

Sie können den Echtzeitstatus eines Routers mit SNAT anzeigen, indem Sie die Instance-Konsole anzeigen, wie im Folgenden gezeigt.

Abbildung 4: Fenster "Instanzdetails" Instance Details Window

Verwenden der Webbenutzeroberfläche zum Konfigurieren von verteiltem SNAT

Die verteilte SNAT-Funktion ermöglicht virtuellen Computern die Kommunikation mit dem IP-Fabric-Netzwerk unter Verwendung der vorhandenen Weiterleitungsinfrastruktur für die Compute-Node-Konnektivität. Diese Funktionalität wird durch die Portadressübersetzung des Datenverkehrs virtueller Maschinen erreicht, wobei die IP-Adresse des Computeknotens als öffentliche Adresse verwendet wird.

Der folgende verteilte SNAT-Anwendungsfall wird unterstützt:

  • Virtuelle Netzwerke mit aktiviertem verteiltem SNAT können mit dem IP-Fabric-Netzwerk kommunizieren. Die Sitzung muss von einer virtuellen Maschine aus initiiert werden. Sitzungen, die über ein externes Netzwerk initiiert werden, werden nicht unterstützt.

Verteiltes SNAT wird nur für TCP und UDP unterstützt, und Sie können diskrete Portbereiche für beide Protokolle konfigurieren.

Ein Pool von Ports wird für verteiltes SNAT verwendet. Um einen Pool von Ports zu erstellen, gehen Sie zu Konfigurieren > Infrastruktur > Globale Konfiguration. Im Folgenden sehen Sie ein Beispiel für einen Portbereich, der für die Portadressübersetzung verwendet wird.

Abbildung 5: Fenster Edit Forwarding Options Window "Weiterleitungsoptionen bearbeiten"

Um verteiltes SNAT verwenden zu können, müssen Sie SNAT im virtuellen Netzwerk aktivieren. Um SNAT im virtuellen Netzwerk zu aktivieren, wechseln Sie zu Konfigurieren > Netzwerke > Netzwerke. Im Folgenden sehen Sie ein virtuelles Netzwerk, für das SNAT unter Erweiterte Optionen aktiviert wurde.

Abbildung 6: Fenster Create Window erstellen