1. Objectifs

Ce TP nous servira de première approche à nos deux premiers services réseaux : le DHCP et le DNS

Il comporte 4 étapes : 

  1. Observation du DHCP sur base d’une trace
  2. Observation du DNS sur base d’une trace : Découverte des échanges DNS et des champs d’en-tête du protocole.  
  3. Résolveur DNS : Notion de résolveur DNS et observation de la configuration des résolveurs sur les machines terminales.  
  4. L’outil Dig : L’outil dig permet de faire des requêtes DNS “à la main”, afin d’observer le fonctionnent du DNS et de débugger des problèmes de configuration ou de fonctionnement DNS.  

A la fin de ce TP, vous devrez : 

  • Connaître les détails d’un échange DHCP DORA
  • Connaître les champs d’en-tête DNS et la notion de Resource Records
  • Comprendre le rôle d’un résolveur DNS et pouvoir afficher (voire modifier) la configuration du résolveur sur un PC Windows ou Linux
  • être capable d’effectuer des requêtes dig de différents types et d’expliquer les résultats obtenus, afin d’utiliser cet outil de manière efficace en cas de troubleshooting

2. DHCP : Analyse d’un échange DORA

Vous trouverez ici une trace Wireshark capturant un échange d’allocation d’adresse IP entre un client et un serveur DHCP.  

Cette trace ne contient que des échanges DHCP, mais gardez en tête que pour filtrer le DHCP dans Wireshark, il faut utiliser le filtre “bootp” (pourquoi?).

Analysez la trace pour répondre aux questions suivantes : 

  1. Quelles sont les ports utilisés?  S’agit-il de tcp ou udp? 
  2. Pour chacun des 4 échanges, indiquez : 
    • L’adresse IP source et l’adresse IP destination
    • L’adresse MAC source et l’adresse MAC destination
    • La raison de l’utilisation d’adresses unicast ou broadcast
  3. Est-ce que le client avait une adresse IP préalable, qu’il souhaite éventuellement récupérer?  Justifiez.  
  4. Quelle adresse IP est attribuée au client?  Pour combien de temps?
  5. Est-ce que le client souhaite obtenir d’autres informations qu’une adresse IP? 
  6. Outre l’adresse IP, quelles informations le serveur transmet-il au client?

    3. DNS : Premières observations

Le DNS permet la résolution de noms de domaines en adresses IP.  Il se base sur une organisation hiérarchique des noms de domaine pour répartir l’information sur un ensemble de serveurs DNS.  Dans ce TP, nous allons explorer les bases du DNS à travers l’observation de configuration DNS d’hôtes, d’observation d’échanges DNS avec Wireshark, et enfin, en expérimentant par nous-même des requêtes DNS via l’outil dig.  

Certains de ces exercices sont inspirés du livre CNP3

Démarrez Wireshark, puis créez du trafic réseau vers Internet, typiquement via votre navigateur Web.  Filtrez pour afficher le trafic DNS. Pour les requêtes et les réponses affichées, analysez-les et essayez d’expliquer ce que vous observez, dont notamment : 

  1. Quels sont les champs de l’en-tête DNS? 
  2. Le DNS fonctionne-t-il au dessus de TCP ou d’UDP? Pouvez-vous expliquer pourquoi?
  3. Quel(s) numéro(s) de port sont utilisés par le DNS? 
  4. A qui est envoyée la requête DNS? Dans quel domaine se situe cette machine? Observez les destinations de plusieurs requêtes DNS.  Qu’en déduisez-vous?

4. Résolveur DNS

A l’exercice précédent, vous avez observé que les échanges DNS s’effectuent avec un serveur DNS précis.  

  1. Comment votre machine sait-elle quel serveur DNS contacter ? Pouvez-vous modifier cette configuration, sur Windows? Et sur Linux?  
  2. A votre avis, quand et comment votre machine a-t-elle reçu cette information? 
  3. Sur Linux, observez les fichiers /etc/hosts, /etc/host.conf et /etc/resolv.conf.  A quoi sert chaque fichier? Essayez d’expliquer chaque ligne observée.
  4. Sur Linux, modifiez la configuration DNS pour utiliser le serveur DNS public de Cloudfare, à l’IP 1.1.1.1.  Vérifiez le changement en observant une nouvelle requête avec Wireshark. ATTENTION : Cela ne fonctionne sans doute pas sur les PC Ephec, il est recommandé d’utiliser votre portable si vous en avez un.  Le firewall de l’Ephec bloque le trafic DNS vers les résolveurs autres que le résolveur officiel.  Ce n’est par contre pas le cas sur Eduroam.

5. L’outil Dig

Le logiciel Dig permet de faire des requêtes DNS à un résolveur DNS. Dig est typiquement utilisé comme suit :

dig @<serveur> -t <type> <nom>

avec : 

  • <serveur>, l’adresse IP ou le nom d’un serveur de nom ou d’un résolveur,
  • <type>, le type de Resource Record demandé (A pour une adresse IPv4, AAAA pour IPv6, MX pour le serveur mail,
  • <nom>, le nom de domaine pleinement qualifié (FQDN) de la machine dont on cherche l’IP.

Pour les exercices suivants, il est recommandé de capturer le trafic avec Wireshark afin d’observer les requêtes DNS échangées.  

  1. Sur une machine Linux, ouvrez un terminal, et essayez d’envoyer une requête DNS pour obtenir l’adresse IP (v4 et v6) des serveurs web www.ephec.be, www.facebook.com, www.google.be, www.whitehouse.gov, ainsi que l’adresse IP du serveur mail de ephec.be. Essayez d’expliquer chaque ligne de la réponse affichée par le logiciel. Quel est le résolveur DNS qui vous fournit la réponse? Les informations sont-elles véhiculées par dessus TCP ou par dessus UDP?
  2. Quelle réponse obtenez-vous lorsque vous invoquez Dig sans nom de domaine en paramètre?
  3. Par défaut, dig interroge le résolveur configuré sur la machine. Vous pouvez également interroger n’importe quel serveur de noms directement (le mode d’emploi de dig est disponible en tapant man dig dans la ligne de commande).  Interrogez récursivement les serveurs de noms nécessaires pour obtenir l’adresse IP de l’hôte www.ephec.be. Indiquez à chaque fois, pour chaque domaine et sous-domaine, le nom du serveur DNS qui a autorité. 
  4. Le protocole DNS peut être utilisé au dessus d’UDP ou de TCP. Beaucoup de serveurs DNS préfèrent utiliser UDP car il consomme moins de ressources sur le serveur. Cependant, TCP est utile lorsqu’une réponse de taille conséquente est attendue. Vous pouvez forcer dig à utiliser tcp en utilisant dig +tcp. Utilisez UDP puis TCP pour faire une requête à un des serveurs racine. Quel protocole est le plus rapide? (Conseil : Utilisez la commande time)