Wie kann ich Konnektivitätsprobleme beheben, wenn ich ein NAT-Gateway auf meiner privaten VPC verwende?

Letzte Aktualisierung: 12.04.2022

Ich verwende ein NAT-Gateway, um Instances in einem privaten Virtual Private Cloud (Amazon VPC)-Subnetz mit dem Internet zu verbinden. Die Instances haben zeitweise Verbindungsprobleme. Wie kann ich das Problem beheben?

Kurzbeschreibung

Private Subnetzressourcen können aus den folgenden Gründen zu zeitweiligen Konnektivitäts-Zeitbeschränkungs-Problemen führen:

  • Regeln der Netzwerk-Zugriffssteuerungsliste (ACL).
  • ErrorPortAllocation-Fehler auf dem NAT-Gateway.
  • Port-Erschöpfung der Client-Instance.

Private Subnetzressourcen können aus folgendem Grund zu einem plötzlichen Verbindungsabbruch kommen:

  • IdleTimeoutCount-Fehler beim Freigeben der Kapazität.

Private Subnetzressourcen können aus folgendem Grund langsam werden:

  • Bandbreitenbeschränkung pro NAT-Gateway.

Auflösung

Bei privaten Subnetzressourcen treten zeitweise Probleme mit Konnektivitäts-Zeitbeschränkungen auf

Netzwerk-ACL-Regeln

Vergewissern Sie sich, dass die Netzwerk-ACL, die dem öffentlichen Subnetz zugeordnet ist, in dem das NAT-Gateway vorhanden ist, Datenverkehr aus dem flüchtigen Portbereich (1024-65535) zulässt. Wenn die Netzwerk-ACL nur eine Teilmenge des flüchtigen Portbereichs zulässt und die Instances im privaten Subnetz einen Quellport außerhalb dieses Bereichs verwenden, wird der Datenverkehr verworfen. Weitere Informationen zum Konfigurieren von Netzwerk-ACLs finden Sie unter Empfohlene Netzwerk-ACL-Regeln für eine VPC mit öffentlichen und privaten Subnetzen (NAT).

ErrorPortAllocation-Fehler auf dem NAT-Gateway

Weitere Informationen zu diesem Fehler finden Sie unter Wie behebe ich den ErrorPortAllocation-Fehler auf meinem NAT-Gateway?

Port-Erschöpfung der Client-Instance

Prüfen Sie, ob die Client-Instances im privaten Subnetz ihre Verbindungslimits auf Betriebssystemebene erreicht haben. Um die Anzahl der aktiven Verbindungen zu sehen, führen Sie den Befehl netstat aus:

Linux:

netstat -ano | grep ESTABLISHED | wc --l
netstat -ano | grep TIME_WAIT | wc --l

Windows:

netstat -ano | find /i "estab" /c
netstat -ano | find /i "TIME_WAIT" /c

Wenn der vorhergehende Befehl einen Wert nahe dem zulässigen lokalen Portbereich (Quellport für Clientverbindungen) zurückgibt, ist der Port möglicherweise erschöpft.

Gehen Sie wie folgt vor, um die Erschöpfung des Ports zu verringern:

  • Beheben Sie alle Probleme auf Anwendungsebene, die die verfügbaren Verbindungen belasten.
  • Erhöhen Sie den lokalen (flüchtigen) Portbereich des Betriebssystems, indem Sie den folgenden Befehl ausführen:
net.ipv4.ip_local_port_range = 1025 61000

Bei privaten Subnetzressourcen kommt es zu plötzlichen Verbindungsabbrüchen

IdleTimeoutCount-Fehler beim Freigeben der Kapazität

Wenn eine Verbindung, die ein NAT-Gateway verwendet, 350 Sekunden oder länger im Leerlauf ist, läuft die Verbindung ab und Sie sehen einen Anstieg der IdleTimeoutCount-Metrik. Wenn eine Verbindung abläuft, gibt ein NAT-Gateway ein RST-Paket an alle Ressourcen hinter dem NAT-Gateway zurück, die versuchen, die Verbindung fortzusetzen. Das NAT-Gateway sendet kein FIN-Paket.

Problemumgehung für den IdleTimeoutCount-Fehler:

  • Verwenden Sie die Metrik IdleTimeoutCount in Amazon CloudWatch, um die Zunahme von inaktiven Verbindungen zu überwachen. Konfigurieren Sie CloudWatch Contributor Insights, um einen Überblick über die wichtigsten Mitwirkenden von Kunden mit Prozessen im Status Inaktiv zu erhalten.
  • Schließen Sie inaktive Verbindungen von Clients, um Kapazität freizugeben.
  • Initiieren Sie mehr Datenverkehr über die Verbindung.
  • Schalten Sie TCP-Keepalive auf der Instance mit einem Wert von weniger als 350 Sekunden ein.

Private Subnetzressourcen sind langsam

Bandbreitenbeschränkungen auf dem NAT-Gateway

  • Ein NAT-Gateway unterstützt 5 Gbit/s Bandbreite und skaliert automatisch auf bis zu 45 Gbit/s. Wenn die kombinierte Summe der Netzwerkdurchsatzmetriken über alle Instances hinter dem NAT-Gateway Bursts von 45 Gbit/s oder mehr beträgt, verlangsamt sich der Datenverkehr.
  • Unter Verwendung von CloudWatch-Metriken wird die Bandbreite wie folgt berechnet: (BytesOutToDestination + BytesOutToSource + BytesInFromDestination + BytesInFromSource) * 8/Zeitraum in Sekunden.

Problemumgehung für Bandbreitenbeschränkungen pro NAT-Gateway:

Wenn Ihre Bandbreite auf dem NAT-Gateway größer als 45 Gbit/s ist, können Sie die Ressourcen auf mehrere Subnetze aufteilen und mehrere NAT-Gateways erstellen.