Debian logo [inetdoc.LINUX]

6. Résolution des noms de domaines et d'hôtes

Commandes host & dig

L'opération de résolution consiste à faire la correspondance entre un nom de domaine et son adresse IP. Pour effectuer ces opérations de résolution on utilise un service Internet particulier appelé Domain Name System ou DNS. Ce service fonctionne sur le même mode qu'un annuaire téléphonique dans lequel les chiffres du numéro de téléphone sont remplacés par les chiffres de l'adresse IP et le nom d'abonné est remplacé par le nom de domaine.

La commande historique host effectue l'opération de recherche de l'adresse IP correspondant à un nom d'hôte réseau enregistré sur le service DNS et vice versa :

  • Résolution d'un nom d'hôte.

    $ host www.nic.fr
    www.nic.fr is an alias for rigolo.nic.fr.
    rigolo.nic.fr has address 192.134.4.20
    
  • Résolution d'une adresse IP.

    $ host 192.134.4.20
    20.4.134.192.in-addr.arpa domain name pointer rigolo.nic.fr.
    

Il existe une autre commande historique qui donne davantage d'informations sur les jeux de questions/réponses DNS : nslookup. Cette commande est disponible sur les systèmes Micro$oft ; elle est accessible à partir d'un shell. Dans l'univers Unix/Linux, cette commande est abandonnée au profit de la commande dig qui offre davantage d'options et des messages d'erreurs plus rigoureux. Voici un exemple d'exécution à partir du même exemple que ci-dessus.

Exemple de requête DNS de type A qui renvoie l'adresse IP correspondant à un nom d'hôte.

$ dig www.nic.fr

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

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

;; ANSWER SECTION:2
www.nic.fr.             163437  IN      CNAME   rigolo.nic.fr.
rigolo.nic.fr.          163437  IN      A       192.134.4.20

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

;; ADDITIONAL SECTION:4
dns.inria.fr.           23315   IN      A       193.51.208.13
ns0.oleane.net.         133065  IN      A       194.2.0.30
ns1.nic.fr.             153582  IN      A       192.93.0.1
ns1.nic.fr.             153582  IN      AAAA    2001:660:3005:1::1:1
ns2.nic.fr.             153582  IN      A       192.93.0.4
ns2.nic.fr.             153582  IN      AAAA    2001:660:3005:1::1:2
ns3.nic.fr.             70358   IN      A       192.134.0.49
ns3.nic.fr.             70358   IN      AAAA    2001:660:3006:1::1:1
ns-sec.ripe.net.        169587  IN      A       193.0.0.196

;; Query time: 22 msec5
;; SERVER: 127.0.0.1#53(127.0.0.1)6
;; WHEN: Mon Mar  3 17:27:29 2008
;; MSG SIZE  rcvd: 395

Exemple de requête DNS de type PTR qui renvoie le nom d'hôte correspondant à une adresse IP.

$ dig -x 192.134.4.20

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

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

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

;; AUTHORITY SECTION:3
4.134.192.in-addr.arpa. 163116  IN      NS      ns2.nic.fr.
4.134.192.in-addr.arpa. 163116  IN      NS      ns3.nic.fr.
4.134.192.in-addr.arpa. 163116  IN      NS      ns1.nic.fr.

;; ADDITIONAL SECTION:4
ns3.nic.fr.             70037   IN      A       192.134.0.49
ns3.nic.fr.             70037   IN      AAAA    2001:660:3006:1::1:1
ns1.nic.fr.             153261  IN      A       192.93.0.1
ns1.nic.fr.             153261  IN      AAAA    2001:660:3005:1::1:1
ns2.nic.fr.             153261  IN      A       192.93.0.4
ns2.nic.fr.             153261  IN      AAAA    2001:660:3005:1::1:2

;; Query time: 2 msec5
;; SERVER: 127.0.0.1#53(127.0.0.1)6
;; WHEN: Mon Mar  3 17:32:50 2008
;; MSG SIZE  rcvd: 256

Ces exemples montrent que la commande dig donne des informations très complètes sur l'état des requêtes.

1 1

Le champ QUESTION reprend le terme de la requête émise.

2 2

Le champ ANSWER donne la réponse à la requête.

3 3

Le champ AUTHORITY donne la liste des serveurs de noms qui ont autortité sur les enregistrements DNS. Ce sont les seuls serveurs aptes à fournir une réponse aux requêtes sur le domaine concerné.

4 4

Le champ ADDITIONAL donne les adresses IP des serveurs DNS de référence du domaine.

5 5

Le champ Query time donne le temps de traitement de la requête. La valeur obtenue permet de déduire si le serveur interrogé a déjà la réponse en mémoire cache ou non.

6 6

Le champ SERVER identifie le serveur qui a pris la requête DNS en charge.

Pour obtenir la syntaxe de toutes les options disponibles, il faut accéder aux pages de manuels Unix :

  • via la console avec les commandes man host et man dig.

  • via l'interface graphique avec le centre d'aide KDE : Pages de manuels UnixSection 1 Commandes utilisateurdig.

Pour aller plus loin dans l'étude du fonctionnement du service de noms de domaines, il est conseillé de lire le support Services DNS et DHCP.