Konfigurationsfehler beheben

Dieser Leitfaden hilft Ihnen bei der Lösung häufiger Probleme mit Cloud NAT.

Allgemeine Probleme

VMs können unerwartet ohne Cloud NAT auf das Internet zugreifen

Wenn Sie feststellen, dass Ihre VM-Instanzen oder Containerinstanzen ohne Cloud NAT auf das Internet zugreifen, dies jedoch nicht beabsichtigt ist, prüfen Sie Folgendes:

  • Ermitteln Sie, ob die Netzwerkschnittstelle der VM eine externe IP-Adresse hat. Wenn der Netzwerkschnittstelle eine externe IP-Adresse zugewiesen ist, führt Google Cloud automatisch 1: 1-NAT für Pakete aus, deren Quellen mit der primären internen IP-Adresse der Schnittstelle übereinstimmen. Weitere Informationen finden Sie unter Cloud NAT-Spezifikationen.

    Informationen dazu, ob eine VM eine externe IP-Adresse hat, finden Sie unter Externe IP-Adresse ändern oder einer vorhandenen Instanz zuweisen.

  • Sorgen Sie dafür, dass Ihr Google Kubernetes Engine-Cluster (GKE) ein privater Cluster ist. Jede Knoten-VM in einem nicht privaten Cluster hat eine externe IP-Adresse. Daher kann jeder Knoten Routen in Ihrem VPC-Netzwerk (Virtual Private Cloud) verwenden, deren nächster Hop das Standard-Internetgateway ist, ohne Cloud NAT zu verwenden. Weitere Informationen, einschließlich der Interaktion nicht privater Cluster mit Cloud NAT-Gateways, finden Sie unter Compute Engine-Interaktion.

  • Listen Sie Routen in Ihrem Virtual Private Cloud-Netzwerk auf und suchen Sie nach Routen, die eine Internetverbindung über einen anderen Hop als das Standard-Internetgateway bereitstellen könnten. Beispiele:

    • Benutzerdefinierte statische Routen, deren nächste Hops VMs, interne Passthrough-Network Load Balancer oder Cloud VPN-Tunnel sind, können indirekt eine Internetverbindung bereitstellen. Beispielsweise können die nächsten Hop-VMs oder Back-End-VMs für einen internen Passthrough-Network Load Balancer selbst externe IP-Adressen haben oder ein Cloud VPN-Tunnel kann eine Verbindung zu einem Netzwerk herstellen, das Internetzugang bietet.

    • Benutzerdefinierte dynamische Routen, die von lokalen Netzwerken von Cloud Routern in Ihrem VPC-Netzwerk ermittelt werden, können eine Verbindung zu einem Netzwerk herstellen, in dem Internetzugriff besteht.

  • Beachten Sie, dass andere benutzerdefinierte Routen in Ihrem VPC-Netzwerk höhere Prioritäten haben können als Routen, deren nächste Hops standardmäßige Internet-Gateways sind. Weitere Informationen zum Bewerten von Routen in Google Cloud finden Sie unter Anwendbarkeit und Reihenfolge.

Es werden keine Logs generiert

  • Verifizieren Sie, dass NAT-Logging aktiviert ist.
  • Überprüfen Sie, ob die Logs, nach denen Sie suchen, nicht durch Ihre Ansicht der Logs herausgefiltert werden. Eine Anleitung finden Sie unter Logs ansehen.

  • Achten Sie darauf, dass der Traffic nicht von einer Firewallregel blockiert wird. Firewallregeln, die ausgehenden Traffic blockieren, werden angewendet, bevor der Traffic an das NAT-Gateway gesendet wurde. Mit dem Logging von Firewallregeln können Sie feststellen, ob Ihre benutzerdefinierten Ausgangsregeln ausgehenden Traffic blockieren.

  • Sehen Sie sich Arten von Cloud NAT an. Das Ziel für Ihren Traffic wird möglicherweise nicht von NAT verwaltet.

