next up previous contents
Next: Un DNS pour un Up: Configurer un serveur de Previous: Les fichiers de configuration   Contents

Un serveur de noms qui ne sert que de cache

Le premier fichier de configuration lu par named indique quels autres fichiers lire. Voici le fichier par défaut /etc/named.conf :

/*
 * Fichier /etc/named.conf - Premier fichier lu par named. Cf. named.conf(5)
 *
 * Specifie le(s) chemin(s) ou se trouvent les fichiers de zone DNS.
 *
 * Valeurs possibles : directory chemin
 */

options {
    directory "/var/named";

/*
 * Adresse des serveurs a contacter si le serveur de noms local est incapable
 * de resoudre le nom. Cette option peut remplacer la commande nameserver
 * du fichier /etc/resolv.conf.
 */

    forward only;
    forwarders {
        212.27.32.5;
        212.27.32.6;
    };

};

/*
 * Fichier de cache.
 */

zone "." {
    type hint;
    file "named.ca";
};

/*
 * Fichier utilise pour la resolution inverse. Les adresses IP commencant
 * par 127.0.0 peuvent etre resolues en nom d'hote dans le fichier specifie
 */

zone "0.0.127.in-addr.arpa" {
    type master;
    file "named.local";
};

Le DNS va piocher les informations dans les fichiers named.ca pour la zone . et named.local pour la zone 0.0.127.in-addr.arpa. Ces fichiers sont situés dans le répertoire /var/named (comme indiqué par la ligne ).

