Un premier aperçu de la configuration d'un DNS, très utile pour ceux qui utilisent une connexion en dialup.
Un serveur de noms qui ne sert que de cache trouve 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éponse, surtout si vous avez une connexion 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 noms 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
auront un chemin relatif relatifs à ce répertoire. 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 :
; Il se peut qu'il y ait quelques commentaires ici si vous avez déjà ce ; fichier. de toutes façon, ce sont des commentaires, ils ne sont pas ; important du tout. . 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
ce programme.
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
résolveur qui utilise named
qui le fait).
Voyons sur un exemple à 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. C'est important, notez l'absence de points aux fins des noms de domaines.
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. 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).
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 ça ne marche pas,
essayez plutôt ``/usr/sbin/ndc start
''. Si ça ne marche toujours pas,
jetez un coup d'oeil au chapitre
FAQ. 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 devriez voir quelque chose
comme ça :
(les lignes se terminant par \ se continuent sur la ligne suivante)
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 re-vérifiez ce fichier.
Il est maintenant temps de vérifier votre configuration. Lancez
nslookup
pour regarder le résultat de votre petit travail.
$ nslookup
Default Server: localhost
Address: 127.0.0.1
>
Si vous obtenez ce message, 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 se peut qu'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 cette possibilité très improbable 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
''.
Dans les grands réseaux, bien administrés, des universités ou FAI
(Fournisseur d'Accès a Internet), vous remarquerez peut-être que les
administrateurs réseau ont mis en place une hiérarchie de serveurs DNS ce qui
permet de soulager le réseau interne ainsi que le réseau vers l'extérieur. Il
n'est pas facile de savoir si vous êtes dans un réseau de ce type. Tout cela
n'est pas très important, mais en utilisant le serveur DNS de votre FAI comme
``forwarder'' vous pouvez rendre les réponses plus rapides et alléger la
charge de votre réseau. Avec un modem, la différence peut être sensible. Pour
améliorer encore notre exemple, supposons que votre FAI aie deux serveurs de
noms qu'il veux vous faire utiliser, ayant pour adresses IP 10.0.0.1
et
10.1.0.1
. Alors, dans votre fichier named.conf
, dans la section
appelée ``options'' insérez les lignes :
forward first; forwarders { 10.0.0.1; 10.1.0.1; };
Redémarrez votre serveur de noms et testez avec nslookup
. Cela
devrait marcher sans problèmes.
Maintenant, vous savez comment configurer un named
qui sert de
cache. Servez-vous une bière, un verre de lait ou tout ce que vous voudrez
pour fêter l'événement.