Wie stelle ich fest, ob meine DNS-Abfragen an den Amazon DNS-Server aufgrund einer VPC-DNS-Drosselung fehlschlagen?

Lesedauer: 4 Minute
0

Ich möchte wissen, warum meine DNS-Abfragen an den Amazon DNS-Server in meiner Amazon Virtual Private Cloud (Amazon VPC) fehlschlagen oder ein Timeout auftritt.

Kurzbeschreibung

Das Amazon DNS-Kontingent beträgt 1 024 Pakete pro Sekunde (PPS) für jede Elastic-Network-Schnittstelle. Wenn du das Kontingent überschreitest, lehnt Amazon Route 53 den Datenverkehr ab.

VPC-Flow-Protokolle erfasst nicht den Datenverkehr, den Anwendungen an Amazon DNS-Server senden. Um die Ursache der DNS-Abfragefehler zu ermitteln, verwende Paketerfassungen oder Traffic Mirroring.

Hinweis: Die Abfrageprotokollierung von Route 53 erfasst nur den Datenverkehr, der den Resolver VPC.2 AmazonProvidedDNS) erreicht. Gedrosselte DNS-Abfragen erscheinen nicht in Abfrageprotokollen, da die Abfragen auf der Ebene der Netzwerkschnittstelle gedrosselt werden.

Lösung

Die Ursache der DNS-Abfragefehler ermitteln

tcpdump (nur Linux) verwenden

Gehe wie folgt vor, um tcpdump zu verwenden:

  1. Führe den folgenden Befehl auf der Amazon Elastic Compute Cloud (Amazon EC2)-Instance aus: 

    TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
    INSTANCE_ID=`curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id`
    sudo tcpdump -i eth0 -s 350 -C 100 -W 20 -w /var/tmp/$INSTANCE_ID.$(date +%Y-%m-%d:%H:%M:%S).pcap

    Hinweis: Der vorhergehende Befehl erfasst die ersten 350 Byte des Pakets, speichert 20 Dateien mit jeweils 100 MB und überschreibt die alten Paketerfassungen. Wenn die primäre Netzwerkschnittstelle nicht eth0 ist, ersetze eth0 im vorherigen Befehl durch die primäre Netzwerkschnittstelle. Führe den folgenden Befehl aus, um die primäre Schnittstelle zu finden:

    netstat -i
  2. Führe den folgenden Befehl aus, um die Anzahl der gesendeten DNS-Abfragen zu zählen:

    tcpdump  -r <file_name.pcap> -nn dst port 53 | awk -F " " '{ print $1 }' | cut -d"." -f1 | uniq -c

Traffic Mirroring verwenden

Wenn du tcpdump nicht verwenden kannst, verwende Traffic Mirroring, um festzustellen, ob DNS-Abfragen gedrosselt werden.

Hinweis: Traffic Mirroring ist für Nitro-basierte Instances und bestimmte nicht auf Nitro basierende Instance-Typen verfügbar. Für Traffic Mirroring fallen Gebühren an.

Gehe wie folgt vor, um Datenverkehrsdaten zu erfassen und zu analysieren:

  1. Erfülle die Voraussetzungen für Traffic Mirroring.
  2. Erstelle ein Ziel für das Traffic Mirroring. Vergewissere dich, dass die Ziel-Netzwerkschnittstelle oder der Network Load Balancer eingehenden Datenverkehr auf Port UDP 4789 zulässt.
  3. Erstelle einen Filter für das Traffic Mirroring. Stelle bei den Filtereinstellungen sicher, dass amazon-dns für Netzwerkdienste – Option aktiviert ist.
  4. Erstelle eine Sitzung für das Traffic Mirroring.

Traffic Mirroring erfasst den gespiegelten Datenverkehr und speichert ihn auf dem Ziel für das Traffic Mirroring.

Hinweis: Traffic Mirroring ist ein Live-Datenstrom. Um die gespiegelten Pakete auf dem Ziel zu erfassen und in einer PCAP-Datei zu speichern, erfasse den Datenverkehr auf dem UDP-Port 4789.

Benutze Wireshark

Führe die folgenden Schritte aus:

  1. Erfassten Datenverkehr in Wireshark öffnen Hinweis: Um Wireshark herunterzuladen, besuche die Seite Download auf der Wireshark-Website.
  2. Wähle die Registerkarte Statistik.
  3. Wähle I/O-Diagramm aus und deaktiviere alle Optionen.
  4. Verwende unter Anzeigefilter den VXLAN Network Identifier und die DNS-Abfrage, um einen Filter hinzuzufügen. Das QR-Feld im DNS-Header ist „0“. Wenn der VXLAN Network Identifier beispielsweise 16777215 lautet, lautet der Anzeigefilter für das Diagramm (vxlan.vni == 16777215) && (dns.flags.response == 0).
  5. Sieh dir das Diagramm an. Bleibt er bei etwa 1024 PPS, erfolgt eine Drosselung der gespiegelten Quelle.

Metrik der Treiber-Netzwerkleistung des ENA überprüfen

Wenn auf der EC2-Instance eine der folgenden Versionen des Treibers des Elastic Network Adapter (ENA) ausgeführt wird, überprüfe die Echtzeit-Metriken auf DNS-Drosselung:

  • Linux: 2.2.10 oder später
  • Windows: 2.2.2.0 oder später

Überprüfe die Metrik linklocal_allowance_exceeded, um die Anzahl der verworfenen Pakete zu ermitteln, weil der Datenverkehr das PPS-Kontingent für die folgenden lokalen Services überschritten hat:

  • Amazon VPC DNS Service
  • Instance Metadata Service (IMDS)
  • Amazon Time Sync Service

Überprüfe die Metrik in mehreren Intervallen, um festzustellen, ob die Anzahl steigt. Die Metrik linklocal_allowance_exceeded ist seit dem letzten Neustart des Treibers aufgrund von Stopp und Start oder Neustart kumulativ. Es gibt nur ein Problem, wenn die Metrik steigt.

Führe den folgenden Befehl für eth0 aus, um den Wert linklocal_allowance_exceeded abzurufen:

ethtool -S eth0 | grep link

Für Instances mit der Schnittstelle ens5:

ethtool -S ens5 | grep link

Probleme mit der DNS-Drosselung korrigieren

Wenn die DNS-Drosselung die Fehler verursacht, ergreife eine der folgenden Maßnahmen, um das Problem zu beheben:

Ähnliche Informationen

Sollkonzepte für das Traffic Mirroring verstehen

Traffic Mirroring verwenden, um den Netzwerkdatenverkehr zu kopieren

AWS OFFICIALAktualisiert vor 2 Monaten