DNS-Abfragen in Tshark analysieren und Fehler beheben

WiresharkWiresharkBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, DNS-Abfragen mithilfe der Tshark-Utility von Wireshark durch praktische Übungen zu debuggen. Sie erfassen DNS-Verkehr mit Filtern wie "udp port 53", analysieren Abfragen mithilfe von Anzeigefiltern wie "dns.qry.name" und untersuchen Zeitstatistiken mit der Option "dns,tree".

Das Lab führt Sie durch praktische Techniken zur Isolierung von DNS-Paketen, zur Visualisierung der Abfragezeiten und zur Extraktion detaillierter Paketinformationen mit der Option "-V". Durch die Durchführung dieser Übungen entwickeln Sie die wesentlichen Fähigkeiten zur Diagnose von DNS-Problemen mithilfe professioneller Paketanalyseverfahren.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/capture_filters("Capture Filters") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/interface -.-> lab-548938{{"DNS-Abfragen in Tshark analysieren und Fehler beheben"}} wireshark/packet_capture -.-> lab-548938{{"DNS-Abfragen in Tshark analysieren und Fehler beheben"}} wireshark/display_filters -.-> lab-548938{{"DNS-Abfragen in Tshark analysieren und Fehler beheben"}} wireshark/capture_filters -.-> lab-548938{{"DNS-Abfragen in Tshark analysieren und Fehler beheben"}} wireshark/packet_analysis -.-> lab-548938{{"DNS-Abfragen in Tshark analysieren und Fehler beheben"}} wireshark/commandline_usage -.-> lab-548938{{"DNS-Abfragen in Tshark analysieren und Fehler beheben"}} end

Erfassen von DNS-Verkehr mit -f "udp port 53"

In diesem Schritt lernen Sie, wie Sie DNS-Verkehr mithilfe des Erfassungsfilters von Wireshark erfassen. DNS (Domain Name System) ist wie das Telefonbuch des Internets und übersetzt menschenlesbare Domainnamen (z. B. example.com) in maschinenlesbare IP-Adressen. Die meisten DNS-Abfragen verwenden UDP-Port 53, da sie klein und schnell sind, während größere Antworten möglicherweise TCP verwenden.

  1. Öffnen Sie zunächst ein Terminal in Ihrer LabEx-VM, falls Sie dies noch nicht getan haben. Alle Befehle werden im Standardarbeitsverzeichnis ~/project ausgeführt. Hier speichern wir unsere Erfassungsdateien.

  2. Starten Sie Wireshark aus dem Terminal mit dem folgenden Befehl:

wireshark &

Das &-Symbol startet Wireshark im Hintergrund, sodass Sie weiterhin das Terminal verwenden können, während Wireshark geöffnet bleibt. Dies ist nützlich, wenn Sie während Ihrer Netzwerkanalyse andere Befehle ausführen müssen.

  1. In der Hauptschnittstelle von Wireshark:

    • Wählen Sie Ihre aktive Netzwerkschnittstelle aus (normalerweise eth1). Dies teilt Wireshark mit, welche Netzwerkverbindung überwacht werden soll.
    • Geben Sie im Erfassungsfilterfeld ein: udp port 53. Dieser Filter stellt sicher, dass Wireshark nur DNS-Verkehr erfasst und reduziert die Störung durch andere Netzwerkaktivitäten.
    • Klicken Sie auf das Hai-Fin-Symbol, um die Paketerfassung zu starten. Sie sehen, dass die Schnittstelle beginnt, Netzwerkaktivitäten anzuzeigen.
  2. Um etwas DNS-Verkehr zum Testen zu generieren, öffnen Sie ein anderes Terminal und führen Sie aus:

nslookup example.com