Bestimmte Logs sind ausgeschlossen

  • Prüfen Sie, ob NAT-Logging aktiviert ist und ob Ihr Logfilter keine Logs ausschließt, die Sie behalten möchten. Sie können einen Logfilter löschen, sodass nichts ausgeschlossen wird.

  • Cloud NAT protokolliert nicht jedes einzelne Ereignis. Bei Traffic mit hohem Traffic wird NAT-Logging gedrosselt, proportional zum Maschinentyp der VM. Übersetzungs- oder Fehlerlogs können gelöscht werden und es kann nicht ermittelt werden, was bei der Drosselung ausgelassen wird.

Pakete mit Grund entfernt: keine Ressourcen vorhanden

Wenn Sie Paketverluste von VMs sehen, die Cloud NAT verwenden, ist dies möglicherweise darauf zurückzuführen, dass nicht genügend Tupel aus NAT-Quell-IP-Adresse und Quellport vorhanden sind, die die VM zum Zeitpunkt des Paketverlusts (Portauslastung) verwenden kann. Ein 5-Tupel (NAT-Quell-IP-Adresse, Quellport und 3-Tupel-Ziel) kann nicht innerhalb der TCP TIME_WAIT Zeitlimit wiederverwendet werden.

Wenn nicht genügend NAT-Tupel verfügbar sind, lautet der Grund für dropped_sent_packets_count OUT_OF_RESOURCES. Weitere Informationen zu Messwerten finden Sie unter VM-Instanzmesswerte verwenden.

Unter Portnutzung reduzieren erfahren Sie, wie Sie die Portnutzung reduzieren können.

Wenn Sie die dynamische Portzuweisung verwenden, finden Sie im folgenden Abschnitt Möglichkeiten, die Anzahl der Pakete bei Verwendung der dynamischen Portzuweisung zu reduzieren.

Pakete, die verworfen werden, wenn die dynamische Portzuweisung konfiguriert ist

Die dynamische Portzuweisung erkennt, wenn sich eine VM in der Nähe der Ports befindet, und verdoppelt die Anzahl der Ports, die der VM zugewiesen werden. Dadurch werden Ports nicht verschwendet, aber es können Pakete verloren gehen, während die Anzahl der zugewiesenen Ports zunimmt.

Beachten Sie Folgendes, um die Anzahl der verworfenen Pakete zu reduzieren:

  • Wenn Sie Verbindungen langsamer erhöhen können, hat Cloud NAT mehr Zeit, um mehr Ports zuzuweisen.

  • Wenn VMs TCP-Verbindungen herstellen, können Sie die VMs mit einem höheren Wert für tcp_syn_retries konfigurieren. Dadurch hat das System mehr Zeit zum Herstellen der Verbindung und erhöht die Wahrscheinlichkeit, dass die Verbindung hergestellt wird.

    Für Linux-VMs können Sie sich beispielsweise die aktuelle Einstellung ansehen:

      sysctl net.ipv4.tcp_syn_retries
      

    Bei Bedarf können Sie die Einstellung erhöhen:

      sudo sysctl -w net.ipv4.tcp_syn_retries=NUM
      

  • Wenn Sie Arbeitslasten mit sporadischen Lastspitzen haben und schnell weitere Ports zuweisen müssen, müssen Sie möglicherweise die Mindestanzahl der Ports pro VM anpassen. Sehen Sie sich die Portnutzung an und ermitteln Sie eine geeignete Mindestanzahl an Ports pro VM.

Pakete mit Grund entfernt: endpunktunabhängiger Konflikt

Wenn Sie Paketverluste bei VMs feststellen, die öffentliche NAT verwenden, und die endpunktunabhängige Zuordnung aktiviert ist, wird der Paketverlust möglicherweise durch einen endpunktunabhängigen Konflikt verursacht. Wenn dies der Fall ist, ist der Grund für dropped_sent_packets_count ENDPOINT_INDEPENDENT_CONFLICT. Weitere Informationen zu Messwerten finden Sie unter VM-Instanzmesswerte verwenden.

