Interroger les enregistrements DNS sous Linux avec dig et nslookup

CompTIABeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les bases de l'interrogation des enregistrements du système de noms de domaine (DNS) depuis la ligne de commande dans un environnement Linux. Vous utiliserez deux utilitaires puissants et courants, dig et nslookup, pour effectuer divers types de recherches DNS. Cette expérience pratique est essentielle pour les administrateurs réseau et les ingénieurs système afin de dépanner les problèmes de résolution de noms et de comprendre les configurations réseau.

Vous commencerez par identifier le serveur DNS par défaut de votre système en examinant le fichier /etc/resolv.conf. Ensuite, vous procéderez à plusieurs requêtes DNS courantes, notamment la recherche de l'adresse IP d'un domaine (enregistrement A), la découverte d'un nom d'hôte à partir d'une adresse IP avec une recherche inversée (enregistrement PTR), et la recherche des enregistrements d'échange de courrier (MX) pour un domaine. Enfin, vous apprendrez à diriger vos requêtes vers un serveur DNS public spécifique au lieu d'utiliser celui par défaut de votre système.

Identifier le serveur DNS par défaut de votre système avec cat

Dans cette étape, vous apprendrez comment identifier les serveurs DNS par défaut que votre système est configuré pour utiliser. Les serveurs DNS (Domain Name System) sont responsables de la traduction des noms de domaine lisibles par l'homme (comme www.google.com) en adresses IP lisibles par la machine (comme 142.250.186.132). Comprendre quels serveurs DNS votre système interroge par défaut est la première étape et la plus cruciale pour diagnostiquer tout problème de résolution de noms.

Sur la plupart des systèmes Linux, cette configuration est stockée dans un fichier situé à /etc/resolv.conf. Nous utiliserons la commande cat, un utilitaire standard pour concaténer et afficher le contenu des fichiers, pour visualiser ce fichier.

Ouvrez votre terminal et exécutez la commande suivante pour afficher le contenu du fichier resolv.conf :

cat /etc/resolv.conf

Vous verrez une sortie similaire à celle ci-dessous. Les adresses IP listées après la directive nameserver sont les serveurs DNS que votre système contactera pour résoudre les noms de domaine.

## Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
##     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
## 127.0.0.53 is the systemd-resolved stub resolver.
## run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
options timeout:2 attempts:3 rotate single-request-reopen

D'après la sortie, vous pouvez voir que 127.0.0.53 est le serveur DNS principal pour ce système. Toutes les requêtes DNS que vous effectuerez sans spécifier de serveur particulier seront envoyées ici par défaut. Maintenant que vous savez comment trouver votre serveur DNS par défaut, vous êtes prêt à effectuer votre première requête DNS à l'étape suivante.

Trouver l'adresse IP d'un domaine (enregistrement A) avec dig et nslookup

Dans cette étape, vous effectuerez une recherche DNS directe standard, qui est le processus de résolution d'un nom de domaine en une adresse IP. C'est l'une des fonctions les plus courantes du DNS. Le type d'enregistrement spécifique qui associe un nom de domaine à une adresse IPv4 est appelé un enregistrement A. Nous utiliserons deux outils en ligne de commande populaires pour cette tâche : nslookup et dig.

Tout d'abord, vous devez vous assurer que ces outils sont installés. Ils font partie du paquet dnsutils sur les systèmes basés sur Debian comme Ubuntu. Mettons à jour notre liste de paquets et installons-le.

sudo apt-get update
sudo apt-get install -y dnsutils

Maintenant que les outils sont prêts, utilisons nslookup (qui signifie "name server lookup") pour trouver l'adresse IP de www.google.com.

nslookup www.google.com

