Quand la résolution DNS commence à être lente sur une machine il est parfois utile de résoudre quelques adresses manuellement pour comprendre ce qu'il se passe.

Sous Linux la commande de prédilection est dig et se trouve dans le paquet dnsutils. On a souvent l'habitude d'utiliser pour résoudre une adresse la commande nslookup mais dig est plus commode. Entre parenthèses, il est à noter que ces deux dernières commandes sont installées par le même paquet: dnsutils.

Pour résoudre l'adresse www.fsf.org et donc connaître son adresse IP:

dig www.fsf.org

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> www.fsf.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57722
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.fsf.org.                   IN      A

;; ANSWER SECTION:
www.fsf.org.            1797    IN      A       208.118.235.174

;; Query time: 3 msec
;; SERVER: 192.168.0.254#53(192.168.0.254)
;; WHEN: Mon Aug  8 08:12:49 2016
;; MSG SIZE  rcvd: 45

De façon plus concise:

dig www.fsf.org +short
208.118.235.174

Sur la première requête on voit l'adresse IP du serveur DNS qui nous a répondu: 192.168.0.254. Il s'agit de la Freebox server.

Maintenant si l'on veut interroger un autre serveur DNS, par exemple un de ceux fournis par l'association FDN, on procédera comme ceci:

dig @80.67.169.12 www.fsf.org +short
208.118.235.174

L'adresse 80.67.169.12 étant un des deux serveurs DNS fournis par FDN.

Imaginons maintenant que l'on souhaite visualiser tous les appels successifs aux différents serveurs DNS. On utilisera pour cela l'option +trace de la commande dig:

dig @80.67.169.12 www.fsf.org +trace

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @80.67.169.12 www.fsf.org +trace
; (1 server found)
;; global options: +cmd
.                       403117  IN      NS      g.root-servers.net.
.                       403117  IN      NS      e.root-servers.net.
.                       403117  IN      NS      h.root-servers.net.
.                       403117  IN      NS      a.root-servers.net.
.                       403117  IN      NS      f.root-servers.net.
.                       403117  IN      NS      m.root-servers.net.
.                       403117  IN      NS      c.root-servers.net.
.                       403117  IN      NS      l.root-servers.net.
.                       403117  IN      NS      i.root-servers.net.
.                       403117  IN      NS      d.root-servers.net.
.                       403117  IN      NS      b.root-servers.net.
.                       403117  IN      NS      j.root-servers.net.
.                       403117  IN      NS      k.root-servers.net.
;; Received 496 bytes from 80.67.169.12#53(80.67.169.12) in 140 ms

org.                    172800  IN      NS      a0.org.afilias-nst.info.
org.                    172800  IN      NS      a2.org.afilias-nst.info.
org.                    172800  IN      NS      b0.org.afilias-nst.org.
org.                    172800  IN      NS      b2.org.afilias-nst.org.
org.                    172800  IN      NS      c0.org.afilias-nst.info.
org.                    172800  IN      NS      d0.org.afilias-nst.org.
;; Received 473 bytes from 199.7.83.42#53(199.7.83.42) in 313 ms

fsf.org.                86400   IN      NS      ns3.gnu.org.
fsf.org.                86400   IN      NS      ns2.gnu.org.
fsf.org.                86400   IN      NS      ns1.gnu.org.
;; Received 191 bytes from 199.19.56.1#53(199.19.56.1) in 310 ms

www.fsf.org.            300     IN      A       208.118.235.174
fsf.org.                300     IN      NS      ns2.gnu.org.
fsf.org.                300     IN      NS      ns3.gnu.org.
fsf.org.                300     IN      NS      ns1.gnu.org.
;; Received 207 bytes from 208.118.235.164#53(208.118.235.164) in 98 ms

La première liste, celle des serveurs root, a été renvoyée par 80.67.169.12, le serveur de FDN auquel notre commande dig était adressée.

Parmi cette liste, le serveur l.root-servers.net (199.7.83.42) a été choisi pour envoyer la deuxième requête, on le voit avec le message "Received 473 bytes from 199.7.83.42#53(199.7.83.42) in 313 ms".

Ensuite le serveur a0.org.afilias-nst.info (199.19.56.1) a été utilisé ... et ainsi de suite.

On peut retrouver facilement les serveurs utilisés en se basant sur leur adresse IP avec la résolution inverse de la commande dig:

dig -x 199.7.83.42 +short
l.root-servers.net.