Dépannage

Cette section aide à trouver la cause d'éventuels problèmes liés au DNS et à BIND9.

Tests

resolv.conf

The first step in testing BIND9 is to add the nameserver's IP Address to a hosts resolver. The Primary nameserver should be configured as well as another host to double check things. Refer to Configuration de client DNS for details on adding nameserver addresses to your network clients, and afterwards check that the file /etc/resolv.conf contains (for this example):

nameserver	192.168.1.10
nameserver	192.168.1.11

Nameservers that listen at 127.* are responsible for adding their own IP addresses to resolv.conf (using resolvconf). This is done via the file /etc/default/bind9 by changing the line RESOLVCONF=no to RESOLVCONF=yes.

Vous devriez ajouter aussi l'adresse IP du serveur de noms secondaire en cas d'indisponibilité du serveur primaire.

dig

Si vous avez installé le paquet dnsutils, vous pouvez tester votre configuration avec l'utilitaire de recherche DNS dig :

  • Après avoir installé BIND9, utilisez dig sur l'interface loopback pour vous assurer qu'il écoute bien le port 53. Saisissez dans un terminal :

    dig -x 127.0.0.1
    

    Vous devriez obtenir un résultat similaire à ce qui suit :

    ;; Query time: 1 msec
    ;; SERVER: 192.168.1.10#53(192.168.1.10)
    
  • Si vous avez configuré BIND9 en tant que serveur de noms de cache, exécutez « dig » sur un domaine extérieur pour vérifier le temps de requête :

    dig ubuntu.com
    

    Notez le temps de réponse en fin de résultat :

    ;; Query time: 49 msec
    

    Ce temps devrait être plus court après un deuxième « dig » :

    ;; Query time: 1 msec
    

ping

Envoyez une requête ICMP à l'aide du programme ping afin de démontrer comment des programmes se servent d'un DNS pour résoudre un nom d'hôte. Depuis un terminal, saisissez :

ping example.com

Vous obtiendrez un résultat similaire à ce qui suit si le serveur DNS peut résoudre le nom ns.example.com en une adresse IP :

PING ns.exemple.com (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.800 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.813 ms

named-checkzone

Un excellent moyen pour tester vos fichiers de zone est d'employer l'utilitaire named-checkzone installé avec le paquet bind9. Cet utilitaire vous permet de vous assurer que la configuration est correcte avant de redémarrer BIND9 et d'appliquer les changements.

  • Afin de vérifier notre fichier exemple de zone directe, entrez ce qui suit dans une ligne de commande :

    named-checkzone example.com /etc/bind/db.example.com
    

    Si tout est configuré correctement, vous devriez voir une sortie similaire à :

    zone example.com/IN: loaded serial 6
    OK
    
  • De la même façon, afin de vérifier le fichier de zone inverse, entrez :

    named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
    

    La sortie devrait être semblable à :

    zone 1.168.192.in-addr.arpa/IN: loaded serial 3
    OK
    

Le numéro de série de votre fichier de zone sera probablement différent.

Journal

BIND9 dispose d'un large panel d'options de configuration de journalisation. Voici les deux principales. L'option channel définit où les journaux sont enregistrés, et l'option category détermine quelles informations y sont consignées.

si aucune option de journalisation n' est configurée l'option par défaut est:

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };
};

Cette section décrit comment paramétrer BIND9 pour envoyer les messages de débogage concernant les requêtes DNS vers un fichier distinct.

  • Premièrement, nous devons configurer un canal pour spécifier vers quel fichier envoyer les messages. Modifiez /etc/bind/named.conf.local et ajoutez ce qui suit :

    logging {
        channel query.log {      
            file "/var/log/query.log";
            severity debug 3; 
        }; 
    };
    
  • Ensuite, configurez une catégorie pour envoyer toutes les requêtes DNS au fichier de requêtes:

    logging {
        channel query.log {      
            file "/var/log/query.log"; 
            severity debug 3; 
        }; 
        category queries { query.log; }; 
    };
    

À noter : l'option debug peut prendre les valeurs 1 à 3. Si aucune valeur n'est spécifiée alors le niveau 1 est le niveau par défaut.

  • Puisque ledémon nommé est exécuté en tant qu'utilisateur bind le fichier /var/log/query.log doit être créé et le propriétaire changé :

    sudo touch /var/log/query.log
    sudo chown bind /var/log/query.log
    
  • Il faut mettre à jour le profil AppArmor pour que le démon named puisse écrire dans le nouveau fichier journal. Modifiez /etc/apparmor.d/usr.sbin.named en ajoutant :

    /var/log/query.log w,
    

    Rechargez ensuite le profil :

    cat /etc/apparmor.d/usr.sbin.named | sudo apparmor_parser -r
    

    Pour plus d'informations sur AppArmor , référez-vous à AppArmor

  • Redémarrez maintenant BIND9 pour que les changements prennent effet :

    sudo systemctl restart bind9.service
    

Vous devriez voir le fichier /var/log/query.log rempli d'informations de requêtes. Ceci est un exemple simple des options de journalisation de BIND9. Consultez Informations supplémentaires pour plus d'informations sur les options avancées.