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:.
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
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
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
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]
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].
Vous êtes ici :