La zone . correspond à la zone racine (la racine à tous les domaines de l'Internet, voir figure 1).

Le fichier /var/named/named.ca contient donc l'adresse des DNS qui peuvent renseigner un utilisateur à partir de la racine de la hiérarchie.

La zone 0.0.127.in-addr.arpa permet d'effectuer la résolution inverse de toute les adresses commencant par 127.0.0, donc cette zone permet de résoudre l'adresse 127.0.0.1 en son nom.

On configure ici un serveur de noms maître comme l'indique la ligne . On verra à la section 1.6 comment configurer un serveur de noms esclave.

Pour une version de bind inférieure à 8, c'est le fichier /etc/named.boot qui est lu au démarrage de named :

;
; a caching only nameserver config
;
directory                              /var/named
cache           .                      named.ca
primary         0.0.127.in-addr.arpa   named.local

C'est à peu près les mêmes instructions que dans le fichier /etc/named.conf. Se référer à la DNS HOW-TO [1] pour la suite des opérations, ou installer named version supérieure à 8 (plus sécurisée). Pour savoir la version, taper  :

# named -v
named 8.2.2-P5 Mon Feb 28 10:17:53 EST 2000
        root@porky.devel.redhat.com:/usr/src/bs/BUILD/bind-8.2.2_P5/src/bin/named
#

Voici le fichier /var/named/named.local :

;
; Enregistrement de ressources. Syntaxe :
;
;     proprietaire ttl classe type donnees
;
; ou :
;
;     - proprietaire : nom de domaine ou nom d'hote relatif a
;     l'enregistrement. Nom de domaine de l'enregistrement de ressources
;     precedent par defaut ;
;
;     - ttl (time to live) : indique la duree de validite des informations,
;     en secondes, depuis leur recuperation depuis un serveur DNS. ttl
;     minimal du dernier debut d'autorisation par defaut ;
;
;    - classe : classe d'adresse du reseau. IN pour les resaux TCP/IP (ceux
;    qu'on utilise). Celle de l'enregistrement de ressources precedent par
;    defaut ;
;
;    - type : type d'enregistrement de ressources. Champ OBLIGATOIRE. Le
;    type sera explicite dans chaque exemple ;
;
;    - donnees : donnees associes au type d'enregistrement ;
;
; Cf. named(8).
;
; Debut d'autorisation (SOA=Start Of Authority). Cet enregistrement de
; ressources utilise l'adressage TCP/IP (IN). Le serveur de noms primaire
; a pour nom "localhost", la personne a contacter a pour adresse mel
; "root@localhost".
;

@       IN      SOA     localhost. root.localhost.  (

;
; Les options qui suivent n'ont pas a etre modifiees dans le cas d'une
; configuration simple. Elles concernent le serveur de noms secondaire.
;


    1997022700 ; Serial
    28800      ; Refresh
    14400      ; Retry
    3600000    ; Expire
    86400 )    ; Minimum

;
; "localhost" est le serveur de noms pour le domaine.
;


        IN      NS      localhost.

;
; l'adresse domaine_local.1 (soit 127.0.0.1) sera accociee au nom
; "localhost".
;

1       IN      PTR     localhost.

Noter qu'un nom d'hôte seul se termine par un point (``.'') si c'est un nom relatif au domaine courant (le domaine spécifié par la ligne dans le fichier /etc/named.conf). Ce point est donc extremement important ! Ce domaine courant est représenté par le caractère , et si il est homis (comme à la ligne indiquant le serveur de noms pour le domaine, par exemple), named considère qu'il s'agit du domaine courant.

Le fait de transmettre toute les requêtes qu'on ne peut résoudre au DNS du fournisseur d'accès permet de soulager les DNS de la racine. Ainsi, au lieu de surcharger les DNS connus par le monde entier, on surcharge les DNS connus par tous les clients du fournisseur d'accès.

Voilà, le serveur de noms servant de cache est configuré, il n'y a plus qu'à le relancer pour tester ! Pour cela, taper :

# ndc start
new pid is 3443
#

ou, si le DNS tourne déjà :

# ndc restart
new pid is 3446
#

Pour savoir si il y a des erreurs dans les fichiers de configuration, consulter le fichier /var/log/messages. Si tout s'est bien passé, on devrait avoir :

Sep 28 19:26:02 zecastor named[1513]: named shutting down
Sep 28 19:26:02 zecastor named[1513]: USAGE 970161962 970161765 CPU=0.01u/0s
CHILDCPU=0u/0s
Sep 28 19:26:02 zecastor named[1513]: NSTATS 970161962 970161765
Sep 28 19:26:02 zecastor named[1513]: XSTATS 970161962 970161765 RR=0 RNXD=0
RFwdR=0 RDupR=0 RFail=0 RFErr=0 RErr=0 RAXFR=0 RLame=0 ROpts=0 SSysQ=1 SAns=0
SFwdQ=0 SDupQ=36 SErr=0 RQ=0 RIQ=0 RFwdQ=0 RDupQ=0 RTCP=0 SFwdR=0 SFail=0
SFErr=0 SNaAns=0 SNXD=0
sep 28 19:26:03 zecastor named: named shutdown succeeded
Sep 28 19:26:03 zecastor named[1556]: starting.  named 8.2.2-P5 Mon Feb 28
10:17:53 EST 2000 ^Iroot@porky.devel.redhat.com:/usr/src/bs/BUILD/bind-8.2.2_
P5/src/bin/named
Sep 28 19:26:03 zecastor named[1556]: hint zone "" (IN) loaded (serial 0)
Sep 28 19:26:03 zecastor named[1556]: Zone "0.0.127.in-addr.arpa" (file
named.local): No default TTL set using SOA minimum instead
Sep 28 19:26:03 zecastor named[1556]: master zone "0.0.127.in-addr.arpa" (IN)
loaded (serial 1997022700)
Sep 28 19:26:03 zecastor named[1556]: listening on [127.0.0.1].53 (lo)
Sep 28 19:26:03 zecastor named[1556]: listening on [192.168.1.1].53 (eth0)
Sep 28 19:26:03 zecastor named[1556]: Forwarding source address is [0.0.0.0].
1033
Sep 28 19:26:03 zecastor named[1557]: group = 25
Sep 28 19:26:03 zecastor named[1557]: user = named
Sep 28 19:26:03 zecastor named[1557]: Ready to answer queries.
sep 28 19:26:03 zecastor named: named startup succeeded

Un message du type est normal, il signifie que aucune zone n'étant spécifiée, il utilise la zone par défaut. En revanche, un message du type :

Sep 28 19:27:49 zecastor named[1590]: Zone "0.0.127.in-addr.arpa" (file
named.local): no NS RRs found at zone top
Sep 28 19:27:49 zecastor named[1590]: master zone "0.0.127.in-addr.arpa"
(IN) rejected due to errors (serial 1997022700)

est plus grave. Il signifie qu'aucun serveur de noms n'est spécifié par l'option pour la zone 0.0.127.in-addr.arpa. En regardant de près le fichier de configuration de cette zone, on se rend compte qu'il manque un espace au début de la ligne suivante :

IN      NS      localhost.

En effet, ce n'est pas parce qu'on peut se passer de spécifier un domaine qu'il ne faut pas laisser d'espace ! En rajoutant un espace au début de la ligne, le problème est corrigé.

Un bon moyen de débugger les fichiers de configuration mal écrits est d'utiliser tail et grep :

# tail -50 /var/log/messages | grep error
Sep 28 19:27:49 zecastor named[1590]: master zone "0.0.127.in-addr.arpa"
(IN) rejected due to errors (serial 1997022700)
#

On voit tout de suite s'afficher les lignes contenant des erreurs. On peut aussi utiliser l'option -f de la commande tail pour avoir les dernières lignes du fichier, au fur et à mesure qu'elles arrivent.

Pour tester le nouveau serveur de noms installé, on peut utiliser le programme nslookup 2, par exemple :

# nslookup 127.0.0.1
Server:  localhost
Address:  127.0.0.1

Name:    localhost
Address:  127.0.0.1

#

Conclusion : on est capable de résoudre l'adresse 127.0.0.1, donc ça marche. Si on n'a qu'une seule machine à disposition, c'est terminé pour la partie DNS. Sinon, il va falloir rendre accessible aussi la résolution des noms et/ou adresses des autres machines.


next up previous contents
Next: Un DNS pour un Up: Configurer un serveur de Previous: Les fichiers de configuration   Contents
Mathieu DECORE <mdecore@linux-france.org>