Dig

Un article de WindowsLinux.net - Astuces pour Windows et Linux !.

Dig est une commande qui nous permet de savoir "quel chemin" prend une requête DNS, en nous donnant le nom des serveurs dns qui sont utilisés pour résoudre l'adresse.

Sommaire

Cas d'utilisations

Pour un TLD

dig fr. NS

Va renvoyer les serveurs NS principaux pour l'extension .fr.


A savoir ceci :

; <<>> DiG 9.3.2 <<>> fr. NS
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1144
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 12

;; QUESTION SECTION:
;fr.                            IN      NS

;; ANSWER SECTION:
fr.                     172800  IN      NS      e.nic.fr.
fr.                     172800  IN      NS      f.ext.nic.fr.
fr.                     172800  IN      NS      g.ext.nic.fr.
fr.                     172800  IN      NS      a.nic.fr.
fr.                     172800  IN      NS      b.ext.nic.fr.
fr.                     172800  IN      NS      c.nic.fr.
fr.                     172800  IN      NS      d.ext.nic.fr.
fr.                     172800  IN      NS      e.ext.nic.fr.

;; ADDITIONAL SECTION:
a.nic.fr.               9163    IN      A       192.93.0.129
a.nic.fr.               100647  IN      AAAA    2001:660:3005:3::1:1
b.ext.nic.fr.           5172    IN      A       192.228.90.21
c.nic.fr.               12761   IN      A       192.134.0.129
c.nic.fr.               100647  IN      AAAA    2001:660:3006:4::1:1
d.ext.nic.fr.           12761   IN      A       204.152.184.85
d.ext.nic.fr.           12761   IN      AAAA    2001:4f8:0:2::8
e.ext.nic.fr.           12761   IN      A       193.176.144.6
e.nic.fr.               160377  IN      A       194.57.253.1
f.ext.nic.fr.           9162    IN      A       194.146.106.46
g.ext.nic.fr.           120909  IN      A       204.61.216.39
g.ext.nic.fr.           64620   IN      AAAA    2001:500:14:6039:ad::1

;; Query time: 734 msec
;; SERVER: 194.51.3.56#53(194.51.3.56)
;; WHEN: Fri Aug 14 17:27:36 2009
;; MSG SIZE  rcvd: 396

Pour un domaine donné

dig  windowslinux.net.  NS


affiche les serveurs de noms pour windowslinux.net


Pour le mail (MX)

dig  windowslinux.net.  MX


affiche les serveurs mails qui reçoivent les mails pour le domaine "windowslinux.net" (MX = Mail eXchange).


Le serveur mail ayant le chiffre le plus petit sera contacté en premier. Si ce serveur mail est débordé ou indisponible, le serveur mail ayant le chiffre plus petit suivant sera contacté (tolérance des pannes).


Un nom d'hôte précis (FQDN)

dig  www.windowslinux.net.

affiche l'adresse IP de l'ordinateur www.windowslinux.net (nommé aussi host / nom hôte, nommé aussi FQDN).

Si le résultat affiche CNAME dans le champ réponse, il s'agit en langage courant d'un "alias".


Via un serveur DNS donné

dig  www.windowslinux.net.    @ns1.fai.tld

Recherche l'adresse IP de www.windowslinux.net en faisant une requête au serveur DNS ns1.fai.tld.

Reverse DNS lookup (depuis une IP)

dig   -x    216.21.128.22

Effectue une recherche pour le nom d'hôte depuis une adresse IP donnée (Reverse DNS lookup).


+trace : informations de performances

dig  www.windowslinux.net. +trace

Vous affiche quelques informations au niveau performances.

Exemples

Prenons par exemple le nom de domaine yahoo.fr (le paramètre A pour désigner le serveur, ou encore MX pour le serveur mail - je vous conseille de lire la documentation associée : "man dig").


Commande :

dig yahoo.fr A

Réponse :

; <<>> DiG 9.3.4 <<>> yahoo.fr A
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28028
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 5
 
