Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 1414 minIntermédiaire

Dépanner DNS et DHCP : nslookup, dig, ipconfig, Wireshark

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • suivre une méthode de dépannage du bas vers le haut ;
  • choisir le bon outil de résolution et connaître ses pièges ;
  • capturer et filtrer le trafic DNS et DHCP ;
  • relier un symptôme à sa cause la plus probable.

4 exercices corrigés

Dépanner un service réseau, c'est suivre le chemin d'une requête, étape par étape, jusqu'à trouver celle qui échoue, en vérifiant chaque hypothèse par une commande plutôt qu'en devinant. Pour DNS et DHCP, une dizaine de commandes suffit : ipconfig, Resolve-DnsName et nslookup sous Windows, ip, dig et getent sous Linux, tcpdump et Wireshark pour voir ce qui passe vraiment sur le réseau. Ce chapitre donne la méthode, les outils, les pièges des outils eux-mêmes et les symptômes types, puis la déroule sur des cas concrets.

La méthode : du bas vers le haut, une hypothèse à la fois

Devant « Internet ne marche pas » ou « l'intranet est inaccessible », la tentation est de redémarrer quelque chose. Résiste. Suis le chemin :

  1. Reformuler et délimiter. Qui est touché : un poste, un VLAN, tout le monde ? Depuis quand ? Qu'est-ce qui a changé ? Un seul poste en panne oriente vers le poste ; tout un VLAN, vers ce qui est commun au VLAN (relais, passerelle, étendue) ; tout le monde, vers un serveur.
  2. La configuration IP. Le poste a-t-il une adresse, la bonne passerelle, les bons DNS ? (ipconfig /all)
  3. La connectivité. La passerelle répond-elle ? Le serveur répond-il par son adresse ? (ping, Test-NetConnection)
  4. La résolution de noms. Le nom se résout-il, vers la bonne adresse, auprès du bon serveur ? (Resolve-DnsName, nslookup, dig)
  5. Le service. Le port du service répond-il ? (Test-NetConnection -Port, curl)
  6. L'application. Le service répond-il correctement ? (journaux, codes HTTP)

À chaque étape, une commande confirme ou élimine une hypothèse. Note ce que tu fais et ce que tu observes : c'est ce qu'on attend de toi en épreuve, et c'est ce qui permet à un collègue de reprendre le dossier (cours ITIL et support).

Les commandes du poste