Dieser Befehl fordert Ihr System auf, die IP-Adresse für "example.com" aufzulösen und erzeugt so den DNS-Verkehr, den wir erfassen möchten. Stellen Sie sich vor, Sie würden einen Testanruf tätigen, um zu überprüfen, ob unsere Überwachung funktioniert.

  1. In Wireshark sollten Sie jetzt erfasste DNS-Pakete sehen. Diese werden als Zeilen im Hauptfenster angezeigt und zeigen normalerweise die Abfrage und die Antwort. Stoppen Sie die Erfassung, indem Sie auf die rote Quadrat-Schaltfläche klicken, wenn Sie genug Verkehr gesehen haben.

  2. Speichern Sie die Erfassungsdatei für eine spätere Analyse:

    • Gehen Sie zu Datei → Speichern unter
    • Speichern Sie sie als dns_capture.pcapng in Ihrem ~/project-Verzeichnis. Dieses Dateiformat bewahrt alle ursprünglichen Paketdaten für eine detaillierte Untersuchung auf.

Wichtige Punkte zum Verständnis:

  • -f "udp port 53" ist ein Erfassungsfilter, der nur DNS-Verkehr aufzeichnet, ähnlich wie das Einrichten eines speziellen Mikrofons, das nur DNS-Gespräche hört.
  • DNS verwendet hauptsächlich UDP-Port 53, da es für kleine Abfragen effizient ist, während TCP (Transmission Control Protocol) für größere Antworten verwendet wird, die eine zuverlässige Zustellung erfordern.
  • Die Erfassungsdatei enthält Roh-Netzwerkpakete in ihrer ursprünglichen Form, die wir in späteren Schritten analysieren, um genau zu verstehen, was während der DNS-Auflösung passiert.

Filtern von Abfragen mit -Y "dns.qry.name"

In diesem Schritt lernen Sie, wie Sie DNS-Abfragen in Wireshark mithilfe von Anzeigefiltern filtern. DNS (Domain Name System) ist wie das Telefonbuch des Internets und übersetzt menschenlesbare Domainnamen in maschinenlesbare IP-Adressen. Beim Beheben von Netzwerkproblemen kann die Untersuchung des DNS-Verkehrs wichtige Hinweise liefern.

Wir konzentrieren uns auf das Feld dns.qry.name, das speziell die in DNS-Abfragen angeforderten Domainnamen anzeigt. Dies ist besonders nützlich, wenn Sie den Verkehr im Zusammenhang mit bestimmten Websites oder Diensten aus der im vorherigen Schritt erstellten Erfassung untersuchen müssen.

  1. Zunächst öffnen wir die zuvor in Wireshark gespeicherte Erfassungsdatei. Das & am Ende führt den Befehl im Hintergrund aus, sodass Sie weiterhin das Terminal verwenden können:
wireshark ~/project/dns_capture.pcapng &
  1. Geben Sie in der Anzeigefilterleiste von Wireshark (dem leeren Feld direkt unter der Symbolleiste) diesen genauen Filter ein, um nur DNS-Abfragen für "example.com" anzuzeigen:
dns.qry.name == "example.com"

Dieser strikte Gleichheitsfilter (==) zeigt nur Pakete an, bei denen der abgefragte Domainname exakt mit "example.com" übereinstimmt.

  1. Um alle DNS-Abfragen anzuzeigen, unabhängig davon, welcher Domainname angefordert wird, verwenden Sie einfach den Feldnamen allein:
dns.qry.name

Dies zeigt alle Pakete an, die DNS-Abfragenamen enthalten und hilft Ihnen zu verstehen, welche Domains in Ihrem Netzwerk aufgelöst werden.

  1. Um eine vollständige Ansicht zu erhalten, die sowohl DNS-Abfragen (Anfragen) als auch Antworten zeigt, verwenden Sie diesen Filter, der das DNS-Antwortflag überprüft:
dns.flags.response == 0 || dns.flags.response == 1

Hier zeigt dns.flags.response == 0 Abfragen (Anfragen), während dns.flags.response == 1 Antworten anzeigt.

  1. Manchmal möchten Sie möglicherweise alle Abfragen im Zusammenhang mit einer bestimmten Organisation oder einem bestimmten Dienst finden. Versuchen Sie, nach partiellen Domainübereinstimmungen zu filtern, indem Sie den "contains"-Operator verwenden:
