NetworkGuide

Antiseche dig et nslookup : interroger le DNS

Sur cette page
  1. Bases de dig : A, AAAA, MX, TXT, NS, CNAME
  2. Réduire le bruit : +short et +trace
  3. Viser un résolveur précis : @8.8.8.8
  4. Recherche inverse : dig -x
  5. nslookup : le secours sous Windows
  6. Et après

Cette antisèche dig et nslookup met en avant les requêtes DNS que vous lancez vraiment : interroger les enregistrements A, AAAA, MX, TXT, NS et CNAME avec dig, réduire le résultat à une seule réponse avec dig +short, suivre la chaîne depuis la racine avec +trace, viser un résolveur précis avec @8.8.8.8, et faire une recherche inverse sur une IP avec dig -x. Nous les avons regroupées selon ce que vous vérifiez, pas par ordre alphabétique des options, pour que vous copiiez une ligne, changiez le domaine, et passiez à la suite. nslookup a sa propre section vers la fin, parce que sous Windows c'est souvent le seul installé, et la syntaxe diffère juste assez pour vous piéger.

The short answer

Interrogez un type d'enregistrement en le nommant : dig example.com MX, dig example.com TXT, dig example.com NS. Réduisez le rapport à la réponse avec +short, suivez la délégation depuis la racine avec +trace, visez un résolveur public avec @8.8.8.8, et inversez un PTR avec dig -x 8.8.8.8. Sous Windows, nslookup -type=MX example.com couvre le même terrain quand dig n'est pas installé.

dig +shortjuste la reponse
@8.8.8.8viser un resolveur precis
dig -xrecherche inverse sur une IP
Fiche reponse : interroger A et AAAA avec dig, MX, TXT, NS et CNAME, reduire avec +short, tracer depuis la racine avec +trace, viser @8.8.8.8, et recherche inverse avec dig -x.
Les requetes DNS que vous lancez vraiment, regroupees selon ce que vous verifiez. PNG

Vous avez ouvert un terminal parce que quelque chose résout mal, ou ne résout pas du tout, et vous voulez la vérité directement depuis le DNS plutôt que ce que votre navigateur a mis en cache il y a une heure. C'est à ça que sert dig. Il pose une question précise à un serveur de noms et affiche exactement ce qui est revenu. Les recettes ci-dessous sont celles que nous utilisons au quotidien, les plus courantes d'abord, pour que vous copiiez une ligne, changiez votre domaine, et voyiez ce que disent vraiment les enregistrements.

Une chose à poser d'entrée. dig interroge le DNS et rien d'autre : il ne lit pas votre fichier hosts, il se moque de votre navigateur, il parle juste à un résolveur et rapporte la réponse telle quelle. C'est tout l'intérêt. Quand ping et dig ne sont pas d'accord, dig vous dit ce que la couche DNS contient réellement, et l'écart vient en général d'un cache local périmé.

Bases de dig : A, AAAA, MX, TXT, NS, CNAME

Le motif de base est dig DOMAINE TYPE. Nommez le type d'enregistrement voulu après le domaine. Omettez le type et dig prend A par défaut, l'adresse IPv4. Le reste, c'est juste choisir le bon type pour la question que vous posez.

RecetteCe qu'elle fait
dig example.comL'enregistrement A (adresse IPv4), par défaut quand vous ne nommez aucun type
dig example.com AAAAL'enregistrement AAAA, l'adresse IPv6
dig example.com MXLes serveurs de messagerie et leurs priorités, le plus petit numéro gagne
dig example.com TXTLes enregistrements texte : SPF, DKIM, chaînes de vérification de domaine
dig example.com NSLes serveurs de noms autoritaires pour la zone
dig example.com CNAMELa cible de l'alias, si ce nom pointe vers un autre nom

La sortie complète de dig est un rapport, pas une seule ligne. Il renvoie votre question, puis la section ANSWER SECTION contient les enregistrements voulus, et en dessous viennent les sections autorité et additionnelle que vous pouvez ignorer la plupart du temps. La plupart du temps vous ne voulez pas le rapport, vous voulez la réponse, ce qui est la recette suivante.

Réduire le bruit : +short et +trace

Deux options changent ce que vous voyez. +short réduit le rapport aux seules valeurs de réponse. +trace fait l'inverse : il parcourt la délégation depuis les serveurs racine vers le bas, en montrant chaque saut, ce qui permet de trouver où la résolution casse vraiment.

