4. Requêtes DNS sur les différents types d'enregistrements (Resource Records)

Avant d'aborder la déclaration de nouvelles zones, il faut installer et valider le fonctionnement du service. La phase de validation passe par une batterie de tests d'interrogation des différents champs du service DNS.

Cette section est basée sur la commande dig. Les pages de manuels de cette commande doivent servir de base de réponse aux questions suivantes.

[Note] Pourquoi abandonner nslookup ?

La commande nslookup est la commande historique liée aux requêtes du service DNS. Le principal reproche fait à cette commande vient de ses réponses inadéquates en cas d'erreurs. Malheureusement, ce comportement non conforme a été utilisé dans de très nombreux développements de shell scripts. Pour ne pas entraîner des problèmes en cascade, les développeurs ont décidé d'initier un nouveau développement avec les versions 8.x puis 9.x de BIND : la commande dig. Comme ces travaux pratiques utilisent une version 9.x de BIND, il est logique de s'appuyer sur cette nouvelle commande dig.

Q10.

Comment reconnaître le serveur DNS utilisé lors d'une requête avec la commande dig ? Comment peut on visualiser l'utilisation du cache du service DNS ?

Lire attentivement les résultats d'une exécution de la commande dig sur un nom de domaine quelconque.

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 1301ms tandis que la seconde a un temps de traitement de 0ms. Cette seconde réponse est fournie par le cache du serveur DNS.

# dig www.iana.org

; <<>> DiG 9.8.1-P1 <<>> www.iana.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61419
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4

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

;; ANSWER SECTION:
www.iana.org.           600     IN      CNAME   ianawww.vip.icann.org.
ianawww.vip.icann.org.  30      IN      A       192.0.32.8

;; AUTHORITY SECTION:
vip.icann.org.          3600    IN      NS      gtm1.lax.icann.org.
vip.icann.org.          3600    IN      NS      gtm1.dc.icann.org.

;; ADDITIONAL SECTION:
gtm1.dc.icann.org.      21600   IN      A       192.0.47.252
gtm1.dc.icann.org.      21600   IN      AAAA    2620:0:2830:296::252
gtm1.lax.icann.org.     21600   IN      A       192.0.32.252
gtm1.lax.icann.org.     21600   IN      AAAA    2620:0:2d0:296::252

;; Query time: 1301 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Oct  8 00:28:32 2012
;; MSG SIZE  rcvd: 211
# dig www.iana.org

; <<>> DiG 9.8.1-P1 <<>> www.iana.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61419
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4

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

;; ANSWER SECTION:
www.iana.org.           600     IN      CNAME   ianawww.vip.icann.org.
ianawww.vip.icann.org.  30      IN      A       192.0.32.8

;; AUTHORITY SECTION:
vip.icann.org.          3600    IN      NS      gtm1.lax.icann.org.
vip.icann.org.          3600    IN      NS      gtm1.dc.icann.org.

;; ADDITIONAL SECTION:
gtm1.dc.icann.org.      21600   IN      A       192.0.47.252
gtm1.dc.icann.org.      21600   IN      AAAA    2620:0:2830:296::252
gtm1.lax.icann.org.     21600   IN      A       192.0.32.252
gtm1.lax.icann.org.     21600   IN      AAAA    2620:0:2d0:296::252

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Oct  8 00:28:40 2012
;; MSG SIZE  rcvd: 211

Q11.

Quelles sont les options de la commande dig à utiliser pour émettre des requêtes des types suivants : NS, A, PTR, et MX ? Donner un exemple de chaque type.

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:.

Requête sur un serveur de noms, NS
$ dig ns iana.org

; <<>> DiG 9.8.1-P1 <<>> ns iana.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25044
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;iana.org.                      IN      NS

;; ANSWER SECTION:
iana.org.               86400   IN      NS      d.iana-servers.net.
iana.org.               86400   IN      NS      ns.icann.org.
iana.org.               86400   IN      NS      c.iana-servers.net.
iana.org.               86400   IN      NS      a.iana-servers.net.
iana.org.               86400   IN      NS      b.iana-servers.net.

;; Query time: 313 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  7 22:41:52 2012
;; MSG SIZE  rcvd: 129
Requête sur un nom d'hôte, A
$ dig a iana.org

; <<>> DiG 9.8.1-P1 <<>> a iana.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56033
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 0

;; QUESTION SECTION:
;iana.org.                      IN      A

;; ANSWER SECTION:
iana.org.               600     IN      A       192.0.43.8

;; AUTHORITY SECTION:
iana.org.               86293   IN      NS      a.iana-servers.net.
iana.org.               86293   IN      NS      ns.icann.org.
iana.org.               86293   IN      NS      c.iana-servers.net.
iana.org.               86293   IN      NS      b.iana-servers.net.
iana.org.               86293   IN      NS      d.iana-servers.net.

;; Query time: 190 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  7 22:43:39 2012
;; MSG SIZE  rcvd: 145
Requête sur une adresse IP, PTR
$ dig -x 192.0.32.9