Mit den folgenden Methoden können Sie die Wahrscheinlichkeit von endpunktunabhängigen Konflikten reduzieren:

  • Deaktivieren Sie die endpunktunabhängige Zuordnung. Dadurch kann die neue Verbindung von einer bestimmten Quell-IP-Adresse und einem bestimmten Port eine andere NAT-Quell-IP-Adresse und einen anderen Quellport als zuvor verwenden. Das Deaktivieren oder Aktivieren der endpunktunabhängigen Zuordnung unterbricht vorhandene Verbindungen nicht.

  • Mindestanzahl an NAT-Ports pro VM-Instanz erhöhen, damit das Verfahren zur Portreservierung mehr NAT-Quell-IP-Adress- und Quellport-Tupel an jede Client-VM zuweisen kann. Dadurch verringert sich die Wahrscheinlichkeit, dass zwei oder mehr Tupel aus Client-IP-Adresse und sitzungsspezifischem Quellport demselben Tupel aus NAT-Quell-IP-Adresse und Quellport zugewiesen werden.

  • Prüfen Sie, wie viele sitzungsspezifische Quellports verwendet werden:

    • Für Linux-VMs:

      netstat -an | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | wc -l
      
    • Für Windows-VMs:

      netstat -tan | findstr "ESTABLISHED TIME_WAIT CLOSE_WAIT" | find /c /v ""
      
  • Konfigurieren Sie Ihre VM-Instanzen so, dass sie eine größere Anzahl von sitzungsspezifischen Quellports verwenden:

    • Für Linux-VMs:

      • Mit folgendem Befehl können Sie sehen, welcher Portbereich konfiguriert ist:

        cat /proc/sys/net/ipv4/ip_local_port_range
        
      • Mit diesem Befehl können Sie für ip_local_port_range die maximale Anzahl von sitzungsspezifischen Quellports (64.512) festlegen:

        echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
        
    • Für Windows-VMs:

      • Mit den folgenden Befehlen können Sie sehen, welche Portbereiche konfiguriert sind:

        netsh int ipv4 show dynamicport tcp
        netsh int ipv4 show dynamicport udp
        
      • Mit diesen Befehlen können Sie die Anzahl der sitzungsspezifischen Quell-TCP- und UDP-Ports auf den möglichen Maximalwert (64.512) einstellen:

        netsh int ipv4 set dynamicport tcp start=1024 num=64512
        netsh int ipv4 set dynamicport udp start=1024 num=64512
        
      • Auf Google Kubernetes Engine-Knoten können Sie diese Konfiguration mithilfe einer privilegierten DaemonSet automatisieren.

  • Deaktivieren Sie bei GKE-Clustern die auf jedem Knoten ausgeführte Quell-NAT für Pakete, die an relevante Orte gesendet werden. Dafür stehen Ihnen zwei Möglichkeiten zur Verfügung:

Weitere IP-Adressen müssen zugewiesen werden

Manchmal können Ihre VMs nicht auf das Internet zugreifen, da Sie nicht genügend NAT-IP-Adressen haben. Mehrere Faktoren können dieses Problem verursachen. Weitere Informationen finden Sie in der folgenden Tabelle.

Ursache Symptom Lösung
Sie haben zwar manuell Adressen zugewiesen, aber angesichts Ihrer aktuellen Portnutzung nicht genug.
  • In der Google Cloud Console wird der Fehler Sie müssen mindestens „X“ mehr IP-Adressen zuweisen, damit alle Instanzen auf das Internet zugreifen können angezeigt.
  • Der Wert des Messwerts nat_allocation_failed ist true.

Führen Sie einen der folgenden Schritte aus:

Sie haben ein festes Limit für NAT-IP-Adressen überschritten.

Erstellen Sie eine Benachrichtigung für den Messwert nat_allocation_failed, um Fehler zu überwachen, die durch eine unzureichende Anzahl von IP-Adressen verursacht werden. Dieser Messwert wird auf true gesetzt, wenn Google Cloud für keine VM in Ihrem NAT-Gateway genügend IP-Adressen zuweisen kann. Weitere Informationen zu Benachrichtigungsrichtlinien finden Sie unter Benachrichtigungsrichtlinien definieren.