;; QUESTION SECTION:
;yahoo.fr.                      IN      A
 
;; ANSWER SECTION:
yahoo.fr.               489     IN      A       217.12.6.29
yahoo.fr.               489     IN      A       217.146.186.221
 
;; AUTHORITY SECTION:
yahoo.fr.               52285   IN      NS      ns1.yahoo.com.
yahoo.fr.               52285   IN      NS      ns2.yahoo.com.
yahoo.fr.               52285   IN      NS      ns3.yahoo.com.
yahoo.fr.               52285   IN      NS      ns5.yahoo.com.
yahoo.fr.               52285   IN      NS      ns7.yahoo.com.
 
;; ADDITIONAL SECTION:
ns1.yahoo.com.          39195   IN      A       66.218.71.63
ns2.yahoo.com.          39195   IN      A       68.142.255.16
ns3.yahoo.com.          39199   IN      A       217.12.4.104
ns5.yahoo.com.          39199   IN      A       216.109.116.17
ns7.yahoo.com.          40147   IN      A       68.142.226.82
 
;; Query time: 1 msec
;; SERVER: 193.24.213.101#53(193.24.213.101)
;; WHEN: Sat Apr 28 01:59:09 2007
;; MSG SIZE  rcvd: 237


Ajouter l'option "+trace" à la commande précédente est très utile et nous permet de voir le cheminement depuis les serveurs root :

dig yahoo.fr A +trace

Réponse :

; <<>> DiG 9.3.4 <<>> yahoo.fr A +trace
;; global options:  printcmd
.                       447419  IN      NS      G.ROOT-SERVERS.NET.
.                       447419  IN      NS      H.ROOT-SERVERS.NET.
.                       447419  IN      NS      I.ROOT-SERVERS.NET.
.                       447419  IN      NS      J.ROOT-SERVERS.NET.
.                       447419  IN      NS      K.ROOT-SERVERS.NET.
.                       447419  IN      NS      L.ROOT-SERVERS.NET.
.                       447419  IN      NS      M.ROOT-SERVERS.NET.
.                       447419  IN      NS      A.ROOT-SERVERS.NET.
.                       447419  IN      NS      B.ROOT-SERVERS.NET.
.                       447419  IN      NS      C.ROOT-SERVERS.NET.
.                       447419  IN      NS      D.ROOT-SERVERS.NET.
.                       447419  IN      NS      E.ROOT-SERVERS.NET.
.                       447419  IN      NS      F.ROOT-SERVERS.NET.
;; Received 436 bytes from 193.24.213.101#53(193.24.213.101) in 2 ms
 
fr.                     172800  IN      NS      D.EXT.NIC.fr.
fr.                     172800  IN      NS      C.NIC.fr.
fr.                     172800  IN      NS      E.EXT.NIC.fr.
fr.                     172800  IN      NS      B.EXT.NIC.fr.
fr.                     172800  IN      NS      A.EXT.NIC.fr.
fr.                     172800  IN      NS      C.EXT.NIC.fr.
fr.                     172800  IN      NS      B.NIC.fr.
fr.                     172800  IN      NS      E.NIC.fr.
fr.                     172800  IN      NS      A.NIC.fr.
;; Received 434 bytes from 192.112.36.4#53(G.ROOT-SERVERS.NET) in 116 ms
 
yahoo.fr.               172800  IN      NS      ns2.yahoo.com.
yahoo.fr.               172800  IN      NS      ns1.yahoo.com.
yahoo.fr.               172800  IN      NS      ns5.yahoo.com.
yahoo.fr.               172800  IN      NS      ns3.yahoo.com.
yahoo.fr.               172800  IN      NS      ns7.yahoo.com.
;; Received 125 bytes from 204.152.184.85#53(D.EXT.NIC.fr) in 160 ms
 
yahoo.fr.               900     IN      A       217.12.6.29
yahoo.fr.               900     IN      A       217.146.186.221
yahoo.fr.               172800  IN      NS      ns1.yahoo.com.
yahoo.fr.               172800  IN      NS      ns2.yahoo.com.
yahoo.fr.               172800  IN      NS      ns3.yahoo.com.
yahoo.fr.               172800  IN      NS      ns5.yahoo.com.
yahoo.fr.               172800  IN      NS      ns7.yahoo.com.
;; Received 237 bytes from 68.142.255.16#53(ns2.yahoo.com) in 82 ms


Un autre exemple, sur fr.yahoo.com :

dig fr.yahoo.com A +trace


; <<>> DiG 9.3.4 <<>> fr.yahoo.com A +trace
;; global options:  printcmd
.                       446720  IN      NS      L.ROOT-SERVERS.NET.
.                       446720  IN      NS      M.ROOT-SERVERS.NET.
.                       446720  IN      NS      A.ROOT-SERVERS.NET.
.                       446720  IN      NS      B.ROOT-SERVERS.NET.
.                       446720  IN      NS      C.ROOT-SERVERS.NET.
.                       446720  IN      NS      D.ROOT-SERVERS.NET.
.                       446720  IN      NS      E.ROOT-SERVERS.NET.
.                       446720  IN      NS      F.ROOT-SERVERS.NET.
.                       446720  IN      NS      G.ROOT-SERVERS.NET.
.                       446720  IN      NS      H.ROOT-SERVERS.NET.
.                       446720  IN      NS      I.ROOT-SERVERS.NET.
.                       446720  IN      NS      J.ROOT-SERVERS.NET.
.                       446720  IN      NS      K.ROOT-SERVERS.NET.
;; Received 436 bytes from 193.24.213.101#53(193.24.213.101) in 2 ms
 
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
;; Received 490 bytes from 198.32.64.12#53(L.ROOT-SERVERS.NET) in 154 ms
 
yahoo.com.              172800  IN      NS      ns1.yahoo.com.
yahoo.com.              172800  IN      NS      ns2.yahoo.com.
yahoo.com.              172800  IN      NS      ns3.yahoo.com.
yahoo.com.              172800  IN      NS      ns4.yahoo.com.
yahoo.com.              172800  IN      NS      ns5.yahoo.com.
;; Received 200 bytes from 192.5.6.30#53(a.gtld-servers.net) in 111 ms
 
fr.yahoo.com.           1800    IN      CNAME   www.euro.yahoo-eu1.akadns.net.
.                       3600000 IN      NS      A.ROOT-SERVERS.net.
.                       3600000 IN      NS      B.ROOT-SERVERS.net.
.                       3600000 IN      NS      C.ROOT-SERVERS.net.
.                       3600000 IN      NS      D.ROOT-SERVERS.net.
.                       3600000 IN      NS      E.ROOT-SERVERS.net.
.                       3600000 IN      NS      F.ROOT-SERVERS.net.
.                       3600000 IN      NS      G.ROOT-SERVERS.net.
.                       3600000 IN      NS      H.ROOT-SERVERS.net.
.                       3600000 IN      NS      I.ROOT-SERVERS.net.
.                       3600000 IN      NS      J.ROOT-SERVERS.net.
.                       3600000 IN      NS      K.ROOT-SERVERS.net.
.                       3600000 IN      NS      L.ROOT-SERVERS.net.
.                       3600000 IN      NS      M.ROOT-SERVERS.net.
;; Received 281 bytes from 66.218.71.63#53(ns1.yahoo.com) in 154 ms




La partie intéressante dans toutes ces lignes est donc :

- Les lignes qui affichent le nom des serveurs qui ont l'enregistrement


- La ligne :

Received XXX bytes from x.x.x.x#53(X.SERVEURDNS.TLD) in XXX ms


Qui nous montre quel serveur à répondu à notre requête (sur le #53 : port 53).


D'autres options sont utiles comme l'option "@ServeurDNS", ou encore "-b" (voyez le "man dig").

Pour Windows

Voir cette page : http://members.shaw.ca/nicholas.fong/dig/