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