dns.qry.name contains "example"

Dies wird alle Domains übereinstimmen, die "example" enthalten, wie "example.com", "test.example.org" oder "example.net".

Wichtige Punkte zum Verständnis:

  • -Y ist die Anzeigefilteroption von Wireshark (entspricht dem Eingeben in die Filterleiste)
  • dns.qry.name ist ein spezielles Feld in DNS-Paketen, das den abgefragten Domainnamen enthält
  • Anzeigefilter helfen Ihnen, sich auf bestimmte Verkehrsmuster zu konzentrieren, indem sie nicht relevante Pakete ausblenden
  • Filter können verschiedene Vergleichsoperatoren verwenden:
    • == für exakte Übereinstimmungen
    • != für Ausschlüsse
    • contains für partielle Übereinstimmungen
  • Das DNS-Protokoll enthält Flags, um zwischen Abfragen (response == 0) und Antworten (response == 1) zu unterscheiden

Analyse der Zeitmessung mit -z dns,tree

DNS (Domain Name System) ist wie das Telefonbuch des Internets und übersetzt menschenlesbare Domainnamen in maschinenlesbare IP-Adressen. Beim Beheben von Netzwerkproblemen kann die Analyse der DNS-Antwortzeiten Leistungsschneckentrapen aufdecken. In diesem Schritt verwenden wir die integrierte Statistikfunktion von Wireshark mit der Option -z dns,tree, um zu messen, wie schnell DNS-Server auf Abfragen antworten.

  1. Stellen Sie vor dem Start sicher, dass Wireshark nicht läuft. Wir werden eine zuvor erfasste DNS-Verkehrsdatei aus dem Terminal analysieren. Das & am Ende lässt Ihr Terminal während des Betriebs von Wireshark nutzbar:
wireshark -z dns,tree ~/project/dns_capture.pcapng &
  1. Ein neues Fenster mit der Bezeichnung "DNS Statistics" wird geöffnet und zeigt in einer Baumstruktur drei Hauptinformationen an:

    • Alle DNS-Abfragen und ihre entsprechenden Antworten
    • Die Zeit, die jede Abfrage benötigte, um eine Antwort zu erhalten
    • Wie oft jeder Domainname angefordert wurde
  2. Untersuchen wir die Statistikspalten sorgfältig:

    • "Count" gibt an, wie oft Ihr System jeden Domainnamen abgefragt hat
    • "Average" zeigt die typische Antwortzeit für jeden Domainnamen
    • "Min" und "Max" zeigen die besten und schlechtesten Antwortzeiten
  3. Um in unserer Analyse interessantere Daten zu sehen, generieren wir frische DNS-Abfragen. Öffnen Sie ein neues Terminalfenster und führen Sie diese gängigen Auflösungsbefehle aus:

nslookup google.com
nslookup labex.io
  1. Nach dem Ausführen dieser Befehle kehren Sie zum Fenster "DNS Statistics" zurück und klicken Sie auf "Reload", um die Statistiken mit den neu generierten Abfragen zu aktualisieren.

Wichtige Konzepte, die Sie sich merken sollten:

  • Der Befehl -z dns,tree aktiviert den speziellen DNS-Analysemodus von Wireshark
  • Die Messung der Antwortzeiten hilft, langsame DNS-Server oder Netzwerklatenzen zu identifizieren
  • Die Baumansicht gruppiert verwandte Abfragen zusammen, um die Analyse zu erleichtern
  • Laden Sie immer die Erfassungsdatei neu, um die neuesten Statistiken nach neuer DNS-Aktivität zu sehen

Anzeigen der Ergebnisse mit -V