BesoinWindows (cmd ou PowerShell)Linux (Debian 13)
Configuration complèteipconfig /all, Get-NetIPConfigurationip a, ip r, cat /etc/resolv.conf
Libérer et renouveler le bailipconfig /release puis ipconfig /renewsudo ifdown ens18 && sudo ifup ens18 (ifupdown, le défaut d'un serveur Debian) ou nmcli connection up <nom> (NetworkManager)
Voir et vider le cache DNSipconfig /displaydns, ipconfig /flushdnsresolvectl flush-caches si systemd-resolved est utilisé
Réenregistrer le nom du poste dans le DNSipconfig /registerdns—
Résoudre comme les applicationsResolve-DnsName nomgetent hosts nom
Interroger un serveur DNS précisResolve-DnsName nom -Server 192.168.10.177, nslookup nom 192.168.10.177dig @192.168.10.177 nom
Tester un portTest-NetConnection nom -Port 443nc -zv nom 443
Suivre la routetracert, Test-NetConnection nom -TraceRoutetraceroute, mtr

Le piège des outils : qui résout quoi ?

Les outils de diagnostic ne passent pas tous par le même chemin que les applications.

OutilPasse par le fichier hosts et le cache du poste ?
Navigateur, applications, pingOui : c'est la résolution du système
Resolve-DnsName nomOui : il montre ce que voient les applications
Resolve-DnsName nom -Server 192.168.10.177Non : il interroge directement ce serveur
nslookupNon : il interroge directement le serveur DNS
digNon
getent hosts nom (Linux)Oui : il suit /etc/nsswitch.conf, comme les applications

D'où un grand classique : nslookup intranet.sorbier.example donne la bonne adresse, mais le navigateur va ailleurs. nslookup interroge directement le serveur DNS ; le navigateur, lui, lit d'abord le fichier hosts, où un ancien test a laissé une ligne. Pour savoir ce que voient les applications, utilise Resolve-DnsName (sans -Server) ou getent hosts.

Lire dig et Resolve-DnsName

text
$ dig @192.168.10.177 intranet.sorbier.example +noall +answer +comments
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50211
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:
intranet.sorbier.example. 3600 IN A 192.168.21.10
powershell
PS> Resolve-DnsName intranet.sorbier.example -Server 192.168.10.177

Name                          Type   TTL   Section    IPAddress
----                          ----   ---   -------    ---------
intranet.sorbier.example      A      3600  Answer     192.168.21.10

Les options de dig qui servent le plus :

OptionEffet
@serveurInterroger ce serveur au lieu de celui du système
+shortLa réponse seule, une ligne par valeur
-x 192.168.10.178Résolution inverse (PTR)
+traceRefaire toute la résolution depuis la racine, en montrant chaque délégation
+norecNe pas demander la récursion : tester un serveur faisant autorité
+dnssecAfficher les signatures et le drapeau ad
nom MX, nom TXT, nom SOA, nom NSDemander un type précis

dig +trace www.sorbier.example est l'outil qui répond à « la délégation est-elle correcte ? » : il montre quels serveurs la racine, puis .example, annoncent pour la zone, et ce que ces serveurs répondent.

Côté serveurs

VérificationDNS de Windows ServerDHCP de Windows Server
Le service tourneGet-Service DNSGet-Service DHCPServer
L'étatGet-DnsServerZone, Get-DnsServerForwarderGet-DhcpServerv4ScopeStatistics (adresses libres, taux d'occupation)
Le détailGet-DnsServerResourceRecord -ZoneName …Get-DhcpServerv4Lease -ScopeId 192.168.10.64
Les journauxObservateur d'événements > Journaux des applications et des services > DNS Server ; journal de débogage du serveur DNS, à activer temporairementC:\Windows\System32\dhcp\DhcpSrvLog-<Jour>.log ; journal Microsoft-Windows-DHCP Server
Le test globaldcdiag /test:dnsGet-DhcpServerv4Failover (état du basculement)

Sous Debian avec BIND : sudo rndc status, sudo rndc zonestatus <zone>, sudo rndc querylog on (journalise chaque requête, à couper ensuite), journalctl -u named. Sur pfSense : Status > DHCP Leases pour les baux distribués, Status > System Logs, onglets DHCP et DNS Resolver.

Capturer pour voir ce qui passe vraiment

Quand les commandes ne suffisent pas, capture le trafic : tu vois si la requête part, si elle arrive, et ce que le serveur répond.

bash
# Sur un serveur Debian : le DHCP, en détail
sudo tcpdump -ni ens18 -vv 'udp port 67 or udp port 68'

# Le DNS, en enregistrant la capture pour l'ouvrir ensuite dans Wireshark
sudo tcpdump -ni ens18 -w /tmp/dns.pcap 'port 53'
powershell
# Sous Windows, sans rien installer : pktmon, fourni avec le système
pktmon start --capture --file-name C:\Temp\capture.etl
# ... reproduire le problème ...
pktmon stop
pktmon etl2pcap C:\Temp\capture.etl --out C:\Temp\capture.pcapng

Sur pfSense, Diagnostics > Packet Capture capture sur une interface choisie, avec un filtre sur l'hôte et le port, et propose le fichier au téléchargement.

Dans Wireshark, les filtres d'affichage à connaître :