Portnutzung reduzieren

Sie können in Situationen die Anzahl der Ports minimieren, die jede VM verwendet, in denen mehr NAT-IP-Adressen nicht möglich oder wünschenswert sind.

Führen Sie die folgenden Schritte aus, um die Portnutzung zu reduzieren:

  1. Deaktivieren Sie die endpunktunabhängige Zuordnung.

  2. Dynamische Portzuweisung aktivieren. Wenn Sie die dynamische Portzuweisung verwenden möchten, legen Sie eine Mindestanzahl von Ports pro VM und eine maximale Anzahl von Ports pro VM fest. Cloud NAT weist der Mindest- und Höchstanzahl von Ports automatisch eine Reihe von Tupeln aus NAT-Quell-IP-Adresse und Quellport zu. Die Verwendung einer niedrigen Zahl für die Mindestanzahl von Ports reduziert die Verschwendung von NAT-Quell-IP-Adressen und Quell-Port-Tupeln auf VMs mit weniger aktiven Verbindungen. Wenn Sie bei der Zuweisung von Ports auf Verbindungszeitüberschreitungen stoßen, lesen Sie bitte den Abschnitt Paketverluste mit dynamischer Portzuweisung reduzieren.

  3. Ermitteln Sie die geringstmögliche Mindestanzahl von Ports, die Ihren Anforderungen entspricht. Dafür gibt es unterschiedliche Methoden. Die meisten beruhen auf der Prüfung der Anzahl der genutzten Ports (compute.googleapis.com/nat/port_usage) als Grundlage für die Entscheidungsfindung. Informationen zur Suche nach Portnutzungsdaten finden Sie unter Portnutzung ansehen. Im Folgenden finden Sie zwei Beispielmethoden, um eine Mindestanzahl von Ports zu ermitteln:

    • Betrachten Sie den Durchschnittswert von compute.googleapis.com/nat/port_usage über einen repräsentativen Zeitraum für eine repräsentative Anzahl von VMs.
    • Berücksichtigen Sie den am häufigsten auftretenden Wert von compute.googleapis.com/nat/port_usage über einen repräsentativen Zeitraum für eine repräsentative Anzahl von VMs.
  4. Ermitteln Sie die geringstmögliche maximale Anzahl von Ports, die Ihren Anforderungen entsprechen. Sehen Sie sich noch einmal compute.googleapis.com/nat/port_usage als Grundlage für Ihren Entscheidungsprozess an. Betrachten Sie den Maximalwert von compute.googleapis.com/nat/port_usage über einen repräsentativen Zeitraum für eine repräsentative Anzahl von VMs als Ausgangspunkt für die maximale Anzahl von Ports. Beachten Sie, dass ein zu hohes Maximum dazu führen kann, dass andere VMs keine Tupel aus NAT-Quell-IP-Adresse und Quellport erhalten.

  5. Die Ermittlung der richtigen Werte für die Mindest- und Höchstanzahl von Ports beinhaltet iterative Tests. Schritte zum Ändern der minimalen und maximalen Ports finden Sie unter Minimale oder maximale Ports ändern, wenn die dynamische Portzuweisung konfiguriert ist.

  6. Prüfen Sie die NAT-Zeitüberschreitungen, ihre Bedeutung und ihre Standardwerte. Wenn Sie eine Reihe von TCP-Verbindungen schnell zum selben Ziel-3-Tupel erstellen müssen, sollten Sie die TCP-Wartezeit reduzieren, damit Cloud NAT die NAT-Quell-IP-Adresse und Quell-Port-Tupel schneller wiederverwenden kann. Dadurch kann Cloud NAT schneller dasselbe 5-Tupel verwenden, anstatt ein eindeutiges 5-Tupel verwenden zu müssen, was die Zuweisung zusätzlicher NAT-Quell-IP-Adressen- und Quell-Port-Tupel für jede sendende VM erfordern könnte. Eine Anleitung zum Ändern von NAT-Zeitüberschreitungen finden Sie unter NAT-Zeitlimits ändern.

