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. Cela réduira les temps de réponses, spécialement si vous utilisez une connection plutôt lente.
Vous avez tout d'abord besoin du fichier
/etc/named.conf
. Ce fichier est lu au lancement de
named. Pour le moment, il ne doit pas contenir autre chose que :
// Fichier de config pour un serveur de nom qui ne fait que du cache options { directory "/var/named"; // Enlever les commentaires peut vous aider si vous avez a passer a travers un // firewall et que ça ne marche pas : // query-source port 53; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; };
TRÈS 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. Ainsi, pz
est un
sous-répertoire de /var/named
, c'est a dire
/var/named/pz
. D'après le Linux Filesystem Standard,
ce répertoire doit être /var/named
.
On trouve à cet endroit le fichier /var/named/root.hints
,
qui doit ressembler à ceci :
. 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. . 6D IN NS M.ROOT-SERVERS.NET. . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
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 section suivante de named.conf
est la dernière
partie. Elle sera expliquée dans un chapitre suivant, pour l'instant,
créez un fichier appelé 127.0.0
dans le sous répertoire
pz
:
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; 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. Évidemment, 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 :
Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \
00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
(IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.
Si il y a un quelconque message d'erreur, named donnera le nom du fichier dans lequel se trouve l'erreur (soit named.conf, soit root.hints, 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.conf
, 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
'.
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.