Dépannage et outils

Les sources de dysfonctionnement des services de noms peuvent être nombreuses et parfois complexes à résoudre. Voici quelques outils et méthodes qui peuvent être utilisées.

Les erreurs de chargement de bind

Si vous avez une erreur similaire à celle-ci :

Problème de clés entre named et rndc
root@knoppix:/etc/bind# /etc/init.d/bind9 stop
Stopping domain name service: namedrndc: connection to remote host closed
This may indicate that the remote server is using an older version of
the command protocol, this host is not authorized to connect,
or the key is invalid.

Le problème est lié à rndc, et souvent à des clés qui sont différentes ou mal définies entre named.conf et rndc.conf. Vérifiez donc bien tous les paramètres.

Vérifiez dans les journaux (en général /var/log/daemon) qu'il n'y a pas d'erreur de chargement de named. Voici un exemple de log.

# Log après chargement des zones
Apr  8 23:12:46 knoppix named[1066]: starting BIND 9.2.1
Apr  8 23:12:46 knoppix named[1066]: using 1 CPU
Apr  8 23:12:46 knoppix  []

named[1068]: loading configuration from '/etc/bind/named.conf'
named[1068]: no IPv6 interfaces found
named[1068]: listening on IPv4 interface lo, 127.0.0.1#53
named[1068]: listening on IPv4 interface eth0, 192.168.90.100#53
named[1068]: command channel listening on 127.0.0.1#953
named[1068]: zone 0.in-addr.arpa/IN: loaded serial 1
named[1068]: zone 127.in-addr.arpa/IN: loaded serial 1
named[1068]: zone 255.in-addr.arpa/IN: loaded serial 1
named[1068]: zone localhost/IN: loaded serial 1
named[1068]: zone foo.org/IN: loaded serial 2003040101
Apr  8 23:12:46 knoppix named[1068]: running

Ou encore avec la commande ps :

root:# ps aux | grep named
root  1066  0.0  1.6 10312 2136 ?  S    23:12   0:00 /usr/sbin/named
root  1067  0.0  1.6 10312 2136 ?  S    23:12   0:00 /usr/sbin/named
root  1068  0.0  1.6 10312 2136 ?  S    23:12   0:00 /usr/sbin/named
root  1069  0.0  1.6 10312 2136 ?  S    23:12   0:00 /usr/sbin/named
root  1070  0.0  1.6 10312 2136 ?  S    23:12   0:00 /usr/sbin/named

Vous pouvez également faire des tests successifs pour tester la résolution de nom.

#Vérification avec des ping

root@ns1:~# ping -c1 ns1.foo.org
PING ns1.foo.org (192.168.90.100): 56 data bytes
64 bytes from 192.168.90.100: icmp_seq=0 ttl=64 time=0.1 ms
--- ns1.foo.org ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.1 ms

 

root@ns1:~# ping -c1 www.foo.org
PING ns1.foo.org (192.168.90.100): 56 data bytes
64 bytes from 192.168.90.100: icmp_seq=0 ttl=64 time=0.1 ms
--- ns1.foo.org ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.1 ms

nslookup, dig

La commande nslookup est de moins en moins utilisée, nous la verrons donc pas. Nous allons voir l'utilisation de dig.

Ces commandes sont très largement utilisées par les administrateurs de réseau pour résoudre les problèmes liés aux services de résolution de noms.

Tests avec dig :

# Test sur une zone
root@knoppix:/etc/bind# dig any foo.org
; <<>> DiG 9.2.1 <<>> any foo.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32752
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;foo.org.                       IN      ANY

;; ANSWER SECTION:

foo.org.                604800  IN      SOA     ns1.foo.org.   \
        root.ns1.foo.org. 2003040102 604800 86400 2419200 604800
foo.org.                604800  IN      NS      ns1.foo.org.

;; ADDITIONAL SECTION:
ns1.foo.org.            604800  IN      A       192.168.90.100

