Public NAT mit Compute Engine verwenden
Auf dieser Seite wird ein öffentliches NAT-Gateway veranschaulicht, das Dienste zur Netzwerkadressübersetzung für eine Compute Engine-VM-Instanz bereitstellt. Lesen Sie vor Beginn die Übersicht über Public NAT.
Vorbereitung
Führen Sie die folgenden Schritte aus, bevor Sie Public NAT einrichten.
IAM-Berechtigungen abrufen
Die Rolle roles/compute.networkAdmin berechtigt Sie, ein NAT-Gateway in Cloud Router zu erstellen, NAT-IP-Adressen zu reservieren und zuzuweisen sowie Subnetzwerke (Subnetze) anzugeben, deren Traffic eine Netzwerkadressübersetzung vom NAT-Gateway verwenden sollte.
Google Cloud einrichten
Zuvor sollten Sie jedoch die folgenden Elemente in Google Cloud einrichten.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Beispiel
Im Folgenden finden Sie ein End-to-End-Beispiel, das ein öffentliches NAT-Gateway und eine Compute Engine-VM zeigt, die das öffentliche NAT-Gateway verwenden.
Schritt 1: VPC-Netzwerk und Subnetz erstellen
Wenn Sie bereits ein Netzwerk und ein Subnetz haben, können Sie diesen Schritt überspringen.
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf VPC-Netzwerk erstellen.
Geben Sie als Namen
custom-network1
ein.Wählen Sie unter Subnetze als Modus für die Subnetzerstellung Benutzerdefiniert.
Geben Sie unter Neues Subnetz für Name den Wert
subnet-us-east-192
ein.Wählen Sie unter Region die Option us-east4 aus.
Geben Sie einen IP-Adressbereich von
192.168.1.0/24
ein.Klicken Sie auf Fertig und dann auf Erstellen.
gcloud
Erstellen Sie in Ihrem Projekt ein neues VPC-Netzwerk im benutzerdefinierten Modus:
gcloud compute networks create custom-network1 \ --subnet-mode custom
Geben Sie das Subnetzpräfix für die erste Region an. In diesem Beispiel ordnen Sie
192.168.1.0/24
der Regionus-east4
zu.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Terraform
Sie können ein Terraform-Modul verwenden, um ein benutzerdefiniertes VPC-Netzwerk (Virtual Private Cloud) und ein Subnetz zu erstellen.
Schritt 2: VM-Instanz ohne externe IP-Adresse erstellen
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Geben Sie als Name für Ihre Instanz
nat-test-1
an.Legen Sie für Region den Wert us-east4 fest.
Legen Sie für Zone den Wert us-east4-c fest.
Klicken Sie auf den Link Verwaltung, Sicherheit, Laufwerke, Netzwerk, einzelne Mandanten.
Klicken Sie auf den Tab Netzwerk.
Klicken Sie unter Netzwerkschnittstellen bei der Standardschnittstelle der VM auf
Bearbeiten.- Legen Sie für Netzwerk den Wert
custom-network1
fest. - Legen Sie für Subnetzwerk den Wert
subnet-us-east-192
fest. - Legen Sie Externe IP-Adresse auf None (Keine) fest.
- Klicken Sie auf Fertig.
- Legen Sie für Netzwerk den Wert
Klicken Sie zum Erstellen und Starten der Instanz auf Erstellen.
gcloud
gcloud compute instances create nat-test-1 \ --image-family debian-9 \ --image-project debian-cloud \ --network custom-network1 \ --subnet subnet-us-east-192 \ --zone us-east4-c \ --no-address
Terraform
Sie können eine Terraform-Ressource verwenden, um eine VM-Instanz zu erstellen.
Schritt 3: Firewallregel erstellen, die SSH-Verbindungen zulässt
Console
Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.
Klicken Sie auf Firewallregel erstellen.
Geben Sie als Namen
allow-ssh
ein.Geben Sie als Netzwerk den Wert
custom-network1
ein.Legen Sie für Traffic-Richtung den Wert Ingress fest.
Legen Sie für Aktion bei Übereinstimmung den Wert Zulassen fest.
Legen Sie für Ziele den Wert Alle Instanzen im Netzwerk fest.
Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
Legen Sie für Quell-IP-Bereiche den Wert
35.235.240.0/20
fest.Legen Sie für Protokolle und Ports den Wert Angegebene Protokolle und Ports fest.
Klicken Sie das Kästchen tcp an und geben Sie Port
22
ein.Klicken Sie auf Erstellen.
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Sie können eine Terraform-Ressource verwenden, um eine Firewallregel zu erstellen.
Schritt 4: IAP-SSH-Berechtigungen für Ihre Testinstanz angeben
Verwenden Sie in einem späteren Schritt Identity-Aware Proxy (IAP), um eine Verbindung zu Ihrer Testinstanz herzustellen.
Console
Rufen Sie in der Google Cloud Console die Seite Identity-Aware Proxy auf.
Klicken Sie auf den Tab SSH- und TCP-Ressourcen.
Klicken Sie das Kästchen neben Alle Tunnelressourcen > us-east4-c > nat-test-1 an, um die Mitgliederberechtigungen für Ressourcen zu aktualisieren.
Klicken Sie im rechten Bereich auf Mitglied hinzufügen.
Um Nutzern, Gruppen oder Dienstkonten Zugriff auf die Ressourcen zu gewähren, geben Sie im Feld Neue Mitglieder ihre E-Mail-Adressen ein.
Wenn Sie diese Funktion lediglich testen, können Sie Ihre eigene E-Mail-Adresse eingeben.
Wählen Sie in der Drop-down-Liste Rolle die Option Cloud IAP > Nutzer IAP-gesicherter Tunnel aus, um Mitgliedern über die TCP-Weiterleitungsfunktion von Cloud IAP Zugriff auf die Ressourcen zu gewähren.
Klicken Sie auf Speichern.
gcloud
Dieser Befehl gewährt SSH-Zugang über IAP für alle VM-Instanzen in Ihrem Projekt. Wenn Sie SSH-Zugang über IAP für eine einzelne VM gewähren möchten, verwenden Sie die Anweisungen der Google Cloud Console.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER_INFO \ --role=roles/iap.tunnelResourceAccessor
Dabei gilt:
PROJECT_ID
: Ihre Projekt-IDMEMBER_INFO
: Eine durch Kommas getrennte Liste vontype:email
-Mitgliedspaaren. Beispiele:- Für einen einzelnen Nutzer:
user:test-user@example.com
- Für eine Gruppe:
group:admins@example.com
- Für ein Dienstkonto:
serviceAccount:test123@example.domain.com
- Für einen einzelnen Nutzer:
Terraform
Sie können eine Terraform-Ressource verwenden, um IAP-SSH-Berechtigungen für Ihre Testinstanz zu erstellen.
Schritt 5: Bei nat-test-1
anmelden und bestätigen, dass keine Verbindung zum Internet hergestellt werden kann
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie für
nat-test-1
in der Spalte Verbinden auf den Drop-down-Pfeil SSH und wählen Sie dann Im Browserfenster öffnen aus.Geben Sie bei der Eingabeaufforderung der VM
curl example.com
ein und drücken Sie die Eingabetaste.Sie sollten kein Ergebnis erhalten. Sie haben möglicherweise
nat-test-1
mit einer externen IP-Adresse erstellt oder es gibt ein anderes Problem. Informationen zur Fehlerbehebung finden Sie unter VMs können unerwartet ohne Cloud NAT auf das Internet zugreifen.Zum Beenden des Befehls müssen Sie möglicherweise
Ctrl+C
eingeben.
gcloud
Fügen Sie Ihrem lokalen Host einen Compute Engine-SSH-Schlüssel hinzu:
ssh-add ~/.ssh/google_compute_engine
Stellen Sie eine Verbindung zu
nat-test-1
her und führen Sie einen Befehl aus:gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Sie sollten kein Ergebnis erhalten. Sie haben möglicherweise
nat-test-1
mit einer externen IP-Adresse erstellt oder es gibt ein anderes Problem. Informationen zur Fehlerbehebung finden Sie unter VMs können unerwartet ohne Cloud NAT auf das Internet zugreifen.Zum Beenden des Befehls müssen Sie möglicherweise
Ctrl+C
eingeben.
Schritt 6: NAT-Konfiguration mit Cloud Router erstellen
Sie müssen den Cloud Router in derselben Region wie die Instanzen erstellen, die Public NAT verwenden. Cloud Router wird nur zum Platzieren von NAT-Informationen auf den VMs verwendet. Es wird nicht in das eigentliche NAT-Gateway eingebunden.
Diese Konfiguration ermöglicht allen Instanzen in der Region, Public NAT für alle primären und Alias-IP-Bereiche zu verwenden. Außerdem werden die externen IP-Adressen für das NAT-Gateway automatisch zugeordnet. Weitere Informationen finden Sie in der Dokumentation zum Google Cloud CLI.
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud NAT.
Klicken Sie auf Erste Schritte oder NAT-Gateway erstellen.
Geben Sie als Name des Gateways
nat-config
ein.Legen Sie für VPC-Netzwerk den Wert
custom-network1
fest.Legen Sie für Region den Wert us-east4 fest.
Wählen Sie für Cloud Router die Option Neuen Router erstellen aus.
- Geben Sie als Namen
nat-router
ein. - Klicken Sie auf Erstellen.
- Geben Sie als Namen
Klicken Sie auf Erstellen.
gcloud
Erstellen Sie einen Cloud Router:
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Fügen Sie eine Konfiguration zum Router hinzu:
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
Sie können eine Terraform-Ressource verwenden, um einen Cloud Router zu erstellen.
Sie können ein Terraform-Modul verwenden, um eine NAT-Konfiguration zu erstellen.
Schritt 7: Noch einmal versuchen, eine Verbindung zum Internet herzustellen
Es kann bis zu drei Minuten dauern, bis die NAT-Konfiguration auf die VM übertragen wird. Warten Sie daher mindestens eine Minute, bevor Sie noch einmal versuchen, auf das Internet zuzugreifen.
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie für
nat-test-1
in der Spalte Verbinden auf den Drop-down-Pfeil SSH und wählen Sie dann Im Browserfenster öffnen aus.Geben Sie bei der Eingabeaufforderung der VM
curl example.com
ein und drücken Sie die Eingabetaste.
gcloud
Stellen Sie eine Verbindung zu nat-test-1
her und führen Sie einen Befehl aus:
gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Die Ausgabe sollte folgenden Inhalt enthalten:
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You can use this domain in examples without prior coordination or asking for permission.</p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
Nächste Schritte
- Richten Sie ein öffentliches NAT-Gateway ein.
- Beispielkonfiguration für die Google Kubernetes Engine (GKE) erstellen