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 directory "/var/named";
).
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 que cette zone permet de résoudre l'adresse 127.0.0.1 en son nom.
hierarchie-arpa.epsRésolution inverse en utilisant le domaine in-addr.arpa
On configure ici un serveur de noms maître comme l'indique la ligne type master;
. 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 :
; ; 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 instruction que dans le fichier /etc/named.conf
. Se référer à la DNS HOWTO [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 -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'dresse 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 zone "0.0.127.in-addr.arpa" {
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.
Penser à insérer une section ``erreurs fréquentes'' parlant de ce type d'erreur.
Le fait de transmettre toute les requettes 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 :
# /etc/rc.d/init.d/named restart Shutting down named: [ OK ] Starting named: [ OK ] #
# /etc/init.d/named restart [...] #
# 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 do 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 No default TTL set using SOA minimum instead
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 NS
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
, 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.