La sortie vous montre le serveur qui a répondu à la requête (celui par défaut de l'étape 1) et la "Non-authoritative answer" (réponse non faisant autorité), qui contient l'adresse IP (ou les adresses IP) associée à www.google.com.

Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.189.196
Name:   www.google.com
Address: 2607:f8b0:4005:80d::2004

Ensuite, effectuons la même requête en utilisant dig (Domain Information Groper). dig est souvent préféré par les administrateurs système car il fournit une sortie plus détaillée et structurée.

dig www.google.com

Examinez la sortie de dig. Elle est divisée en sections. La QUESTION SECTION montre ce que vous avez demandé (un enregistrement A pour www.google.com). La ANSWER SECTION fournit le résultat, y compris l'adresse IP et la valeur TTL (Time To Live), qui indique combien de temps un résolveur peut mettre ces informations en cache.

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5247
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         7       IN      A       142.251.46.196

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jul 14 14:55:18 CST 2025
;; MSG SIZE  rcvd: 59

En comparant les deux sorties, vous pouvez constater que bien que les deux outils atteignent le même objectif, dig offre une vue beaucoup plus complète de la réponse DNS.

Trouver un nom d'hôte à partir d'une adresse IP (enregistrement PTR) avec dig -x

Dans cette étape, vous effectuerez une recherche DNS inversée. Alors qu'une recherche directe résout un nom de domaine en une adresse IP, une recherche inversée fait le contraire : elle trouve le nom d'hôte associé à une adresse IP donnée. Ce processus repose sur un type spécial d'enregistrement DNS appelé enregistrement PTR (Pointer). Les recherches inversées sont couramment utilisées par les serveurs de messagerie pour vérifier l'identité de l'expéditeur et dans le dépannage réseau pour identifier la source du trafic.

Nous utiliserons l'une des adresses IP de www.google.com que vous avez découvertes à l'étape précédente. Utilisons 142.251.46.196 comme exemple.

Tout d'abord, essayons une recherche inversée avec nslookup, que vous connaissez déjà. Fournissez simplement l'adresse IP comme argument :

nslookup 142.251.46.196

La sortie affichera le name (nom) associé à l'adresse IP, qui est stocké dans un domaine spécial in-addr.arpa utilisé pour le DNS inversé.

196.46.251.142.in-addr.arpa     name = nuq04s45-in-f4.1e100.net.

Authoritative answers can be found from:

Maintenant, effectuons la même recherche inversée en utilisant dig. La commande dig utilise l'option -x pour spécifier une recherche inversée. C'est un raccourci pratique qui formate la requête correctement pour vous.

dig -x 142.251.46.196

Observez la sortie. Dans la ANSWER SECTION (section de réponse), vous trouverez l'enregistrement PTR qui associe l'adresse IP à son nom d'hôte. Notez comment la QUESTION SECTION (section de question) montre l'adresse IP inversée et complétée par .in-addr.arpa, ce qui est le format standard pour les requêtes DNS inversées IPv4.

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> -x 142.251.46.196
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46896
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;196.46.251.142.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
196.46.251.142.in-addr.arpa. 10 IN      PTR     nuq04s45-in-f4.1e100.net.

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jul 14 14:56:11 CST 2025
;; MSG SIZE  rcvd: 94

Vous avez maintenant utilisé avec succès nslookup et dig pour effectuer une recherche DNS inversée, traduisant une adresse IP en nom d'hôte.

Rechercher les enregistrements Mail Exchange (MX) d'un domaine avec dig

Dans cette étape, vous apprendrez à interroger un autre type d'enregistrement DNS important : l'enregistrement Mail Exchange (MX). Les enregistrements MX sont essentiels à la livraison des e-mails. Ils spécifient quels serveurs de messagerie sont responsables de l'acceptation des messages électroniques au nom d'un domaine. Lorsque vous envoyez un e-mail à user@example.com, votre serveur de messagerie effectue d'abord une recherche DNS pour les enregistrements MX de example.com afin de savoir où envoyer le message.

Nous continuerons à utiliser la commande dig pour rechercher les enregistrements MX du domaine google.com. Pour ce faire, vous spécifiez le nom de domaine suivi du type d'enregistrement (MX).

Dans votre terminal, exécutez la commande suivante :

dig google.com MX

La sortie sera similaire à ce que vous avez vu précédemment, mais la ANSWER SECTION contiendra désormais des enregistrements MX au lieu d'enregistrements A.

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> google.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45070
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com.                    IN      MX

;; ANSWER SECTION:
google.com.             10      IN      MX      10 smtp.google.com.

;; Query time: 12 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jul 14 14:56:29 CST 2025
;; MSG SIZE  rcvd: 60

Remarquez le nombre (10) avant le nom d'hôte du serveur de messagerie dans la ANSWER SECTION. Il s'agit de la valeur de préférence ou de priorité. Les serveurs de messagerie tenteront d'abord de livrer les e-mails au serveur ayant le plus petit numéro de priorité. Si ce serveur n'est pas disponible, ils essaieront le suivant, et ainsi de suite. Cela fournit un système de serveurs de messagerie primaires et de secours.

Interroger un serveur DNS public spécifique avec dig @<server>

Dans cette dernière étape, vous apprendrez à contourner le serveur DNS par défaut de votre système et à envoyer une requête directement à un serveur DNS public spécifique. C'est une technique extrêmement utile pour le dépannage. Par exemple, si vous ne parvenez pas à résoudre un domaine en utilisant votre serveur par défaut, vous pouvez interroger un serveur public fiable comme celui de Google (8.8.8.8) ou celui de Cloudflare (1.1.1.1) pour déterminer si le problème vient de votre configuration locale ou d'un problème plus généralisé.

La commande dig facilite cela. Vous pouvez spécifier le serveur DNS que vous souhaitez utiliser en faisant précéder son adresse IP du symbole @.

Interrogeons le serveur DNS public de Google à l'adresse 8.8.8.8 pour trouver l'adresse IP de www.cloudflare.com.

dig @8.8.8.8 www.cloudflare.com

Maintenant, examinez attentivement la sortie. Portez une attention particulière à la ligne SERVER vers le bas. Elle devrait afficher 8.8.8.8#53, confirmant que votre requête a été envoyée et répondue par le serveur DNS de Google, et non par le serveur par défaut de votre système (127.0.0.53 de l'étape 1).

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> @8.8.8.8 www.cloudflare.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62439
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.cloudflare.com.            IN      A

;; ANSWER SECTION:
www.cloudflare.com.     300     IN      A       104.16.123.96
www.cloudflare.com.     300     IN      A       104.16.124.96

;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Mon Jul 14 14:56:45 CST 2025
;; MSG SIZE  rcvd: 79

Vous avez réussi à diriger une requête DNS vers un serveur spécifique, une compétence précieuse pour diagnostiquer les problèmes de réseau et de résolution de noms. Ceci conclut le laboratoire sur l'utilisation de nslookup et dig pour les requêtes DNS côté client.

Résumé

Dans ce laboratoire, vous avez appris à effectuer des requêtes DNS essentielles sur un système Linux. Vous avez commencé par identifier le serveur DNS par défaut de votre système en examinant le fichier /etc/resolv.conf avec la commande cat. Ensuite, vous avez utilisé les utilitaires dig et nslookup pour effectuer une recherche directe standard, résolvant un nom de domaine en son adresse IP correspondante (enregistrement A).

Vous avez ensuite exploré des requêtes plus avancées, y compris les recherches inversées pour trouver un nom d'hôte à partir d'une adresse IP (enregistrement PTR) en utilisant dig -x, et comment récupérer les enregistrements d'échange de courrier (MX) d'un domaine. Enfin, vous avez appris à contourner les paramètres par défaut du système en dirigeant votre requête DNS vers un serveur public spécifique en utilisant la syntaxe dig @<serveur>, une compétence essentielle pour le dépannage et le test de la résolution de noms.