Häufig gestellte Fragen

Regionale Beschränkung für Cloud NAT

Kann ich dasselbe Cloud NAT-Gateway in mehreren Regionen verwenden?

Nein. Ein Cloud NAT-Gateway kann nicht mit mehr als einer Region, einem VPC-Netzwerk oder einem Cloud Router verknüpft werden.

Wenn Sie Verbindungen für andere Regionen oder VPC-Netzwerke bereitstellen müssen, erstellen Sie für diese zusätzliche Cloud NAT-Gateways.

Sind die von Cloud NAT-Gateways verwendeten externen NAT-IP-Adressen global oder regional?

Antwort: Cloud NAT-Gateways verwenden regionale externe IP-Adressen als NAT-IP-Adressen. Obwohl sie regional sind, können sie öffentlich weitergeleitet werden. Informationen zu den verschiedenen Möglichkeiten der Zuweisung oder Übertragung von NAT-IP-Adressen finden Sie unter NAT-IP-Adressen.

Wann Cloud NAT verwendet werden kann und wann nicht

Ist Cloud NAT für Instanzen anwendbar, die externe IP-Adressen haben, einschließlich GKE-Knoten-VMs?

Im Allgemeinen nicht. Wenn die Netzwerkschnittstelle einer VM eine externe IP-Adresse hat, führt Google Cloud immer 1:1 NAT für Pakete aus, die von der primären internen IP-Adresse der Netzwerkschnittstelle gesendet werden, ohne Cloud NAT zu verwenden. Cloud NAT konnte jedoch NAT-Dienste für Pakete bereitstellen, die von Alias-IP-Adressbereichen derselben Netzwerkschnittstelle gesendet werden. Weitere Informationen finden Sie unter Cloud NAT-Spezifikationen und Compute Engine-Interaktion.

Kann ich Cloud NAT für die Kommunikation zwischen VMs in einem VPC-Netzwerk verwenden?

Antwort: Nein, Cloud NAT wurde nur entwickelt, um eine Verbindung zum Internet herzustellen.

Kann ich Cloud NAT verwenden, um ein VPC-Netzwerk mit einem anderen Netzwerk zu verbinden und somit IP-Adressen zu umgehen, die sich überschneiden?

Nein, Cloud NAT kann nicht auf eine benutzerdefinierte Route angewendet werden, deren nächster Hop nicht das Standard-Internetgateway ist. Cloud NAT kann beispielsweise nicht auf Traffic angewendet werden, der an einen Cloud VPN-Tunnel für den nächsten Hop gesendet wird, selbst wenn das Ziel eine öffentlich routbare IP-Adresse ist.

Ermöglicht Cloud NAT einer Quell-VM, deren Netzwerkschnittstelle keine externe IP-Adresse hat, Traffic an eine Ziel-VM oder einen Load-Balancer mit externer IP-Adresse zu senden, auch wenn Quelle und Ziel im selben VPC-Netzwerk sind?

Ja. Der Netzwerkpfad umfasst das Senden von Traffic aus dem VPC-Netzwerk über ein Standard-Internet-Gateway, das dann im selben Netzwerk empfangen wird.

Wenn die Quell-VM ein Paket an das Ziel sendet, führt Cloud NAT Quell-NAT (SNAT) aus, bevor das Paket an die zweite Instanz gesendet wird. Cloud NAT führt Ziel-NAT (DNAT) für Antworten von der zweiten Instanz zur ersten aus. Ein detailliertes Beispiel finden Sie unter Grundlegende Konfiguration und Workflow für öffentliche NAT.

Unbeabsichtigte eingehende Verbindungen werden nicht unterstützt

Ermöglicht Cloud NAT eingehende Verbindungen (z. B. SSH) zu Instanzen ohne externe IP-Adressen?