In diesem Schritt werden wir untersuchen, wie man DNS-Pakete detailliert mithilfe des ausführlichen Modus von Wireshark mit der Option -V untersucht. Beim Beheben von DNS-Problemen ist es von entscheidender Bedeutung, alle Protokolldetails zu sehen, um genau zu verstehen, was in Ihrem Netzwerkverkehr passiert.

  1. Stellen Sie vor dem Start sicher, dass alle offenen Wireshark-Fenster geschlossen sind, um Verwirrung zu vermeiden. Führen Sie dann diesen Befehl aus, um Ihre Erfassungsdatei mit allen Protokolldetails zu öffnen:
wireshark -V -r ~/project/dns_capture.pcapng &

Das -V-Flag teilt Wireshark mit, ausführliche Ausgabe anzuzeigen, wodurch alle verfügbaren Protokollinformationen angezeigt werden, anstatt nur die grundlegende Paketzusammenfassung.

  1. Im Wireshark-Interface konzentrieren Sie sich auf das mittlere Panel namens "Packet Details". So untersuchen Sie DNS-Informationen:

    • Klicken Sie auf den Pfeil neben "Domain Name System", um es aufzuklappen.
    • Sie sehen die vollständige DNS-Nachrichtenstruktur, einschließlich:
      • Ob es sich um eine Abfrage oder eine Antwort handelt.
      • Eindeutige Transaktions-IDs, die Anfragen mit Antworten verknüpfen.
      • Statusflags, die Erfolg oder Fehler anzeigen.
      • Alle ausgetauschten Ressourceneinträge.
  2. Wenn Sie sich ein DNS-Abfragepaket ansehen (normalerweise von einem Client an einen Server gesendet), achten Sie besonders auf:

    • Abfragetyp: Dies zeigt an, welche Art von Eintrag angefordert wird (A für IPv4, AAAA für IPv6, MX für Mailserver).
    • Abfrageklasse: Fast immer "IN" für Internetklasse.
    • Transaktions-ID: Eine Zufallszahl, die hilft, diese Abfrage mit ihrer Antwort zu verknüpfen.
  3. Bei DNS-Antwortpaketen (vom Server an den Client) überprüfen Sie diese wichtigen Felder:

    • Antwortcode: "0" bedeutet, dass keine Fehler aufgetreten sind.
    • Anzahl der Antworten: Wie viele Einträge zurückgegeben wurden.
    • TTL-Werte: Wie lange diese DNS-Antworten zwischengespeichert werden können.
    • Die eigentlichen Daten: Zum Beispiel IP-Adressen bei der Abfrage von A-Einträgen.
  4. Um diese detaillierte Analyse für eine spätere Überprüfung oder zum Teilen mit Kollegen zu speichern, führen Sie diesen Befehl aus:

tshark -V -r ~/project/dns_capture.pcapng > ~/project/dns_analysis.txt

Dadurch wird eine Textdatei erstellt, die alle ausführlichen Ausgaben Ihrer Erfassung enthält.

Wichtige Konzepte, die Sie sich merken sollten:

  • Die Option -V zeigt die vollständige Protokollaufschlüsselung jedes Pakets an.
  • Sie können jede Ebene des DNS-Protokollstapels sehen.
  • Dieses Maß an Detail ist erforderlich, wenn komplexe DNS-Probleme diagnostiziert werden.
  • Kombinieren Sie es mit Filtern (z. B. dns), um sich auf bestimmte Pakete zu konzentrieren, während Sie die vollständigen Details behalten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie DNS-Abfragen mithilfe der Tshark-Utility von Wireshark beheben können. Die Übung hat gezeigt, wie man DNS-Verkehr mit Filtern für UDP-Port 53 aufzeichnet und Abfragen über gezielte Anzeigefilter wie dns.qry.name analysiert.

Sie haben gelernt, Testverkehr mit nslookup zu generieren und Aufzeichnungen zur Analyse zu speichern. Dadurch haben Sie Einblicke in das Verhalten des DNS-Protokolls und die leistungsstarken Filterfunktionen von Wireshark für die Isolierung spezifischer Domainanfragen gewonnen. Diese Fähigkeiten sind für die Netzwerkfehlerbehebung und DNS-bezogene Untersuchungen unerlässlich.