3. Un Serveur de Nom qui ne fait que cache.

Contenu de cette section

Un premier aperçu de la configuration d'un DNS, très utile pour ceux qui utilisent une connexion en dialup.

Un serveur de nom qui ne fait que cache sert à trouver la réponse aux requêtes de résolution de nom et se souvient de cette réponse chaque fois qu'on lui posera la même question par la suite.

Vous avez tout d'abord besoin du fichier /etc/named.boot. Ce fichier est lu au lancement de named. Pour le moment, il ne doit pas contenir autre chose que :


;  Boot file for caching name server
;
directory /var/named
;
; type          domain                          source file or host
cache           .                               root.cache
primary         0.0.127.in-addr.arpa            pz/127.0.0

TRES IMPORTANT : Dans certaines versions de ce document, les fichiers listés comme ci-dessus présentent un certain nombre de caractères espace ou tabulation avant le premier caractère non blanc de la ligne. Ils ne sont pas supposés faire partie du fichier. Effacez donc tous les caractères blancs de début de ligne des fichiers que vous copiez-collez à partir de ce HOWTO.

La ligne "directory" indique à named l'endroit où il doit rechercher ses fichiers. Tous les fichiers dont nous parlerons maintenant seront relatifs à cet endroit. D'après le Linux Filesystem Standard, ce répertoire doit être /var/named. Ainsi, pz est un sous-répertoire de /var/named, i-e /var/named/pz.

On trouve à cet endroit le fichier /var/named/root.cache, qui doit ressembler à ceci :


 .       518400  NS      D.ROOT-SERVERS.NET.
 .       518400  NS      E.ROOT-SERVERS.NET.
 .       518400  NS      I.ROOT-SERVERS.NET.
 .       518400  NS      F.ROOT-SERVERS.NET.
 .       518400  NS      G.ROOT-SERVERS.NET.
 .       518400  NS      A.ROOT-SERVERS.NET.
 .       518400  NS      H.ROOT-SERVERS.NET.
 .       518400  NS      B.ROOT-SERVERS.NET.
 .       518400  NS      C.ROOT-SERVERS.NET.
;
D.ROOT-SERVERS.NET.     3600000 A       128.8.10.90
E.ROOT-SERVERS.NET.     3600000 A       192.203.230.10
I.ROOT-SERVERS.NET.     3600000 A       192.36.148.17
F.ROOT-SERVERS.NET.     3600000 A       192.5.5.241
G.ROOT-SERVERS.NET.     3600000 A       192.112.36.4
A.ROOT-SERVERS.NET.     3600000 A       198.41.0.4
H.ROOT-SERVERS.NET.     3600000 A       128.63.2.53
B.ROOT-SERVERS.NET.     3600000 A       128.9.0.107
C.ROOT-SERVERS.NET.     3600000 A       192.33.4.12

Souvenez-vous bien de ce que j'ai dit pour les caractères blancs en tête de ligne !

Ce fichier donne une description de tous les serveurs de noms du monde qui se trouvent à la racine (au plus haut niveau) de la hiérarchie des serveurs de noms. Il arrive que cette liste change, c'est pourquoi il est essentiel que ce fichier soit maintenu à jour. Reportez-vous à la section maintenance pour savoir comment le garder à jour. Le contenu de ce fichier est décrit dans la page de man de named mais cette-dernière s'adresse plus, à mon humble avis, à ceux qui savent déjà comment fonctionne named.

La ligne suivante de named.boot est la ligne primary. J'expliquerai son rôle dans un chapitre ultérieur. Pour l'instant, il s'agit simplement d'un fichier appelé 127.0.0 situé dans le repertoire pz :


@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Après ça, vous avez besoin d'un fichier /etc/resolv.conf qui ressemble à peu près à ça :


search subdomain.your-domain.edu your-domain.edu
nameserver 127.0.0.1