Antwort: Nein, Cloud NAT unterstützt keine nicht angeforderten eingehenden Verbindungen. Weitere Informationen finden Sie unter Cloud NAT-Spezifikationen.

Wenn Sie eine Verbindung zu einer VM herstellen müssen, die keine externe IP-Adresse hat, finden Sie weitere Informationen unter Verbindungsoption für ausschließlich interne VMs auswählen. Im Rahmen des Beispiels für die Einrichtung einer Cloud NAT-Anwendung in Compute Engine stellen Sie beispielsweise mithilfe von Identity-Aware Proxy eine Verbindung zu einer VM ohne externe IP-Adresse her.

Cloud-NAT und Ports

Frage: Warum hat eine VM eine feste Anzahl an Ports (standardmäßig 64)?

Wenn ein Cloud NAT-Gateway NAT für eine VM bereitstellt, reserviert es Quelladress- und Quellport-Tupel gemäß dem Portreservierungsverfahren.

Weitere Informationen finden Sie unter Beispiele für die Portreservierung.

Kann ich die Mindestanzahl an Ports ändern, die für eine VM reserviert sind?

Ja. Sie können die Mindestanzahl an Ports pro VM erhöhen oder verringern, wenn Sie ein neues Cloud NAT-Gateway erstellen oder es später bearbeiten. Jedes Cloud NAT-Gateway reserviert Quelladressen und Quellport-Tupel gemäß dem Verfahren für die Portreservierung.

Weitere Informationen zum Verringern der Mindestanzahl der Ports finden Sie in der nächsten Frage.

Kann ich die Mindestanzahl der Ports pro VM nach dem Erstellen des Cloud NAT-Gateways verringern?

Ja. Wenn Sie jedoch die Mindestanzahl von Ports verringern, kann dies dazu führen, dass das Verfahren zur Portreservierung eine kleinere Anzahl von Ports pro VM reserviert. In diesem Fall werden vorhandene TCP-Verbindungen möglicherweise zurückgesetzt und müssen in diesem Fall neu hergestellt werden.

Wenn die NAT-Zuordnung von primären und sekundären Bereichen zu nur primären Bereichen umgestellt wird, werden dabei zusätzliche Ports, die den einzelnen Instanzen zugewiesen sind, sofort freigegeben?

Nein. Alle zusätzlichen Bereiche, die von sekundären Bereichen verwendet werden, bleiben so lange erhalten, bis die Einstellung Mindestanzahl von Ports pro VM reduziert wird. Wenn Cloud NAT für die Zuordnung sekundärer (Alias) Bereiche für Subnetze konfiguriert ist, weist Cloud NAT entsprechend der Portreservierungsverfahren mindestens 1.024 Ports pro Instanz zu.

Wenn Sie auf nur primäre Bereiche umstellen, speichert Cloud NAT diese zusätzlichen zugewiesenen Ports für Instanzen, denen diese Ports bereits zugewiesen wurden. Nachdem Sie die Bereiche, für die Cloud NAT auf nur „Primär“ angewendet wird, geändert haben, wird die tatsächliche Anzahl der Ports, die diesen Instanzen zugewiesen sind, erst geändert, wenn die Mindestanzahl der Ports pro VM ebenfalls reduziert wird.

Damit die Anzahl der Ports reduziert wird, die diesen Instanzen zugewiesen werden muss nach der Umstellung auf nur primäre Bereiche die Einstellung Mindestanzahl von Ports pro VM reduziert werden. Nachdem dieser Wert reduziert wurde, passt Cloud NAT die Anzahl der pro Instanz zugewiesenen Ports automatisch nach unten an, wodurch der Portverbrauch reduziert wird.

Cloud NAT und andere Google-Dienste

Ermöglicht Cloud NAT den Zugriff auf Google APIs und -Dienste?

Wenn Sie Cloud NAT für den primären IP-Bereich eines Subnetzes aktivieren, aktiviert Google Cloud automatisch den privaten Google-Zugriff. Weitere Informationen finden Sie unter Interaktion mit privatem Google-Zugriff.

Nächste Schritte