FiltreCe qu'il montre
dhcpTout le DHCP (l'ancien nom du filtre était bootp)
dhcp.option.dhcp == 1Les DISCOVER (2 : OFFER, 3 : REQUEST, 5 : ACK, 6 : NAK)
dnsTout le DNS
dns.flags.response == 0Les questions seulement
dns.flags.rcode == 3Les réponses NXDOMAIN (2 : SERVFAIL, 5 : REFUSED)
dns.time > 0.5Les réponses qui ont mis plus d'une demi-seconde
ip.addr == 192.168.10.177Tout le trafic de ou vers srv-ad

Les filtres d'affichage (dhcp, dns) ne s'écrivent pas comme les filtres de capture de tcpdump (udp port 67), qui décident de ce qui est enregistré. La lecture d'une capture couche par couche est expliquée dans le chapitre Wireshark du cours Réseaux fondamentaux.

Les symptômes types

SymptômeCause la plus probableVérification
Adresse 169.254.x.x (APIPA)Aucune réponse DHCP : relais manquant pour ce VLAN, étendue pleine ou inactive, serveur arrêté, VLAN non transporté jusqu'au relaisGet-DhcpServerv4ScopeStatistics, configuration du relais, capture sur le relais
Adresse d'un réseau inconnu (192.168.1.x)Serveur DHCP pirateMAC de la passerelle reçue, table MAC des switchs
Tout fonctionne par adresse IP, rien par nomDNS injoignable ou mal configuré sur le posteipconfig /all, Resolve-DnsName nom -Server …
Les noms d'Internet se résolvent, pas les noms internesLe poste utilise un DNS publicipconfig /all : un serveur autre que .177 et .181
Les noms internes se résolvent, pas ceux d'InternetRedirecteurs du serveur DNS injoignables, DNS sortant bloqué par le pare-feuResolve-DnsName www.service-public.fr -Server 192.168.10.177, journaux du pare-feu
Un nom donne une ancienne adresseCache (poste ou serveur), enregistrement périmé, ligne dans hostsipconfig /displaydns, Resolve-DnsName nom -Server 192.168.10.177, fichier hosts
Ça marche une fois sur deuxLes deux serveurs DNS ne donnent pas la même réponse (réplication, zone absente sur l'un)Interroger chacun avec -Server et comparer
Ouverture de session lente, GPO non appliquéesLe poste ne trouve pas les SRV des contrôleurs : mauvais DNSnltest /dsgetdc:ad.sorbier.example
Le nom se résout, le service ne répond pasCe n'est plus le DNS : pare-feu, service arrêté, mauvais portTest-NetConnection nom -Port …

Un cas complet

Mardi, 9 h 10. Plusieurs magasiniers de l'entrepôt signalent que leurs terminaux de scan « n'ont plus le réseau ». Les postes des bureaux fonctionnent.

  1. Délimiter. Seul le VLAN 30 est touché, depuis ce matin. Hier soir, Moussa Diallo a remplacé le switch de l'entrepôt. Hypothèse : un problème commun au VLAN 30, lié au nouveau switch.
  2. Configuration IP. Sur un terminal : adresse 169.254.12.40. Aucune réponse DHCP.
  3. Le serveur. Get-DhcpServerv4ScopeStatistics sur srv-ad : l'étendue 192.168.10.128 est active, occupée à 59 %. Le serveur n'est pas en cause.
  4. Le relais. Sur SW-COEUR, l'interface Vlan30 porte bien ip helper-address 192.168.10.177 et .181.
  5. Le chemin. Une capture sur SW-COEUR ne montre aucun DISCOVER venant du VLAN 30. Les demandes n'arrivent pas jusqu'au relais. Sur le nouveau switch, show interfaces trunk : le lien vers SW-COEUR n'autorise que les VLAN 10 et 99.
  6. Correction. switchport trunk allowed vlan add 30 sur le port du trunk ; ipconfig /renew (ou le redémarrage du Wi-Fi des terminaux) : ils reçoivent une adresse en 192.168.10.1xx. Le dossier est documenté : la configuration du switch de remplacement doit être reprise de la sauvegarde de l'ancien (cours Routage et commutation).

L'erreur aurait été de redémarrer le serveur DHCP, ou de recréer l'étendue : ni l'un ni l'autre n'étaient en cause, et la capture l'a prouvé en une minute.

Exercices

Exercice 1 sur 4 nslookup répond, le navigateur non Réussi À revoir

Karim tape https://intranet.sorbier.example et arrive sur une page d'erreur. nslookup intranet.sorbier.example répond 192.168.21.10, la bonne adresse. ping intranet.sorbier.example répond… 192.168.10.99.

  1. Pourquoi les deux commandes ne donnent-elles pas la même adresse ?
  2. Où chercher, et avec quelle commande vérifier ce que voient les applications ?
Voir la réponseMasquer la réponse de l'exercice 1
  1. nslookup interroge directement le serveur DNS, sans lire le fichier hosts ni le cache. ping, comme le navigateur, utilise la résolution du système, qui lit d'abord le fichier hosts et le cache du client DNS.
  2. Dans C:\Windows\System32\drivers\etc\hosts : une ligne 192.168.10.99 intranet.sorbier.example, laissée par un ancien test. Resolve-DnsName intranet.sorbier.example (sans -Server) montre ce que voient les applications. Supprimer la ligne, puis ipconfig /flushdns.

Tu avais trouvé ?

Exercice 2 sur 4 Une fois sur deux Réussi À revoir

Depuis la création de l'enregistrement gestion-stock dans la zone ad.sorbier.example, la moitié des postes le trouvent et les autres reçoivent « nom inexistant ». Les postes reçoivent par DHCP les DNS 192.168.10.177 et 192.168.10.181.

  1. Quelles commandes lances-tu pour localiser le problème ?
  2. Quelles sont les deux causes possibles ?
  3. Pourquoi certains postes continuent-ils à échouer même après la correction ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. Interroger chaque serveur séparément : Resolve-DnsName gestion-stock.ad.sorbier.example -Server 192.168.10.177, puis -Server 192.168.10.181. L'un répond, l'autre non.
  2. La réplication de l'annuaire entre srv-ad et srv-ad2 n'a pas encore eu lieu ou échoue (repadmin /replsummary), ou la zone n'est pas intégrée à AD sur l'un des serveurs (une zone principale classique sur l'un, sans transfert vers l'autre).
  3. Le cache négatif : les postes qui ont reçu NXDOMAIN le gardent pendant la durée fixée par le SOA de la zone. ipconfig /flushdns sur ces postes, ou attendre l'expiration.

Tu avais trouvé ?

Exercice 3 sur 4 Lire une capture DHCP Réussi À revoir

Une capture sur le port de srv-ad, filtrée avec dhcp, montre des dizaines de DISCOVER venant du relais 192.168.10.158 (VLAN 30), et pour chacun un OFFER de srv-ad. Aucun REQUEST ne suit. Les terminaux restent en APIPA.

  1. Que sait-on du trajet aller ? Et du retour ?
  2. Propose deux causes, et la vérification de chacune.
Voir la réponseMasquer la réponse de l'exercice 3
  1. L'aller fonctionne : les DISCOVER arrivent au serveur par le relais, et le serveur répond par des OFFER. C'est le retour qui échoue : les terminaux ne reçoivent pas l'OFFER (sinon ils enverraient un REQUEST).
  2. Une ACL ou une règle de pare-feu bloque les réponses du serveur vers le relais (UDP 67 vers 192.168.10.158) : vérifier les ACL de SW-COEUR et le pare-feu, capturer sur SW-COEUR pour voir si les OFFER y arrivent. Ou la surveillance DHCP du switch de l'entrepôt jette les OFFER, parce que son port vers SW-COEUR n'est pas déclaré de confiance : show ip dhcp snooping et ses statistiques de paquets rejetés.

Tu avais trouvé ?

Exercice 4 sur 4 Les noms d'Internet ne répondent plus Réussi À revoir

Depuis ce matin, tous les postes ouvrent l'intranet et les partages, mais aucun site d'Internet. ping 9.9.9.9 répond depuis un poste.

  1. Que concluent ces deux observations ?
  2. Quelle commande lances-tu sur srv-ad, et qu'en déduis-tu selon le résultat ?
  3. Où regardes-tu ensuite ?
Voir la réponseMasquer la réponse de l'exercice 4
  1. Le réseau et l'accès à Internet fonctionnent (le ping vers une adresse publique passe), et le DNS interne aussi. Le problème est la résolution des noms externes.
  2. Resolve-DnsName www.service-public.fr -Server 192.168.10.177. S'il échoue, c'est le chemin de srv-ad vers ses redirecteurs. Ensuite Get-DnsServerForwarder pour vérifier les redirecteurs configurés, et Resolve-DnsName www.service-public.fr -Server 9.9.9.9 depuis srv-ad pour savoir s'il les joint.
  3. Dans les journaux du pare-feu : une règle modifiée qui bloque UDP/TCP 53 sortant depuis srv-ad et srv-ad2. Une capture sur srv-ad (pktmon) montre des requêtes sortantes sans réponse.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Exercices corrigés de services réseau type E6 et E7 SISRRevoir le sommaire du cours