La ligne search spécifie dans quels domaines il faudra chercher lorsque vous voudrez vous connecter sur une machine de nom quelconque. La ligne "nameserver" indique à quelle adresse votre machine peut contacter un serveur de noms. Si vous voulez indiquer plusieurs serveurs de nom, mettez une ligne `nameserver' pour chacun. Dans notre cas, il s'agit de notre propre machine puisque c'est elle qui fait tourner named. (Note : named ne lit jamais ce fichier, c'est le resolver qui utilise named qui le fait).

Illustrons ce à quoi sert ce fichier : si un client cherche à contacter foo, on essaye d'abord foo.subdomain.your-domain.edu puis foo.your-domain.edu et enfin foo. Si un client essaye de contacter sunsite.unc.edu, on essaye d'abord sunsite.unc.edu.subdomain.your-domain.edu (je sais, c'est stupide, mais c'est comme ça) puis sunsite.unc.edu.your-domain.edu et enfin sunsite.unc.edu. Faites attention à ne pas mettre trop de noms de domaine dans la ligne search car cela prend du temps de tous les essayer.

Cet exemple suppose que vous appartenez au domaine subdomain.your-domain.edu. Votre machine s'appelle alors certainement your-machine.subdomain.your-domain.edu. La ligne search ne doit pas contenir votre TLD (Top Level Domain; edu dans notre cas). Si vous vous connectez fréquemment à des machines dans un autre domaine, vous pouvez rajouter ce domaine dans la ligne search comme ceci :


 search subdomain.your-domain.edu your-domain.edu other-domain.com

et ainsi de suite. Evidemment, il faut appliquer cet exemple à de vrais noms de domaines. Remarquez qu'ici il n'y a pas de point à la fin des noms de domaine.

Ensuite, suivant votre version de la libc, vous allez devoir modifier soit /etc/nsswitch.conf, soit /etc/host.conf. Si vous avez déjà nsswitch.conf, c'est celui-là que nous allons modifier, sinon ce sera host.conf.

/etc/nsswitch.conf

C'est un long fichier qui spécifie où trouver différentes sortes de types de données, dans quel fichier ou quelle base de données. Il contient généralement des commentaires précieux au début, que vous auriez tout intérêt à lire tout de suite. Ensuite, trouvez la ligne qui commence par "hosts:", elle doit ressembler à ceci:


 hosts: files dns 

Si il n'y a aucune ligne qui commence par "hosts:", mettez celle ci-dessus. Elle dit que les programmes doivent d'abord regarder dans /etc/hosts puis demander au DNS en suivant les indications de resolv.conf.

/etc/host.conf

Ce fichier contient certainement plusieurs lignes, dont une doit commencer par order et ressembler à ça :


 order hosts,bind 

Si il n'y a pas de ligne "order", il faut en mettre une. Elle indique aux routines de résolution de nom de regarder d'abord dans /etc/hosts puis de demander au serveur de noms (que vous avez précisé dans resolv.conf comme étant 127.0.0.1). Ces deux derniers fichiers sont documentés dans la page de man resolv(8) (tapez `man 8 resolv') dans la plupart des distributions de Linux. Cette page de man est, à mon humble avis, largement lisible et tout le monde, à commencer par les administrateurs de DNS, devrait l'avoir lue. Faites-le maintenant. Si vous vous dites "je le ferai plus tard", vous n'y reviendrez jamais.

Démarrer named.

Après tout ça, il est temps de démarrer named. Si vous utilisez une connexion en dialup, commencez par vous connecter. Tapez `ndc start' et appuyez sur la touche entrée, sans donner d'options. Si ca ne démarre pas, essayez plutot `/usr/sbin/ndc start'. Si ça ne marche toujours pas, jetez un coup d'oeil au chapitre FAQ . Maintenant, vous pouvez tester votre configuration. Si vous jetez un oeil à votre fichier de messages syslog (souvent appelé /var/adm/messages, mais regardez également dans le répertoire /var/log ou dans le fichier syslog) tout en lançant named (faites tail -f /var/adm/messages), vous devrez voir quelque chose comme ça :

Jun 30 21:50:55 roke named[2258]: starting.  named 4.9.4-REL
Sun Jun 30 21:29:0 3 MET DST 1996
janl@roke.slip.ifi.uio.no:/var/tmp/bind/named Jun 30 21:50:55 roke
named[2258]: cache zone "" loaded (serial 0) Jun 30 21:50:55 roke
named[2258]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1)

Si il y a un quelconque message d'erreur, named donnera le nom du fichier dans lequel se trouve l'erreur (soit named.boot, soit root.cache, j'espère :-). Tuez le processus named et retournez vérifier ces fichiers.

Il est maintenant temps de lancer nslookup pour regarder le résultat de votre petit travail manuel

$ nslookup
Default Server: localhost
Address: 127.0.0.1

>

Si vous obtenez ceci, c'est que ça marche. Nous l'espérons tous. Si vous obtenez quoi que ce soit d'autre, revenez en arrière et vérifiez tout. Chaque fois que vous modifiez le fichier named.boot, il vous faut relancer named avec la commande ndc restart.

Maintenant, vous pouvez entrer une requête. Essayez de contacter une machine proche de vous. pat.uio.no est proche de moi, à l'Université d'Oslo :

> pat.uio.no
Server: localhost
Address: 127.0.0.1

Name:    pat.uio.no
Address: 129.240.2.50

nslookup a demandé à votre named de rechercher la machine pat.uio.no. Il a ensuite contacté un des serveurs de noms mentionnés dans root.cache et a demandé le chemin à suivre. Il peut s'écouler un certain temps avant que vous obteniez le résultat puisqu'il recherche tous les domaines listés dans /etc/resolv.conf.

Si vous réessayez, vous obtiendrez ceci :

> pat.uio.no
Server: localhost
Address: 127.0.0.1

Non-authoritative answer :
Name: pat.uio.no
Address: 129.240.2.50

Notez cette fois-ci l'apparition de la ligne `Non-authoritative answer :'. Elle veut dire que named n'a pas accédé au réseau pour obtenir la réponse mais a trouvé l'information dans son cache. Cependant, l'information cachée pourrait ne plus être à jour. C'est pourquoi vous êtes informé de ce (très faible) danger par le message `Non-authoritative answer:' Quand nslookup répond ceci la seconde fois qu'on lui demande un certain hôte, c'est un signe certain que named cache bien les informations et que tout marche. Pour sortir de nslookup, utilisez la commande `exit'.

Si vous avez une connexion en dialup (ppp ou slip), lisez le chapitre Configuration des connexions en dialup , il y a des conseils pour vous.

Maintenant, vous savez comment configurer un named qui fait cache. Servez-vous une bière, un verre de lait ou tout ce que vous voudrez pour fêter l'événement, ça le mérite.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre