Dépannage des requêtes DNS dans Tshark

WiresharkWiresharkBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à résoudre les problèmes de requêtes DNS à l'aide de l'utilitaire Tshark de Wireshark grâce à des exercices pratiques. Vous allez capturer le trafic DNS avec des filtres "udp port 53", analyser les requêtes à l'aide de filtres d'affichage tels que "dns.qry.name" et examiner les statistiques de temporisation avec l'option "dns,tree".

Le laboratoire vous guide à travers des techniques pratiques pour isoler les paquets DNS, visualiser la temporisation des requêtes et extraire des informations détaillées sur les paquets avec le drapeau "-V". En terminant ces exercices, vous développerez les compétences essentielles pour diagnostiquer les problèmes DNS en utilisant des méthodes professionnelles d'analyse de paquets.


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{{"Dépannage des requêtes DNS dans Tshark"}} wireshark/packet_capture -.-> lab-548938{{"Dépannage des requêtes DNS dans Tshark"}} wireshark/display_filters -.-> lab-548938{{"Dépannage des requêtes DNS dans Tshark"}} wireshark/capture_filters -.-> lab-548938{{"Dépannage des requêtes DNS dans Tshark"}} wireshark/packet_analysis -.-> lab-548938{{"Dépannage des requêtes DNS dans Tshark"}} wireshark/commandline_usage -.-> lab-548938{{"Dépannage des requêtes DNS dans Tshark"}} end

Capturer le trafic DNS avec -f "udp port 53"

Dans cette étape, vous apprendrez à capturer le trafic DNS à l'aide du filtre de capture de Wireshark. Le DNS (Domain Name System, Système de Nommage de Domaines) est comme le carnet d'adresses d'Internet, traduisant les noms de domaine lisibles par l'homme (comme example.com) en adresses IP lisibles par les machines. La plupart des requêtes DNS utilisent le port UDP 53 car elles sont petites et rapides, tandis que les réponses plus volumineuses peuvent utiliser le TCP.

  1. Tout d'abord, ouvrez un terminal dans votre machine virtuelle LabEx si vous ne l'avez pas déjà fait. Toutes les commandes seront exécutées dans le répertoire de travail par défaut ~/project. C'est là que nous allons enregistrer nos fichiers de capture.

  2. Lancez Wireshark depuis le terminal avec la commande suivante :

wireshark &

Le symbole & exécute Wireshark en arrière - plan, vous permettant de continuer à utiliser le terminal tandis que Wireshark reste ouvert. Cela est utile lorsque vous avez besoin d'exécuter d'autres commandes pendant votre analyse réseau.

  1. Dans l'interface principale de Wireshark :

    • Sélectionnez votre interface réseau active (généralement eth1). Cela indique à Wireshark quelle connexion réseau surveiller.
    • Dans le champ de filtre de capture, entrez : udp port 53. Ce filtre garantit que Wireshark ne capture que le trafic DNS, réduisant le bruit provenant d'autres activités réseau.
    • Cliquez sur l'icône de requin pour commencer à capturer les paquets. Vous verrez l'interface commencer à afficher l'activité réseau.
  2. Pour générer un peu de trafic DNS à des fins de test, ouvrez un autre terminal et exécutez :

nslookup example.com

Cette commande demande à votre système de rechercher l'adresse IP de "example.com", créant le trafic DNS que nous voulons capturer. Imaginez - le comme un appel de test pour vérifier si notre surveillance fonctionne.

  1. Dans Wireshark, vous devriez maintenant voir les paquets DNS capturés. Ils apparaîtront sous forme de lignes dans la fenêtre principale, généralement montrant la requête et la réponse. Arrêtez la capture en cliquant sur le bouton carré rouge lorsque vous avez vu suffisamment de trafic.

  2. Enregistrez le fichier de capture pour une analyse ultérieure :

    • Allez dans Fichier → Enregistrer sous
    • Enregistrez - le sous le nom dns_capture.pcapng dans votre répertoire ~/project. Ce format de fichier conserve toutes les données de paquet d'origine pour un examen détaillé.

Points clés à comprendre :

  • -f "udp port 53" est un filtre de capture qui enregistre uniquement le trafic DNS, similaire à la mise en place d'un microphone spécialisé qui n'entend que les conversations DNS.
  • Le DNS utilise principalement le port UDP 53 car il est efficace pour les petites requêtes, tandis que le TCP (Transmission Control Protocol, Protocole de Contrôle de Transmission) est utilisé pour les réponses plus volumineuses qui nécessitent une livraison fiable.
  • Le fichier de capture contient les paquets réseau bruts dans leur forme d'origine, que nous analyserons dans les étapes suivantes pour comprendre exactement ce qui se passe lors de la résolution DNS.

Filtrer les requêtes avec -Y "dns.qry.name"

Dans cette étape, vous apprendrez à filtrer les requêtes DNS dans Wireshark à l'aide de filtres d'affichage. Le DNS (Domain Name System, Système de Nommage de Domaines) est comme le carnet d'adresses d'Internet, traduisant les noms de domaine lisibles par l'homme en adresses IP lisibles par les machines. Lors de la résolution de problèmes réseau, l'examen du trafic DNS peut révéler des indices importants.

Nous allons nous concentrer sur le champ dns.qry.name, qui montre spécifiquement les noms de domaine demandés dans les requêtes DNS. Cela est particulièrement utile lorsque vous avez besoin d'examiner le trafic lié à des sites web ou des services spécifiques à partir de la capture que nous avons créée à l'étape précédente.

  1. Tout d'abord, ouvrons le fichier de capture que nous avons enregistré précédemment dans Wireshark. Le symbole & à la fin exécute la commande en arrière - plan afin que vous puissiez continuer à utiliser le terminal :
wireshark ~/project/dns_capture.pcapng &
  1. Dans la barre de filtre d'affichage de Wireshark (le champ vide juste en dessous de la barre d'outils), entrez exactement ce filtre pour voir uniquement les requêtes DNS pour "example.com" :
dns.qry.name == "example.com"

Ce filtre d'égalité stricte (==) affichera uniquement les paquets où le domaine interrogé correspond exactement à "example.com".

  1. Pour voir toutes les requêtes DNS, quelle que soit le domaine demandé, utilisez simplement le nom du champ seul :
dns.qry.name

Cela affiche tous les paquets qui contiennent des noms de requêtes DNS, ce qui vous aide à comprendre quels domaines sont recherchés sur votre réseau.

  1. Pour avoir une vue plus complète montrant à la fois les requêtes DNS (demandes) et les réponses, utilisez ce filtre qui vérifie le drapeau de réponse DNS :
dns.flags.response == 0 || dns.flags.response == 1

Ici, dns.flags.response == 0 affiche les requêtes (demandes), tandis que dns.flags.response == 1 affiche les réponses.

  1. Parfois, vous pourriez vouloir trouver toutes les requêtes liées à une certaine organisation ou service. Essayez de filtrer les correspondances partielles de domaine en utilisant l'opérateur "contains" :
dns.qry.name contains "example"

Cela correspondra à tout domaine contenant "example", comme "example.com", "test.example.org" ou "example.net".

Points clés à comprendre :

  • -Y est l'option de filtre d'affichage de Wireshark (équivalent à taper dans la barre de filtre)
  • dns.qry.name est un champ spécifique dans les paquets DNS qui contient le nom de domaine interrogé
  • Les filtres d'affichage vous aident à vous concentrer sur des modèles de trafic spécifiques en masquant les paquets non liés
  • Les filtres peuvent utiliser différents opérateurs de comparaison :
    • == pour les correspondances exactes
    • != pour l'exclusion
    • contains pour les correspondances partielles
  • Le protocole DNS inclut des drapeaux pour distinguer entre les requêtes (response == 0) et les réponses (response == 1)

Analyser les délais avec -z dns,tree

Le DNS (Domain Name System, Système de Nommage de Domaines) est comme le carnet d'adresses d'Internet, traduisant les noms de domaine lisibles par l'homme en adresses IP lisibles par les machines. Lors de la résolution de problèmes réseau, l'analyse des temps de réponse DNS peut révéler des goulots d'étranglement de performance. Dans cette étape, nous allons utiliser la fonction de statistiques intégrée à Wireshark avec l'option -z dns,tree pour mesurer la rapidité avec laquelle les serveurs DNS répondent aux requêtes.

  1. Avant de commencer, assurez - vous que Wireshark n'est pas en cours d'exécution. Nous allons analyser un fichier de trafic DNS pré - capturé depuis le terminal. Le symbole & à la fin permet de continuer à utiliser le terminal tandis que Wireshark s'exécute :
wireshark -z dns,tree ~/project/dns_capture.pcapng &
  1. Une nouvelle fenêtre intitulée "DNS Statistics" s'ouvrira, affichant trois informations principales sous forme d'arbre :

    • Toutes les requêtes DNS et leurs réponses correspondantes
    • Le temps que chaque requête a mis pour obtenir une réponse
    • La fréquence à laquelle chaque domaine a été demandé
  2. Examinons attentivement les colonnes de statistiques :

    • "Count" indique le nombre de fois que votre système a interrogé chaque domaine
    • "Average" montre le temps de réponse typique pour chaque domaine
    • "Min" et "Max" révèlent les meilleurs et les pires temps de réponse
  3. Pour voir des données plus intéressantes dans notre analyse, générons de nouvelles requêtes DNS. Ouvrez une nouvelle fenêtre de terminal et exécutez ces commandes de recherche courantes :

