Wie kann ich feststellen, ob meine DNS-Abfragen an den von Amazon bereitgestellten DNS-Server aufgrund einer VPC-DNS-Drosselung fehlschlagen?

Lesedauer: 4 Minute
0

Meine DNS-Abfragen an den von Amazon bereitgestellten DNS-Server schlagen fehl oder es tritt eine Zeitüberschreitung auf. Schlagen die DNS-Abfragen meiner Instance aufgrund der VPC-DNS-Drosselung fehl?

Kurzbeschreibung

Von Amazon bereitgestellte DNS-Server sind auf einen Grenzwert von 1024 Paketen pro Sekunde pro elastischer Netzwerkschnittstelle beschränkt. Von Amazon bereitgestellte DNS-Server lehnen jeglichen Datenverkehr ab, der diesen Grenzwert überschreitet.

VPC-Flow-Protokolle erfassen nicht den Datenverkehr, den Ihre Anwendung an die von Amazon bereitgestellten DNS-Server sendet. Sie können Paketerfassungen oder Traffic Mirroring verwenden, um die Ursache der DNS-Abfragefehler zu ermitteln.

Hinweis: Die Abfrageprotokollierung von Amazon Route 53 erfasst nur den Datenverkehr, der den Resolver VPC.2 (AmazonProvidedDNS) erreicht. DNS-Abfragen werden jedoch auf der Ebene der elastischen Netzwerkschnittstelle gedrosselt. Daher werden gedrosselte Abfragen nicht in der Abfrageprotokollierung angezeigt.

Lösung

Verwenden Sie zunächst eine der folgenden Methoden, um die Ursache von DNS-Abfragefehlern zu ermitteln. Wenn Sie dann feststellen, dass die Ursache eine DNS-Drosselung ist, verwenden Sie eine der folgenden empfohlenen Lösungen.

Ermitteln Sie die Ursache der DNS-Abfragefehler

Variante 1: Verwendung von tcpdump (nur Linux)

1.    Verwenden Sie den folgenden Befehl, um rotierende Paketerfassungen auf Ihrer EC2-Instance vorzunehmen. Der folgende Befehl erfasst die ersten 350 Byte des Pakets und speichert 20 Dateien mit jeweils 100 MB, während die alten Paketerfassungen überschrieben werden.

sudo tcpdump -i eth0 -s 350 -C 100 -W 20 -w /var/tmp/$(curl http://169.254.169.254/latest/meta-data/instance-id).$(date +%Y-%m-%d:%H:%M:%S).pcap

2.    Führen Sie den folgenden Linux-Befehl aus, um die Anzahl der gesendeten DNS-Abfragen zu ermitteln.

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

3.    Wenn die Anzahl der DNS-Abfragen größer oder gleich 1024 pro Sekunde ist, werden alle weiteren Abfragen gedrosselt.

Variante 2: Verwendung von Traffic Mirroring

Wenn es in Ihrem Anwendungsfall nicht möglich ist, tcpdump zu verwenden, können Sie Traffic Mirroring nutzen, um festzustellen, ob DNS-Abfragen gedrosselt werden.

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

Erfassen Sie zunächst die Datenverkehrsdaten:

1.    Erfüllen Sie die Voraussetzungen für Traffic Mirroring.

2.    Erstellen Sie ein Ziel für das Traffic Mirroring. Vergewissern Sie sich, dass die elastische Ziel-Netzwerkschnittstelle oder der Network Load Balancer eingehenden Datenverkehr auf Port UDP 4789 zulässt.

3.    Erstellen Sie einen Filter für das Traffic Mirroring. Stellen Sie bei den Filtereinstellungen sicher, dass amazon-dns für Netzwerkdienste – Option aktiviert ist.

4.    Erstellen Sie eine Sitzung für das Traffic Mirroring. Nachdem Sie Traffic Mirroring konfiguriert haben, wird der gespiegelte Datenverkehr gesammelt und auf dem Ziel für das Traffic Mirroring gespeichert.

Hinweis: Traffic Mirroring ist ein Live-Datenstrom. Um die gespiegelten Pakete, die am Ziel ankommen, zu erfassen und in einer PCAP-Datei zu speichern, erfassen Sie den Datenverkehr über den UDP-Port 4789.

Analysieren Sie dann die erfassten Daten mit Wireshark:

1.    Öffnen Sie den erfassten Datenverkehr in Wireshark.

2.    Wählen Sie die Registerkarte Statistik.

3.    Wählen Sie das I/O-Diagramm aus und deaktivieren Sie alle Optionen.

4.    (Nur für Linux) Fügen Sie unter Anzeigefilter einen Filter hinzu, der den VXLAN Network Identifier und das DNS-Abfrageflag verwendet. Wenn der VXLAN Network Identifier beispielsweise 53 und das DNS-Abfrageflag 0x0100 ist, lautet der Anzeigefilter für das Diagramm (vxlan.vni == 53) && (dns.flags == 0x0100).

5.    Prüfen Sie anhand des Diagramms, ob die abgeflachte Linie um 1024 liegt (den Grenzwert für Pakete pro Sekunde des von Amazon bereitgestellten DNS-Servers). Wenn das Diagramm um diesen Wert herum abflacht, findet eine DNS-Drosselung auf der gespiegelten Quelle statt.

Variante 3: Messwerte der Treiber-Netzwerkleistung des Elastic Network Adapters (ENA)

Wenn auf Ihrer EC2-Instance eine der folgenden Versionen des ENA-Treibers ausgeführt wird, können Sie die Echtzeit-Messwerte für die DNS-Drosselung mithilfe des Messwerts linklocal_allowance_exceeded überprüfen:

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

Der Messwert linklocal_allowance_exceeded gibt die Anzahl der Pakete an, die aufgrund der Überschreitung der zulässigen PPS-Rate für lokale Dienste geformt und verworfen wurden. Beispiele für lokale Dienste sind Amazon VPC DNS Service, Instance Metadata Service (IMDS) und Amazon Time Sync Service. Sie können diese Messwerte in mehreren Intervallen überprüfen, um zu beobachten, ob die Anzahl steigt. Da dieser Messwert ab dem letzten Neustart des Treibers akkumuliert wird (normalerweise aufgrund des Stoppens und Startens oder des Neustarts der Instance), ist dieser Messwert nur aussagekräftig, wenn er ansteigt.

Führen Sie den folgenden Befehl aus, um den Messwert linklocal_allowance_exceeded abzurufen:

ethtool -S eth0

Beheben von Problemen mit der DNS-Drosselung

Wenn Sie feststellen, dass die Ursache Ihrer DNS-Fehler die DNS-Drosselung ist, können Sie folgendermaßen vorgehen:


Ähnliche Informationen

Kontingente und Überlegungen zum Traffic Mirroring

Arbeiten mit Traffic Mirroring

Überwachen der Netzwerkleistung einer EC2-Instance

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren