Debian logo [inetdoc.LINUX]

4. Requêtes DNS sur les différents types de Resource Records (RRs)

L'utilisation du cache du serveur DNS est identifiable à partir du temps de traitement d'une requête. Ce temps de traitement apparaît dans le champ Query time des résultats affichés à la suite d'un appel à la commande dig.

Dans les deux exemples ci-dessous, le serveur interrogé est bien le service local avec l'adresse IP 127.0.0.1. La première requête a un temps de traitement de 2329ms tandis que la seconde a un temps de traitement de 4ms. Cette seconde réponse est fournie par le cache du serveur DNS.

saphir:~# dig www.linux-france.org

<snipped/>
;; Query time: 2329 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu May 26 14:16:15 2005
;; MSG SIZE  rcvd: 146
saphir:~# dig www.linux-france.org

<snipped/>
;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu May 26 14:17:12 2005
;; MSG SIZE  rcvd: 146

Les différents enregistrements ou Resource Records d'une zone sont accessibles à partir de requêtes individuelles. Les options de la commande dig, documentées dans les pages de manuels (man dig), permettent d'indiquer le type d'enregistrement demandé (RR) après le nom de domaine. Les réponses aux requêtes suivantes apparaissent après la mention ANSWER SECTION:.

4.1. Types de la classe Internet IN

Requête sur un serveur de noms, NS
saphir:~$ dig nic.fr ns

; <<>> DiG 9.3.1 <<>> nic.fr ns
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23117
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;nic.fr.                                IN      NS

;; ANSWER SECTION:
nic.fr.                 91677   IN      NS      dns.inria.fr.
nic.fr.                 91677   IN      NS      ns0.oleane.net.
nic.fr.                 91677   IN      NS      ns1.nic.fr.
nic.fr.                 91677   IN      NS      ns1.oleane.net.
nic.fr.                 91677   IN      NS      ns2.nic.fr.
nic.fr.                 91677   IN      NS      ns3.nic.fr.
nic.fr.                 91677   IN      NS      ns-sec.ripe.net.

;; Query time: 137 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 28 16:15:05 2005
;; MSG SIZE  rcvd: 174
Requête sur un nom d'hôte, A
saphir:~$ dig www.nic.fr

; <<>> DiG 9.3.1 <<>> www.nic.fr
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61145
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 10

;; QUESTION SECTION:
;www.nic.fr.                    IN      A

;; ANSWER SECTION:
www.nic.fr.             172791  IN      CNAME   rigolo.nic.fr.
rigolo.nic.fr.          172101  IN      A       192.134.4.20

;; AUTHORITY SECTION:
nic.fr.                 91532   IN      NS      ns0.oleane.net.
nic.fr.                 91532   IN      NS      ns1.nic.fr.
nic.fr.                 91532   IN      NS      ns1.oleane.net.
nic.fr.                 91532   IN      NS      ns2.nic.fr.
nic.fr.                 91532   IN      NS      ns3.nic.fr.
nic.fr.                 91532   IN      NS      ns-sec.ripe.net.
nic.fr.                 91532   IN      NS      dns.inria.fr.

;; ADDITIONAL SECTION:
dns.inria.fr.           172791  IN      A       193.51.208.13
ns0.oleane.net.         349     IN      A       194.2.0.30
ns1.nic.fr.             345592  IN      A       192.93.0.1
ns1.oleane.net.         592     IN      A       194.2.0.60
ns2.nic.fr.             345592  IN      A       192.93.0.4
ns2.nic.fr.             345592  IN      AAAA    2001:660:3005:1::1:2
ns3.nic.fr.             345592  IN      A       192.134.0.49
ns3.nic.fr.             345592  IN      AAAA    2001:660:3006:1::1:1
ns-sec.ripe.net.        125568  IN      A       193.0.0.196
ns-sec.ripe.net.        130131  IN      AAAA    2001:610:240:0:53::4

;; Query time: 14 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 28 16:17:30 2005
;; MSG SIZE  rcvd: 411
Requête sur une adresse IP, PTR
saphir:~$ dig -x 192.134.4.20

; <<>> DiG 9.3.1 <<>> -x 192.134.4.20
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14789
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;20.4.134.192.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
20.4.134.192.in-addr.arpa. 172800 IN    PTR     rigolo.nic.fr.

;; Query time: 169 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 28 16:51:10 2005
;; MSG SIZE  rcvd: 70
Requête sur un agent de transfert de courrier électronique, MX
saphir:~$ dig nic.fr MX

; <<>> DiG 9.3.1 <<>> nic.fr MX
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59667
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 8

;; QUESTION SECTION:
;nic.fr.                                IN      MX

;; ANSWER SECTION:
nic.fr.                 120655  IN      MX      50 mx1.nic.fr.
nic.fr.                 120655  IN      MX      100 mx2.nic.fr.

;; AUTHORITY SECTION:
nic.fr.                 89308   IN      NS      ns1.oleane.net.
nic.fr.                 89308   IN      NS      ns2.nic.fr.
nic.fr.                 89308   IN      NS      ns3.nic.fr.
nic.fr.                 89308   IN      NS      ns-sec.ripe.net.
nic.fr.                 89308   IN      NS      dns.inria.fr.
nic.fr.                 89308   IN      NS      ns0.oleane.net.
nic.fr.                 89308   IN      NS      ns1.nic.fr.

;; ADDITIONAL SECTION:
dns.inria.fr.           170567  IN      A       193.51.208.13
ns1.nic.fr.             343368  IN      A       192.93.0.1
ns2.nic.fr.             343368  IN      A       192.93.0.4
ns2.nic.fr.             343368  IN      AAAA    2001:660:3005:1::1:2
ns3.nic.fr.             343368  IN      A       192.134.0.49
ns3.nic.fr.             343368  IN      AAAA    2001:660:3006:1::1:1
ns-sec.ripe.net.        123344  IN      A       193.0.0.196
ns-sec.ripe.net.        127907  IN      AAAA    2001:610:240:0:53::4

;; Query time: 73 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 28 16:54:34 2005
;; MSG SIZE  rcvd: 378

Pour émettre une requête itérative (ou non récursive), il faut utiliser l'option +trace.

# dig +trace www.nic.fr

; <<>> DiG 9.3.1 <<>> +trace www.nic.fr
;; global options:  printcmd
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
.                       518400  IN      NS      M.ROOT-SERVERS.NET.
.                       518400  IN      NS      A.ROOT-SERVERS.NET.
.                       518400  IN      NS      B.ROOT-SERVERS.NET.
.                       518400  IN      NS      C.ROOT-SERVERS.NET.
.                       518400  IN      NS      D.ROOT-SERVERS.NET.
.                       518400  IN      NS      E.ROOT-SERVERS.NET.
.                       518400  IN      NS      F.ROOT-SERVERS.NET.
.                       518400  IN      NS      G.ROOT-SERVERS.NET.
.                       518400  IN      NS      H.ROOT-SERVERS.NET.
.                       518400  IN      NS      I.ROOT-SERVERS.NET.
.                       518400  IN      NS      J.ROOT-SERVERS.NET.
.                       518400  IN      NS      K.ROOT-SERVERS.NET.
;; Received 228 bytes from 127.0.0.1#53(127.0.0.1) in 94 ms

fr.                     172800  IN      NS      A.EXT.nic.fr.
fr.                     172800  IN      NS      C.EXT.nic.fr.
fr.                     172800  IN      NS      C.nic.fr.
fr.                     172800  IN      NS      A.nic.fr.
fr.                     172800  IN      NS      B.nic.fr.
fr.                     172800  IN      NS      D.EXT.nic.fr.
fr.                     172800  IN      NS      E.EXT.nic.fr.
;; Received 340 bytes from 198.32.64.12#53(L.ROOT-SERVERS.NET) in 246 ms

www.nic.fr.             172800  IN      CNAME   rigolo.nic.fr.
rigolo.nic.fr.          172800  IN      A       192.134.4.20
nic.fr.                 172800  IN      NS      ns0.oleane.net.
nic.fr.                 172800  IN      NS      ns1.nic.fr.
nic.fr.                 172800  IN      NS      ns1.oleane.net.
nic.fr.                 172800  IN      NS      ns2.nic.fr.
nic.fr.                 172800  IN      NS      ns3.nic.fr.
nic.fr.                 172800  IN      NS      ns-sec.ripe.net.
nic.fr.                 172800  IN      NS      dns.inria.fr.
;; Received 367 bytes from 193.51.208.13#53(A.EXT.nic.fr) in 80 ms

Après tous ces exemples de requêtes, on voit clairement que le fonctionnement par défaut du logiciel BIND est récursif. Cette prise en charge «ouverte» des requêtes peut poser quelques soucis de sécurité. Si il est légitime de prendre complètement en charge les interrogations DNS émises par les hôtes du réseau administré de façon à nourrir le cache et optimiser le fonctionnement du service, il n'en va pas de même pour les hôtes du réseau public. Il est donc important de configurer le service en conséquence. [FIXME: xref vers config]

4.2. Types de la classe CHAOS

Toutes les exemples de requêtes donnés ci-avant utilisent la classe Internet (IN) de façon implicite. Pour interroger un type de la classe CHAOS, il est nécessaire d'indiquer cette classe dans la commande d'interrogation du service DNS. Voici deux exemples de requêtes sur les deux types les plus recherchés.

saphir:~# dig @localhost. version.bind txt chaos +novc

; <<>> DiG 9.3.1 <<>> @localhost. version.bind txt chaos +novc
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60929
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.3.1"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun  2 14:45:47 2005
;; MSG SIZE  rcvd: 62
saphir:~# dig @localhost. authors.bind txt chaos +novc

; <<>> DiG 9.3.1 <<>> @localhost. authors.bind txt chaos +novc
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17999
;; flags: qr aa rd; QUERY: 1, ANSWER: 12, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;authors.bind.                  CH      TXT

;; ANSWER SECTION:
authors.bind.           0       CH      TXT     "Damien Neil"
authors.bind.           0       CH      TXT     "Matt Nelson"
authors.bind.           0       CH      TXT     "Michael Sawyer"
authors.bind.           0       CH      TXT     "Brian Wellington"
authors.bind.           0       CH      TXT     "Mark Andrews"
authors.bind.           0       CH      TXT     "James Brister"
authors.bind.           0       CH      TXT     "Ben Cottrell"
authors.bind.           0       CH      TXT     "Michael Graff"
authors.bind.           0       CH      TXT     "Andreas Gustafsson"
authors.bind.           0       CH      TXT     "Bob Halley"
authors.bind.           0       CH      TXT     "David Lawrence"
authors.bind.           0       CH      TXT     "Danny Mayer"

;; AUTHORITY SECTION:
authors.bind.           0       CH      NS      authors.bind.

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun  2 14:46:49 2005
;; MSG SIZE  rcvd: 355

Les valeurs associées à ces types peuvent donner des renseignements précieux pour une éventuelle attaque sur le service DNS. Il est donc vivement conseillé de masquer ces valeurs lorsque l'on exploite un service DNS directement accessible depuis l'Internet. [FIXME: xref vers config].