RecetteCe qu'elle fait
dig example.com +shortJuste la ou les valeurs de réponse, une par ligne, rien d'autre
dig example.com MX +shortLes serveurs de messagerie seuls, assez propres pour un script
dig example.com +traceParcourir la délégation depuis la racine, saut par saut
dig example.com +noall +answerGarder le format rapport mais n'afficher que la section réponse

+short est celui que vous taperez le plus. Comparez dig example.com (une douzaine de lignes) avec dig example.com +short (l'IP brute) et vous n'y reviendrez plus. Dégainez +trace quand un nom résout sur un réseau mais pas sur un autre : il vous montre exactement quel serveur de noms de la chaîne renvoie la mauvaise réponse ou tombe en timeout.

Linux
dig example.com MX +short

Viser un résolveur précis : @8.8.8.8

Par défaut dig utilise le résolveur de la config système (/etc/resolv.conf sous Linux). Mettez un @ devant une IP ou un nom d'hôte pour interroger ce serveur directement à la place. C'est l'astuce la plus utile pour les vérifications de propagation, parce que votre cache local et un résolveur public peuvent tenir des réponses différentes pour le même nom au même moment.

RecetteCe qu'elle fait
dig @8.8.8.8 example.comInterroger Google Public DNS directement, en court-circuitant votre cache local
dig @1.1.1.1 example.comInterroger Cloudflare à la place, un deuxième avis rapide
dig @ns1.example.com example.comInterroger le serveur de noms autoritaire, la source de vérité
dig @8.8.8.8 example.com +shortPareil, réduit à la réponse pour une comparaison rapide

Quand vous changez un enregistrement chez votre registrar et voulez savoir s'il est passé en ligne, interrogez un résolveur public de cette façon plutôt que de faire confiance à votre propre machine. Si @8.8.8.8 montre déjà la nouvelle valeur et que votre recherche locale montre encore l'ancienne, l'enregistrement va bien et vous attendez juste l'expiration de votre cache. Notre outil de recherche DNS sur le site lance ce même genre de requête de résolveur depuis le navigateur quand vous n'êtes pas devant un terminal.

Recherche inverse : dig -x

Une recherche normale va du nom vers l'IP. Une recherche inverse va de l'IP vers le nom, en lisant l'enregistrement PTR. dig -x prend l'adresse et construit la requête in-addr.arpa peu commode pour vous, donc vous n'inversez jamais les octets à la main.

RecetteCe qu'elle fait
dig -x 8.8.8.8L'enregistrement PTR (nom d'hôte) pour cette adresse IPv4
dig -x 8.8.8.8 +shortJuste le nom, sans rapport
dig -x 2001:4860:4860::8888La recherche inverse marche aussi pour l'IPv6

Les enregistrements inverses sont contrôlés par celui qui possède le bloc d'IP, pas par le propriétaire du domaine, donc beaucoup d'adresses n'ont aucun PTR. Une réponse vide est normale et n'est pas une erreur. Là où ça compte le plus, c'est la messagerie : les serveurs de réception vérifient souvent qu'une IP émettrice a des enregistrements direct et inverse cohérents, donc un PTR manquant ou discordant est une raison courante pour qu'un courrier légitime atterrisse en spam.

nslookup : le secours sous Windows

nslookup est livré sur chaque machine Windows et sur la plupart des installations Linux aussi. dig ne vient pas avec Windows par défaut. Donc quand vous êtes sur une machine Windows verrouillée sans rien d'installé, nslookup est l'outil que vous avez, et il convient parfaitement pour une vérification rapide. La syntaxe diffère de dig sur deux points : vous choisissez le type d'enregistrement avec -type= (ou -q=), et vous nommez le serveur après le domaine, pas avec un @.

digéquivalent nslookup
dig example.comnslookup example.com
dig example.com MXnslookup -type=MX example.com
dig example.com TXTnslookup -type=TXT example.com
dig example.com NSnslookup -type=NS example.com
dig @8.8.8.8 example.comnslookup example.com 8.8.8.8
dig -x 8.8.8.8nslookup 8.8.8.8
nslookup -type=MX example.com
nslookup -type=TXT example.com 8.8.8.8
nslookup 8.8.8.8