;; Query time: 7 msec
;; SERVER: 192.168.90.100#53(192.168.90.100)
;; WHEN: Tue Apr  8 23:30:05 2003
;; MSG SIZE  rcvd: 100

 

# Récupération de l'enregistrement SOA d'une zone

root@knoppix:/etc/bind# dig soa foo.org

; <<>> DiG 9.2.1 <<>> soa foo.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15982
;; flags: qr aa rd ra; QUERY:1, ANSWER:1, AUTHORITY:1, ADDITIONAL:1

;; QUESTION SECTION:
;foo.org.                       IN      SOA

;; ANSWER SECTION:

foo.org.                604800  IN      SOA     ns1.foo.org.     \
          root.ns1.foo.org. 2003040102 604800 86400 2419200 604800

;; AUTHORITY SECTION:
foo.org.                604800  IN      NS      ns1.foo.org.

;; ADDITIONAL SECTION:
ns1.foo.org.            604800  IN      A       192.168.90.100

;; Query time: 2 msec
;; SERVER: 192.168.90.100#53(192.168.90.100)
;; WHEN: Tue Apr  8 23:30:43 2003
;; MSG SIZE  rcvd: 100

 

#Vérification de la résolution de nom sur www.foo.org

root@knoppix:/etc/bind# dig www.foo.org

; <<>> DiG 9.2.1 <<>> www.foo.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52961
;; flags: qr aa rd ra; QUERY:1, ANSWER:2, AUTHORITY:1, ADDITIONAL:0

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

;; ANSWER SECTION:
www.foo.org.            604800  IN      CNAME   ns1.foo.org.
ns1.foo.org.            604800  IN      A       192.168.90.100

;; AUTHORITY SECTION:
foo.org.                604800  IN      NS      ns1.foo.org.

;; Query time: 3 msec
;; SERVER: 192.168.90.100#53(192.168.90.100)
;; WHEN: Tue Apr  8 23:31:49 2003
;; MSG SIZE  rcvd: 77

 

# Vérification de la résolution de nom inverse.

root@ns1:/etc/bind# dig ptr 100.90.168.192.in-addr.arpa
; <<>> DiG 9.2.1 <<>> ptr 100.90.168.192.in-addr.arpa
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30642
;; flags: qr aa rd ra; QUERY:1, ANSWER:1, AUTHORITY:1, ADDITIONAL:0
;; QUESTION SECTION:
;100.90.168.192.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
100.90.168.192.in-addr.arpa. \
                   604800 IN  PTR  ns1.90.168.192.in-addr.arpa.

;; AUTHORITY SECTION:
90.168.192.in-addr.arpa.     \
                   604800 IN      NS      ns1.90.168.192.in-addr.arpa.

;; Query time: 7 msec
;; SERVER: 192.168.90.100#53(192.168.90.100)
;; WHEN: Tue Apr  8 23:45:39 2003
;; MSG SIZE  rcvd: 77

Le cache du DNS

Le cache permet également de détecter certaines causes d'erreurs. Le problème est qu'il est en mémoire. Pour le récupérer sous la forme d'un fichier utilisez la commande kill -INT PID de named. Vous récupérez un fichier /var/named/named_dump.db que vous pouvez exploiter.

Les journaux

Si vous êtes en phase de configuration, pensez (ce doit être un réflexe) à consulter les fichiers de journalisation, notamment /var/log/messages. Cette opération permet dans bien des cas de corriger des erreurs qui se trouvent dans les fichiers de configuration. Voici comment procéder :

  • Arrêt du serveur

  • Nettoyage du fichier > /var/log/messages

  • Démarrage du serveur

  • Consultation des logs : cat /var/log/daemon.log | more

Pour les fichiers logs, utilisez, si le fichier est trop gros la commande tail :

# tail -N NomFichier
# Affiche les N dernières lignes d'un fichier
# Par exemple, affiche les 250 dernières lignes d'un fichiers
# tail -n 250 /var/log/daemon.log | more