; <<>> DiG 9.8.1-P1 <<>> -x 192.0.32.9
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16786
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 0

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

;; ANSWER SECTION:
9.32.0.192.in-addr.arpa. 21600  IN      PTR     www.internic.net.

;; AUTHORITY SECTION:
32.0.192.in-addr.arpa.  86400   IN      NS      b.iana-servers.net.
32.0.192.in-addr.arpa.  86400   IN      NS      a.iana-servers.net.
32.0.192.in-addr.arpa.  86400   IN      NS      c.iana-servers.net.
32.0.192.in-addr.arpa.  86400   IN      NS      ns.icann.org.
32.0.192.in-addr.arpa.  86400   IN      NS      d.iana-servers.net.

;; Query time: 426 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  7 22:46:44 2012
;; MSG SIZE  rcvd: 174
Requête sur un agent de transfert de courrier électronique, MX
$ dig mx internic.net

; <<>> DiG 9.8.1-P1 <<>> mx internic.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45729
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;internic.net.                  IN      MX

;; ANSWER SECTION:
internic.net.           600     IN      MX      10 pechorax.dc.icann.org.
internic.net.           600     IN      MX      10 pechorax.lax.icann.org.

;; Query time: 112 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  7 22:48:27 2012
;; MSG SIZE  rcvd: 96

Q12.

Quelle est l'option de la commande dig à utiliser pour émettre des requêtes itératives ? Donner un exemple

Consulter les pages de manuels de la commande dig à la recherche du traçage des étapes d'une requête.

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

$ dig +trace ns iana.org

; <<>> DiG 9.8.1-P1 <<>> +trace ns iana.org
;; global options: +cmd
.                       511837  IN      NS      i.root-servers.net.
.                       511837  IN      NS      j.root-servers.net.
.                       511837  IN      NS      c.root-servers.net.
.                       511837  IN      NS      h.root-servers.net.
.                       511837  IN      NS      a.root-servers.net.
.                       511837  IN      NS      l.root-servers.net.
.                       511837  IN      NS      d.root-servers.net.
.                       511837  IN      NS      e.root-servers.net.
.                       511837  IN      NS      g.root-servers.net.
.                       511837  IN      NS      m.root-servers.net.
.                       511837  IN      NS      f.root-servers.net.
.                       511837  IN      NS      b.root-servers.net.
.                       511837  IN      NS      k.root-servers.net.
;; Received 512 bytes from 127.0.0.1#53(127.0.0.1) in 8 ms

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

iana.org.               86400   IN      NS      a.iana-servers.net.
iana.org.               86400   IN      NS      b.iana-servers.net.
iana.org.               86400   IN      NS      c.iana-servers.net.
iana.org.               86400   IN      NS      d.iana-servers.net.
iana.org.               86400   IN      NS      ns.icann.org.
;; Received 173 bytes from 2001:500:48::1#53(2001:500:48::1) in 1101 ms

iana.org.               86400   IN      NS      c.iana-servers.net.
iana.org.               86400   IN      NS      a.iana-servers.net.
iana.org.               86400   IN      NS      d.iana-servers.net.
iana.org.               86400   IN      NS      b.iana-servers.net.
iana.org.               86400   IN      NS      ns.icann.org.
;; Received 129 bytes from 199.43.132.53#53(199.43.132.53) in 18 ms
[Note] Note

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 à alimenter 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. Les contrôles d'accès qui permettent de ne satisfaire que les requêtes émises par les hôtes appartenant aux «réseaux de confiance» sont présentées dans la Section 9, « Sécurisation de premier niveau ».

Q13.

Quelle est la syntaxe de la commande dig à utiliser pour interroger la classe CHAOS ? Donner deux exemples de requêtes sur les champs version.bind et authors.bind.

Consulter les pages de manuels de la commande dig à la recherche des définitions de classes.

Tous 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 souvent recherchés : la version du logiciel et la liste de ses auteurs.

$ dig @localhost. version.bind txt chaos +novc

; <<>> DiG 9.8.1-P1 <<>> @localhost. version.bind txt chaos +novc
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39711
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

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

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.8.1-P1"

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

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Sun Oct  7 23:01:44 2012
;; MSG SIZE  rcvd: 65
$ dig @localhost. authors.bind txt chaos +novc

; <<>> DiG 9.8.1-P1 <<>> @localhost. authors.bind txt chaos +novc
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36899
;; flags: qr aa rd; QUERY: 1, ANSWER: 15, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

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

;; ANSWER SECTION:
authors.bind.           0       CH      TXT     "Matt Nelson"
authors.bind.           0       CH      TXT     "Jeremy C. Reed"
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     "Evan Hunt"
authors.bind.           0       CH      TXT     "JINMEI Tatuya"
authors.bind.           0       CH      TXT     "David Lawrence"
authors.bind.           0       CH      TXT     "Danny Mayer"
authors.bind.           0       CH      TXT     "Damien Neil"

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

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Sun Oct  7 23:03:43 2012
;; MSG SIZE  rcvd: 430