Une bizarrerie à prévoir : nslookup étiquette les résultats tirés d'un cache comme Réponse ne faisant pas autorité, ce qui sonne inquiétant mais signifie juste que la réponse vient d'un résolveur récursif plutôt que du serveur autoritaire. C'est le cas normal et il n'y a pas à s'en faire. La sortie est aussi plus bavarde et plus difficile à scripter que dig +short, ce qui est la raison principale pour laquelle dig l'a emporté sous Linux et macOS.

Terminal montrant dig example.com pour l'enregistrement A puis dig example.com MX +short renvoyant deux serveurs de messagerie avec leurs priorites.
dig dans le terminal : le rapport complet, puis la meme requete reduite avec +short. PNG

Notre avis : apprenez dig, gardez nslookup pour la machine où rien d'autre n'est installé. Pour les vérifications quotidiennes dig +short et dig @résolveur domaine répondent à presque tout, et la sortie tombe directement dans un script sans gymnastique de parsing. nslookup gagne sa place pour une seule raison, il est déjà là sous Windows, donc quand vous ne pouvez rien installer il fait le travail. Si vous bougez entre les systèmes, installez les outils BIND sous Windows pour avoir dig partout, et traitez nslookup comme le secours plutôt que la valeur par défaut.

Et après

Voilà la trousse de travail. Choisissez le type d'enregistrement, réduisez avec +short, visez un résolveur avec @, inversez avec -x, et dégainez nslookup seulement quand dig n'est pas sur la machine. La plupart du débogage DNS réel est un mélange de ça, et le reste vous le recherchez comme tout le monde.

Si les enregistrements que vous lisez touchent à la messagerie, le même réflexe se transpose directement. Comprendre pourquoi des messages rebondissent ou tombent en spam commence en général par un dig TXT pour l'enregistrement SPF et un dig sur le sélecteur DKIM, puis une recherche inverse sur l'IP émettrice. Question différente, les mêmes trois ou quatre commandes, gardées à portée de main.

Questions fréquentes

Comment interroger un type d'enregistrement avec dig ?

Mettez le type après le domaine : dig example.com MX renvoie les enregistrements de messagerie, dig example.com TXT les enregistrements texte, dig example.com NS les serveurs de noms. Sans type, dig prend A par défaut (l'adresse IPv4). Ajoutez +short pour réduire le rapport complet aux seules valeurs de réponse, ce que vous voulez en général quand vous regardez un résultat plutôt que de déboguer toute la réponse.

À quoi sert dig +short ?

Il retire le rapport verbeux (en-tête, question, sections autorité et additionnelle) et n'affiche que les données de réponse, une valeur par ligne. Donc dig example.com +short donne l'IP brute, et dig example.com MX +short donne les serveurs de messagerie avec leurs priorités et rien d'autre. C'est la différence entre un mur de texte et la seule ligne que vous cherchiez, et ça se passe proprement dans un script.

Comment interroger un serveur DNS précis comme 8.8.8.8 ?

Préfixez le résolveur d'un arobase : dig @8.8.8.8 example.com interroge Google Public DNS directement au lieu du résolveur de votre système. C'est ainsi qu'on vérifie si un enregistrement s'est propagé, puisque votre cache local peut encore tenir l'ancienne valeur alors qu'un résolveur public voit déjà la nouvelle. Ça marche pareil avec @1.1.1.1 pour Cloudflare ou @ n'importe quel serveur de noms autoritaire que vous voulez interroger.

Comment faire une recherche DNS inverse ?

Utilisez dig -x avec l'adresse IP : dig -x 8.8.8.8 renvoie l'enregistrement PTR, le nom d'hôte associé à cette adresse. dig construit la requête in-addr.arpa pour vous, vous n'avez pas à inverser les octets à la main. Ajoutez +short pour n'avoir que le nom. Les enregistrements inverses sont posés par celui qui contrôle le bloc d'IP, donc beaucoup d'adresses n'ont aucun PTR, et une réponse vide là est normale.

Dois-je utiliser dig ou nslookup sous Windows ?

nslookup est livré avec Windows, pas dig, donc nslookup est celui qui est toujours là. Pour une vérification rapide il convient : nslookup example.com, ou nslookup -type=MX example.com pour un type d'enregistrement. Mais dig donne une sortie plus propre et plus facile à scripter, et c'est le standard sous Linux et macOS. Si vous travaillez sur plusieurs systèmes, apprenez dig et installez-le sous Windows (il vient avec les outils BIND) ; gardez nslookup pour la machine où rien d'autre n'est disponible.