nslookup google.com
nslookup labex.io
  1. Après avoir exécuté ces commandes, revenez à la fenêtre "DNS Statistics" et cliquez sur "Reload" pour mettre à jour les statistiques avec les nouvelles requêtes que vous venez de générer.

Concepts clés à retenir :

  • La commande -z dns,tree active le mode d'analyse DNS spécialisé de Wireshark
  • Les mesures de temps de réponse aident à identifier les serveurs DNS lents ou les délais réseau
  • La vue en arbre regroupe les requêtes connexes pour faciliter l'analyse
  • Toujours recharger le fichier de capture pour voir les dernières statistiques après une nouvelle activité DNS

Afficher les résultats avec -V

Dans cette étape, nous allons explorer comment examiner en détail les paquets DNS en utilisant le mode verbeux de Wireshark avec l'option -V. Lors de la résolution de problèmes DNS, voir tous les détails du protocole est essentiel pour comprendre exactement ce qui se passe dans votre trafic réseau.

  1. Avant de commencer, assurez - vous de fermer toutes les fenêtres Wireshark ouvertes pour éviter toute confusion. Ensuite, exécutez cette commande pour ouvrir votre fichier de capture avec tous les détails du protocole :
wireshark -V -r ~/project/dns_capture.pcapng &

Le drapeau -V indique à Wireshark d'afficher une sortie verbeuse, montrant toutes les informations de protocole disponibles plutôt que simplement le résumé de base des paquets.

  1. Dans l'interface Wireshark, concentrez - vous sur le panneau central appelé "Packet Details". Voici comment examiner les informations DNS :

    • Cliquez sur la flèche à côté de "Domain Name System" pour l'étendre
    • Vous verrez la structure complète du message DNS, y compris :
      • S'il s'agit d'une requête ou d'une réponse
      • Les identifiants de transaction uniques qui associent les demandes aux réponses
      • Les indicateurs d'état indiquant le succès ou les erreurs
      • Tous les enregistrements de ressources échangés
  2. Lorsque vous examinez un paquet de requête DNS (généralement envoyé du client au serveur), prêtez une attention particulière à :

    • Type de requête : Cela montre le type d'enregistrement demandé (A pour IPv4, AAAA pour IPv6, MX pour les serveurs de messagerie)
    • Classe de requête : Presque toujours "IN" pour la classe Internet
    • Identifiant de transaction : Un nombre aléatoire qui permet de faire correspondre cette requête avec sa réponse
  3. Pour les paquets de réponse DNS (du serveur au client), vérifiez ces champs importants :

    • Code de réponse : "0" signifie qu'aucune erreur ne s'est produite
    • Nombre de réponses : Combien d'enregistrements ont été renvoyés
    • Valeurs TTL : Combien de temps ces réponses DNS peuvent être mises en cache
    • Données réelles : Comme les adresses IP lors de la requête d'enregistrements A
  4. Pour enregistrer cette analyse détaillée pour une consultation ultérieure ou pour la partager avec vos collègues, exécutez cette commande :

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

Cela crée un fichier texte contenant toute la sortie verbeuse de votre capture.

Concepts clés à retenir :

  • L'option -V révèle la décomposition complète du protocole de chaque paquet
  • Vous pouvez voir chaque couche de la pile de protocole DNS
  • Ce niveau de détail est nécessaire pour diagnostiquer les problèmes DNS complexes
  • Combinez - le avec des filtres (comme dns) pour vous concentrer sur des paquets spécifiques tout en conservant tous les détails

Résumé

Dans ce laboratoire, vous avez appris à résoudre les problèmes liés aux requêtes DNS en utilisant l'utilitaire Tshark de Wireshark. L'exercice a montré comment capturer le trafic DNS avec des filtres sur le port UDP 53 et analyser les requêtes grâce à des filtres d'affichage ciblés tels que dns.qry.name.

Vous avez pratiqué la génération de trafic de test avec nslookup et la sauvegarde des captures pour analyse, ce qui vous a permis de mieux comprendre le comportement du protocole DNS et les puissantes capacités de filtrage de Wireshark pour isoler les requêtes de domaine spécifiques. Ces compétences sont essentielles pour la résolution de problèmes réseau et les investigations liées au DNS.