Page suivantePage précédenteTable des matières

3. Un Serveur de Noms qui ne sert que de cache.

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).

3.1 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 ç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''.

3.2 Le rendre encore meilleur

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.

3.3 Félicitations !

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.


Page suivantePage précédenteTable des matières