
                                   DNS HOWTO

Nicolai Langfeldt <janl@math.uio.no>
Traduction franaise par Mathieu Arnold <arn_mat@club-internet.fr>

   Version 2.2, du 11 fvrier 1999
     _________________________________________________________________

   _Comment devenir un administrateur de DNS  la petite semaine._
     _________________________________________________________________

1. Prambule

   Mots-cls : DNS, bind, bind-4, bind-8, named, dialup, ppp, slip, isdn,
   Internet, domain, name, hosts, resolving, caching

   Ce document fait partie du _Linux Documentation Project_.

1.1 Aspect juridique

   (C)opyright 1995-1999 Nicolai Langfeldt. Ne modifiez pas ce document
   sans en modifier le message de copyright en consquence. Vous pouvez
   distribuer ce document librement sous rserve de conserver le message
   de copyright.

1.2 Remerciements et appel aux bonnes volonts

   J'aimerais remercier Arnt Gulbrandsen qui a tant souffert en relisant
   les brouillons de ce document et qui a apport nombre de suggestions
   pertinentes. Merci galement  tous ceux qui m'ont envoy leurs
   suggestions par courrier lectronique. Merci beaucoup ! Vous m'aidez
   vraiment dans ce travail.

   Ce document n'est pas destin  atteindre un jour un tat final, alors
   faites-moi part de vos problmes ainsi que de vos succs, cela me
   permettra d'amliorer ce HOWTO. Merci d'envoyer les commentaires et/ou
   les questions et mme l'argent  janl@math.uio.no. Si vous m'envoyez
   un courrier lectronique, merci de _vrifier_ que votre adresse de
   retour est correcte car je reois _beaucoup_ de courrier lectronique.
   Essayez aussi de lire le chapitre FAQ avant de m'envoyer un mail.
   Autre chose je (l'auteur) ne parle qu'anglais et norvgien.

   Si vous ne parlez ni l'anglais ni le norvgien, vous pouvez toujours
   envoyer vos commentaires en franais au traducteur
   (arn_mat@club-internet.fr) qui fera suivre.

   Si vous voulez traduire ce HOWTO, prvenez-moi pour que je puisse
   garder le compte de toutes les langues dans lesquelles il a t
   traduit :-), de plus, cela me permettra de vous tenir au courant des
   volutions de ce HowTo.

1.3 Ddicace

   Ce HOWTO est ddi  Anne Line Norheim. Pourtant, elle ne le lira sans
   doute jamais, ce n'est pas du tout son genre.

2. Introduction.

   _Ce que ce document est et ce qu'il n'est pas_

   Le DNS est le _Domain Name System_. C'est l'ensemble des rgles
   utilises par les machines et les logiciels pour tablir, entre autres
   choses, la correspondance entre les noms de machines et les adresses
   IP, dont chaque machine sur le net est pourvue. Ce document explique
   comment dfinir de telles correspondances  l'aide d'un systme Linux.
   Une correspondance est tout simplement une relation entre deux objets,
   dans notre cas un nom de machine, comme ftp.linux.org, et l'adresse IP
   de cette machine, 199.249.150.4.

   Le DNS constitue pour le non-initi (vous dans le cas prsent ;-) une
   des parties les plus obscures de l'administration de rseau. Le but de
   ce HOWTO est d'essayer d'en claircir quelques aspects. Ce document
   explique comment configurer un DNS _simple_. Nous allons commencer
   avec un serveur de noms qui ne sert qu' faire cache puis nous
   continuerons en configurant un serveur DNS primaire pour un domaine.
   Pour des configurations plus complexes, jetez un coup d'oeil  la
   section FAQ de ce document. Si vous n'y trouvez pas ce que vous
   cherchez, vous allez alors devoir _lire_ la Vraie Documentation. Je
   reviendrai sur ce en quoi consiste la Vraie Documentation dans le
   chapitre final.

   Avant de commencer, vous devez configurer votre machine pour tre
   capable de vous connecter par telnet sur d'autres machines mais aussi
   pouvoir recevoir des connexions sur votre machine. Vous devez aussi
   tre en mesure de vous connecter au rseau par tous les services
   possibles, et en particulier pouvoir faire telnet 127.0.0.1, ce qui
   revient  vous connecter  votre propre machine (vrifiez tout de
   suite que a marche !). Il est aussi ncessaire, pour commencer, que
   les fichiers /etc/nnswitch.conf (ou /etc/host.conf), /etc/resolv.conf
   et /etc/hosts soient correctement configurs car je n'expliquerai pas
   ici  quoi ils servent. Si tout cela n'est pas dj configur et en
   tat de marche, lisez le NET-3-HOWTO.

   Si vous utilisez une connexion SLIP ou PPP, il est indispensable
   qu'elle fonctionne. Lisez le PPP HOWTO si ce n'est pas le cas.

   Quand je dis ``votre machine'', j'entends la machine sur laquelle vous
   aller essayer d'installer le DNS, et non pas une autre machine dont
   vous pourriez vous servir pour accder au rseau.

   Je supposerai par la suite que vous ne vous trouvez pas derrire un
   firewall qui bloque les requtes de rsolution de nom. Si tel est le
   cas, vous aurez besoin d'une configuration spciale. Reportez-vous
   alors au chapitre FAQ.

   Le service de rsolution de nom sous Unix est assur par un programme
   appel named. Il fait partie du paquetage ``bind'', gr par Paul
   Vixie pour l'Internet Software Consortium. named est inclus dans la
   plupart des distributions de Linux et se trouve le plus souvent
   install dans /usr/sbin/named. Si vous disposez d'un named, vous
   pouvez vraisemblablement l'utiliser. Si vous n'en avez pas, chargez-en
   un  partir d'un site FTP Linux ou allez chercher la dernire et
   meilleure version des sources du programme depuis
   ftp.isc.org/isc/bind/src/cur/bind-8/. Ce HowTo parle de bind version
   8. L'ancienne version de ce HowTo, a propos de bind 4 est toujours
   disponible  www.math.uio.no/~janl/DNS/ au cas ou vous auriez bind 4.
   Si la page man de named parle de named.conf vous avec bind 8, si elle
   parle (tout a la fin, dans la section FILES) de named.boot vous avez
   bind 4. Si vous avez bind 4, et si la scurit fait partie de vos
   proccupations, vous devriez vraiment passer  bind 8.

   Le service DNS est une base de donnes  l'chelle du rseau tout
   entier. Faites donc trs attention  ce que vous y introduisez. Si
   vous y mettez n'importe quoi, vous en retirerez n'importe quoi, et les
   autres aussi. Conservez votre DNS bien propre,  jour et cohrent et
   vous verrez qu'il vous offrira le meilleur de lui-mme. Apprenez a
   l'utiliser, l'administrer, le dbogger et vous ferez partie de ces
   administrateurs qui empchent que le rseau ne s'croule sous le poids
   des systmes mal grs.

   Dans ce document, je dis des choses qui ne sont pas tout  fait vraies
   (mais qui le sont toujours au moins  moiti). Si je le fais, c'est
   toujours dans le but de rendre les choses plus simples. Tout marchera
   (probablement ;-) trs bien si vous croyez ce que je vous dis.

   _Astuce :_ S'ils existent dj, faites une copie de sauvegarde de tous
   les fichiers que je vous demande de modifier. Ainsi, si plus rien ne
   marche aprs ce que nous allons faire, vous pourrez toujours revenir
   au bon vieux temps o tout marchait bien.

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

   _Un premier aperu de la configuration d'un DNS, trs utile pour ceux
   qui utilisent une connexion en dialup._

   Un serveur de noms qui ne sert que de cache trouve la rponse aux
   requtes de rsolution de nom et se souvient de cette rponse chaque
   fois qu'on lui posera la mme question par la suite. Cela rduira les
   temps de rponse, surtout si vous avez une connexion plutt 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";
};
     _________________________________________________________________

   _TRS IMPORTANT : _Dans certaines versions de ce document, les
   fichiers lists comme ci-dessus prsentent un certain nombre de
   caractres espace ou tabulation avant le premier caractre non blanc
   de la ligne. Ils ne sont pas supposs faire partie du fichier.
   _Effacez donc tous les caractres blancs_ de dbut 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 rpertoire. Ainsi, pz est un
   sous-rpertoire de /var/named, c'est a dire /var/named/pz. D'aprs le
   _Linux Filesystem Standard_, ce rpertoire 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 dj ce
; fichier. de toutes faon, 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 caractres blancs en
   tte 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 hirarchie 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 dcrit dans la page de man de named mais cette
   dernire s'adresse plus,  mon humble avis,  ceux qui savent dj
   comment fonctionne ce programme.

   La section suivante de named.conf est la dernire partie. Elle sera
   explique dans un chapitre suivant, pour l'instant, crez un fichier
   appel 127.0.0 dans le sous rpertoire 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.
     _________________________________________________________________

   Aprs a, vous avez besoin d'un fichier /etc/resolv.conf qui ressemble
    peu prs  a :
     _________________________________________________________________

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

   La ligne search spcifie 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
   _rsolveur_ 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 frquemment  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 dj
   nsswitch.conf, c'est celui-l que nous allons modifier, sinon ce sera
   host.conf.

   _/etc/nsswitch.conf_

   C'est un long fichier qui spcifie o trouver diffrentes sortes de
   types de donnes, dans quel fichier ou quelle base de donnes. Il
   contient gnralement des commentaires prcieux au dbut, que vous
   auriez tout intrt  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 rsolution de nom de regarder d'abord dans
   /etc/hosts puis de demander au serveur de noms (que vous avez prcis
   dans resolv.conf comme tant 127.0.0.1).

3.1 Dmarrer named.

   Aprs tout a, il est temps de dmarrer named. Si vous utilisez une
   connexion en dialup, commencez par vous connecter. Tapez ``ndc start''
   et appuyez sur la touche entre, sans donner d'options. Si a ne
   marche pas, essayez plutt ``/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 rpertoire /var/log
   ou dans le fichier syslog) tout en lanant 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'espre :-). Tuez le processus named et re-vrifiez ce
   fichier.

   Il est maintenant temps de vrifier votre configuration. Lancez
   nslookup pour regarder le rsultat 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'esprons tous.
   Si vous obtenez quoi que ce soit d'autre, revenez en arrire et
   vrifiez 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 requte. 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 mentionns dans
   root.cache et a demand le chemin  suivre. Il peut s'couler un
   certain temps avant que vous obteniez le rsultat puisqu'il se peut
   qu'il recherche tous les domaines lists dans /etc/resolv.conf.

   Si vous ressayez, 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 accd au rseau pour
   obtenir la rponse mais a trouv l'information dans son cache.
   Cependant, l'information cache _pourrait_ ne plus tre  jour. C'est
   pourquoi vous tes inform de cette possibilit trs improbable par le
   message ``Non-authoritative answer:'' Quand nslookup rpond ceci la
   seconde fois qu'on lui demande un certain hte, 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 rseaux, bien administrs, des universits ou FAI
   (Fournisseur d'Accs a Internet), vous remarquerez peut-tre que les
   administrateurs rseau ont mis en place une hirarchie de serveurs DNS
   ce qui permet de soulager le rseau interne ainsi que le rseau vers
   l'extrieur. Il n'est pas facile de savoir si vous tes dans un rseau
   de ce type. Tout cela n'est pas trs important, mais en utilisant le
   serveur DNS de votre FAI comme ``forwarder'' vous pouvez rendre les
   rponses plus rapides et allger la charge de votre rseau. Avec un
   modem, la diffrence peut tre sensible. Pour amliorer 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 appele
   ``options'' insrez les lignes :
     _________________________________________________________________

           forward first;
           forwarders {
                10.0.0.1;
                10.1.0.1;
            };
     _________________________________________________________________

   Redmarrez votre serveur de noms et testez avec nslookup. Cela devrait
   marcher sans problmes.

3.3 Flicitations !

   Maintenant, vous savez comment configurer un named qui sert de cache.
   Servez-vous une bire, un verre de lait ou tout ce que vous voudrez
   pour fter l'vnement.

4. Un domaine _simple_

   _Comment mettre en place votre propre domaine_

4.1 Mais avant tout, un brin de thorie

   Avant d'entrer _vraiment_ dans le vif du sujet, il va falloir que je
   fasse un brin de thorie avec quand mme un petit exemple sur le
   principe du service DNS. Et il faudra tout lire, car c'est pour votre
   bien. Vous devriez au moins survoler rapidement cette section. Arrtez
   le survol quand vous arrivez  l'endroit o j'explique le contenu du
   fichier named.conf.

   Le service DNS est un systme organis de manire hirarchique, sous
   forme d'arbre. La racine est dsigne par ``.'' et s'appelle ``la
   racine''. En dessous de . se trouvent un certain nombre de TLD (_Top
   Level Domains_); les plus connus sont ORG, COM, EDU, NET et FR, mais
   il y en a beaucoup d'autres. Tout comme un arbre, il a une racine avec
   des branches qui en partent. Si vous avez des connaissances en
   informatique fondamentale, vous reconnatrez dans le DNS un arbre de
   recherche, avec des noeuds, des arrtes et des feuilles.

   Lorsque vous recherchez une machine, la question est pose
   rcursivement dans toute la hirarchie depuis la racine. Lorsque vous
   voulez trouver l'adresse IP de prep.ai.mit.edu, votre DNS doit trouver
   un serveur de noms pour le domaine edu. Votre DNS demande d'abord  un
   serveur de noms de . (il possde dj les adresses des serveurs pour
   ., elles sont dans le fichier root.hints), et le serveur pour . donne
   une liste des serveurs d'edu.

   Voici un exemple :

$ nslookup
Default Server: localhost
Address: 127.0.0.1

   Interrogeons un serveur situ  la racine.

> server c.root-servers.net.
Default Server: c.root-servers.net
Address: 192.33.4.12

   Positionnons le type de requte (Query Type)  NS (Name Server
   records).

> set q=ns

   Posons la question  propos de edu.

> edu.

   Le . terminal est significatif, il indique  nslookup que nous
   interrogeons que edu se trouve juste sous . (et pas dans l'un de nos
   sous-domaines, ce qui acclre la recherche).

edu     nameserver = A.ROOT-SERVERS.NET
edu     nameserver = H.ROOT-SERVERS.NET
edu     nameserver = B.ROOT-SERVERS.NET
edu     nameserver = C.ROOT-SERVERS.NET
edu     nameserver = D.ROOT-SERVERS.NET
edu     nameserver = E.ROOT-SERVERS.NET
edu     nameserver = I.ROOT-SERVERS.NET
edu     nameserver = F.ROOT-SERVERS.NET
edu     nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET      internet address = 198.41.0.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
B.ROOT-SERVERS.NET      internet address = 128.9.0.107
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4

   Nous apprenons ainsi que tous les serveurs ROOT-SERVERS.NET servent le
   domaine edu.; nous pouvons donc continuer en les interrogeant tous.
   Nous continuerons en interrogeant C. Maintenant, nous voulons savoir
   qui sert le niveau suivant du nom de domaine : mit.edu. :

> mit.edu.
Server:  c.root-servers.net
Address:  192.33.4.12

Non-authoritative answer:
mit.edu nameserver = STRAWB.mit.edu
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu

Authoritative answers can be found from:
STRAWB.mit.edu  internet address = 18.71.0.151
W20NS.mit.edu   internet address = 18.70.0.160
BITSY.mit.edu   internet address = 18.72.0.3

   strawb, w20ns et bitsy servent tous le domaine mit, prenons-en un au
   hasard et posons-lui la question au sujet d'un domaine encore plus
   prcis : ai.mit.edu :

> server W20NS.mit.edu.

   On ne distingue pas majuscules et minuscules pour les noms de domaine,
   et comme j'utilise ma souris pour faire du copier-coller, vous lisez
   les choses dans ce document telles qu'elles apparaissent sur mon
   cran.

Server:  W20NS.mit.edu
Address:  18.70.0.160

> ai.mit.edu.
Server:  W20NS.mit.edu
Address:  18.70.0.160

Non-authoritative answer:
ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu      nameserver = TRIX.AI.MIT.EDU
ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu      nameserver = LIFE.AI.MIT.EDU
ai.mit.edu      nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu      nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu      nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu      nameserver = MINTAKA.LCS.MIT.EDU

Authoritative answers can be found from:
AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU      nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU      nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU      nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU       internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU    internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU  internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU        internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU     internet address = 18.26.0.36

   Ainsi, muesli.ai.mit.edu est un serveur de noms pour le domaine
   ai.mit.edu :

> server MUESLI.AI.MIT.EDU
Default Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

   Changeons le type de requte. Nous avons russi  trouver le serveur
   de noms, nous allons maintenant demander tout ce que muesli sait sur
   le domaine prep.ai.mit.edu.

> set q=any
> prep.ai.mit.edu.
Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
prep.ai.mit.edu
        inet address = 18.159.0.42, protocol = tcp
          ftp  telnet  smtp  finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu      nameserver = beet-chex.ai.mit.edu
ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
ai.mit.edu      nameserver = trix.ai.mit.edu
ai.mit.edu      nameserver = muesli.ai.mit.edu
ai.mit.edu      nameserver = count-chocula.ai.mit.edu
ai.mit.edu      nameserver = mintaka.lcs.mit.edu
ai.mit.edu      nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu     internet address = 128.52.32.60
beet-chex.ai.mit.edu    internet address = 128.52.32.22
alpha-bits.ai.mit.edu   internet address = 128.52.32.5
mini-wheats.ai.mit.edu  internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu       internet address = 128.52.39.7
count-chocula.ai.mit.edu        internet address = 128.52.38.22
mintaka.lcs.mit.edu     internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80

   En commenant  partir de ., nous avons successivement trouv les
   serveurs de noms des diffrents niveaux du nom de domaine. Si vous
   aviez utilis votre propre serveur DNS  la place de tous ces autres
   serveurs, votre named aurait, bien sr, cach toutes ces informations
   et il n'aurait plus eu besoin de les redemander pendant un certain
   temps.

   Si l'on revient a l'analogie avec les arbres, chaque ``.'' dans le nom
   est un embranchement. Et chaque nom entre deux . est une branche de
   l'arbre.

   Grimpons ensemble dans l'arbre en prenant le nom que nous voulons
   (prep.ai.mit.edu). On part de la racine (.), on regarde ensuite dans
   quelle branche grimper, dans notre cas, edu. Ds qu'on l'a trouve, on
   y grimpe en passant par le serveur qui connat cette partie du nom.
   Ensuite, assis sur la branche edu, on cherche la branche mit (le nom
   combin est mit.edu), puis la branche ai.mit.edu. Maintenant, on est
   sur le bon serveur, au bon embranchement. La dernire partie est de
   trouver prep.ai.mit.edu, ce qui est trs simple. En informatique
   fondamentale, on appelle prep une _feuille_ de l'arbre.

   Un domaine dont on parle beaucoup moins, mais qui n'en est pas moins
   important, est in-addr.arpa. Ce domaine trouve sa place dans la
   hirarchie des noms de domaine comme un domaine ``normal''.
   in-addr.arpa nous sert  obtenir le nom d'hte connaissant l'adresse
   IP d'une machine. Une chose trs importante ici est de bien remarquer
   que les adresses IP sont notes en sens inverse  l'intrieur du
   domaine in-addr.arpa. Si vous avez l'adresse d'une machine :
   192.128.52.43, named procde exactement comme dans l'exemple de
   prep.ai.mit.edu : il trouve les serveurs pour in-addr.arpa., trouve
   les serveurs pour 192.in-addr.arpa., trouve les serveurs pour
   128.192.in-addr.arpa., et finalement trouve les serveurs pour
   52.128.192.in-addr.arpa. . On obtient bien ainsi l'information lie 
   43.52.128.192.in-addr.arpa. Malin, n'est ce pas ? (dites oui). En
   fait, la rsolution de noms inverse est assez difficile  admettre les
   premires annes.

    vrai dire, je vous ai menti. Le service DNS ne marche pas vraiment
   comme a. Mais ce que je vous ai dit est suffisamment proche de la
   ralit.

4.2 Notre propre domaine

   Maintenant, nous en sommes  dfinir notre propre domaine bien  nous.
   Nous allons crer le domaine linux.bogus et y dclarer quelques
   machines. C'est un nom de domaine totalement factice, afin d'tre sr
   de ne dranger personne dans le Vaste Monde.

   Encore une chose avant de commencer. Tous les caractres ne sont pas
   admis dans les noms de machines. On ne doit utiliser que les
   caractres de l'alphabet anglais (a-z), les nombres (0-9) et le tiret
   ``-''. Utilisez ces caractres, majuscules et minuscules sont
   confondues, donc pat.uio.no est identique  Pat.UiO.No.

   En fait, nous avons dj commenc  crer notre propre domaine avec
   cette ligne dans named.conf:
     _________________________________________________________________

zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};
     _________________________________________________________________

   Notez bien l'absence de ``.''  la fin des noms de domaine de ce
   fichier. Elle signifie que nous allons dfinir la zone
   0.0.127.in-addr.arpa, que nous sommes son serveur principal et que
   tout est stock dans un fichier appel pz/127.0.0. On a dj vu ce
   fichier, il se prsente comme ceci :
     _________________________________________________________________

@               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.
     _________________________________________________________________

   Notez bien le ``.''  la fin de tous les noms de domaine complets de
   ce fichier, contrairement au fichier named.boot. Certaines personnes
   aiment commencer chaque fichier dfinissant une zone par une directive
   $ORIGIN, mais en fait c'est superflu. L'origine (l'emplacement dans la
   hirarchie du service DNS) d'un fichier de zone est indique dans la
   zone section du fichier named.conf. Dans notre cas, c'est
   0.0.127.in-addr.arpa.

   Ce ``fichier de zone'' (``zone file''), contient 3 ``resource
   records'' (RRs) : un SOA RR, un NS RR et un PTR RR. SOA est
   l'abrviation de ``Start Of Authority'' (Origine de l'Autorit). Le
   ``@'' est une notation spciale qui dsigne l'origine. Et comme la
   colonne ``domain'' de ce fichier donne 0.0.127.in-addr.arpa, la
   premire ligne signifie donc :

0.0.127.IN-ADDR.ARPA. IN SOA ...

   NS est le ``resource records'' pour le serveur de noms (NS = Name
   Server), Il n'y a pas de @ au dbut de la ligne, il est implicite,
   puisque la ligne d'avant commence avec un ``@''. Alors, faites-vous
   une fleur en omettant ce caractre. Donc, la ligne NS peut aussi
   s'crire comme suit :

0.0.127.in-addr.arpa.   IN      NS      ns.linux.bogus

   Elle dit au service DNS quelle machine est le serveur de noms pour le
   domaine 0.0.127.in-addr.arpa, c'est ns.linux.bogus. ns est le nom
   habituel des serveurs de noms, tout comme www. pour les serveurs Web,
   mais c'est simplement une habitude, on peut choisir n'importe quel
   nom.

   Et finalement le PTR dit que l'adresse 1 dans le sous rseau
   0.0.127.in-addr.arpa, donc 127.0.0.1 est appel localhost.

   Le champ SOA est le prambule de _tous_ les fichiers de zone, et il
   doit y en avoir exactement un dans chaque fichier de zone. Ce champ
   SOA dcrit la zone, son origine (une machine appele ns.linux.bogus),
   qui est responsable de son contenu (hostmaster@linux.bogus, vous
   devriez mettre votre adresse email  cet endroit), de quelle version
   du fichier de zone il s'agit (serial : 1), et quelques autres
   paramtres pour le cache et les serveurs DNS secondaires. Quant aux
   champs restants (_refresh_, _retry_, _expire_ et _minimum_) utilisez
   les valeurs donnes dans ce HOWTO et tout se passera certainement trs
   bien.

   Maintenant, relancez votre named (avec la commande ndc restart) et
   utilisez nslookup pour regarder le rsultat :

$ nslookup

Default Server:  localhost
Address:  127.0.0.1

> 127.0.0.1
Server:  localhost
Address:  127.0.0.1

Name:    localhost
Address:  127.0.0.1

   Tout va bien, on arrive  obtenir localhost  partir de 127.0.0.1.
   Maintenant, pour le sujet qui nous proccupe, le domaine linux.bogus,
   insrez une nouvelle zone dans le fichier named.conf :
     _________________________________________________________________

zone "linux.bogus" {
        notify no;
        type master;
        file "pz/linux.bogus";
};
     _________________________________________________________________

   Notez qu'encore une fois il n'y a pas de ``.''  la fin des noms de
   domaine dans le fichier named.conf.

   Dans le fichier de zone linux.bogus, nous allons mettre quelques
   donnes totalement factices :
     _________________________________________________________________

;
; Zone file for linux.bogus
;
; The full zone file
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        1W              ; expire, seconds
                        1D )            ; minimum, seconds
;
                NS      ns              ; Inet Address of name server
                MX      10 mail.linux.bogus     ; Primary Mail Exchanger
                MX      20 mail.friend.bogus.   ; Secondary Mail Exchanger
;
localhost       A       127.0.0.1
ns              A       192.168.196.2
mail            A       192.168.196.4
     _________________________________________________________________

   Il y a deux choses  noter  propos du champ SOA. ns.linux.bogus _doit
   absolument_ tre une vraie machine possdant un champ A. Il n'est pas
   lgal d'avoir un champ CNAME pour la machine mentionne dans le champ
   SOA. Il n'est pas ncessaire que son nom soit ``ns'', ce peut tre
   tout autre nom valide. La deuxime chose  noter c'est que
   hostmaster.linux.bogus doit se lire comme hostmaster@linux.bogus. Ce
   doit tre un alias de mail, ou une vritable bote aux lettres
   lectronique, et la personne qui maintient le DNS doit la lire
   rgulirement. Tous les mails concernant l'administration du domaine
   seront envoys  cette adresse. Il n'est pas obligatoire que le nom
   soit ``hostmaster'', vous pouvez mettre votre adresse e-mail
   personnelle, mais il serait bon que l'adresse ``hostmaster''
   fonctionne aussi.

   Il y a un nouveau RR (Resource Record) dans ce fichier, c'est le MX,
   pour Mail eXchanger. Il indique aux systmes de gestion du courrier
   lectronique  quelle machine envoyer le mail adress 
   someone@linux.bogus, dans notre cas  mail.linux.bogus ou
   mail.friend.bogus. Le nombre devant chaque machine est sa priorit
   vis--vis du champ MX, le RR avec le numro le plus faible (10)
   correspond  la machine  laquelle le courrier doit tre adress en
   priorit. En cas d'chec, il peut tre adress  la machine qui a le
   numro de priorit immdiatement suprieur, c'est--dire
   mail.friend.bogus qui a une priorit de 20 dans notre cas.

   Relancez named en tapant ndc restart. Examinons le rsultat avec
   nslookup :

$ nslookup
> set q=any
> linux.bogus
Server:  localhost
Address:  127.0.0.1

linux.bogus
        origin = ns.linux.bogus
        mail addr = hostmaster.linux.bogus
        serial = 199802151
        refresh = 28800 (8 hours)
        retry   = 7200 (2 hours)
        expire  = 604800 (7 days)
        minimum ttl = 86400 (1 day)
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
linux.bogus     nameserver = ns.linux.bogus
ns.linux.bogus  internet address = 192.168.196.2
mail.linux.bogus        internet address = 192.168.196.4

   Un examen approfondi vous montrera qu'il y a un bug. En effet, la
   ligne

  linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

   est entirement fausse. Il devrait y avoir

  linux.bogus preference = 10, mail exchanger = mail.linux.bogus

   J'ai fait cette erreur dlibrment, pour voir si vous suiviez :-) En
   regardant dans le fichier de zone, nous trouvons que dans la ligne

@ MX 10 mail.linux.bogus ; Primary Mail Exchanger

   il manque un point. Ou il y a un ``linux.bogus'' de trop. Si, dans un
   fichier de zone, un nom de machine ne se termine pas par un point,
   l'origine est ajoute au nom de la machine. Ainsi, une des deux
   formes :
     _________________________________________________________________

                MX      10 mail.linux.bogus.    ; Primary Mail Exchanger
     _________________________________________________________________

   ou
     _________________________________________________________________

                MX      10 mail                 ; Primary Mail Exchanger
     _________________________________________________________________

   est correcte. Je prfre la deuxime forme parce qu'il y a moins de
   caractres  taper. Certains approuveront, d'autres non. Dans un
   fichier de zone, le nom de domaine doit ou bien tre crit et termin
   par un point, ou bien ne pas tre inclus du tout. Dans le dernier cas,
   le nom de domaine par dfaut est l'origine.

   Il faut que j'insiste sur le point suivant : dans le fichier
   named.conf, il ne doit _pas_ y avoir de ``.'' aprs les noms de
   domaines. Vous ne pouvez pas vous imaginer les ravages qui ont t
   causs pas des ``.'' en trop ou en moins.

   Cela tant dit, voici le nouveau fichier de zone, avec quelques
   informations supplmentaires :
     _________________________________________________________________

;
; Zone file for linux.bogus
;
; The full zone file
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        1W              ; expire, seconds
                        1D )            ; minimum, seconds
;
                TXT     "Linux.Bogus, your DNS consultants"
                NS      ns              ; Inet Address of name server
                NS      ns.friend.bogus.
                MX      10 mail         ; Primary Mail Exchanger
                MX      20 mail.friend.bogus. ; Secondary Mail Exchanger

localhost       A       127.0.0.1

gw              A       192.168.196.1
                HINFO   "Cisco" "IOS"
                TXT     "The router"

ns              A       192.168.196.2
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "Pentium" "Linux 2.0"
www             CNAME   ns

donald          A       192.168.196.3
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "i486"  "Linux 2.0"
                TXT     "DEK"

mail            A       192.168.196.4
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "386sx" "Linux 1.2"

ftp             A       192.168.196.5
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "P6" "Linux 2.1.86"
     _________________________________________________________________

   Il y a un certain nombre de nouveaux RR que nous allons passer en
   revue : HINFO (Host INFOrmation), qui est en deux parties, et c'est
   une bonne habitude  prendre que d'encadrer chacune de guillemets. La
   premire partie est la description matrielle ou le type de processeur
   de la machine tandis que la deuxime partie dcrit le logiciel utilis
   ou le systme d'exploitation de la machine. ns a pour processeur un
   Pentium et tourne sous Linux 2.0. Le champ CNAME (Canonical NAME) sert
    donner plusieurs noms  la mme machine. Par consquent, www est un
   alias de ns.

   L'utilisation des champs CNAME est assez controverse. Mais il est
   sage de suivre la rgle selon laquelle un champ MX, CNAME ou SOA ne
   doit _jamais_ se rfrer  un champ CNAME, toujours se rfrer  un
   champ A, il est donc prfrable de ne pas avoir :
     _________________________________________________________________

foobar          CNAME   www                     ; NON !
     _________________________________________________________________

   En revanche, ceci est correct :
     _________________________________________________________________

foobar          CNAME   ns                      ; Oui !
     _________________________________________________________________

   Il est aussi important de noter qu'un CNAME n'est pas un nom d'hte
   lgal pour une adresse de courrier lectronique.
   webmaster@www.linux.bogus est une adresse de mail illgale avec la
   configuration ci-dessus. Vous pouvez tre srs qu'il y a un certain
   nombre d'administrateurs systme dans le Vaste Monde qui sont trs 
   cheval sur cette rgle, mme si avec un CNAME a marche pour vous. Une
   faon de contourner le problme est d'utiliser des champs A (et
   peut-tre d'autres, comme un champ MX par exemple)  la place :
     _________________________________________________________________

www             A       192.168.196.2
     _________________________________________________________________

   Un certain nombre de gourous-du-bind recommandent de ne _pas_ utiliser
   de CNAME. Mais les discussions sur le pour et le contre sortent du
   cadre de ce HOWTO.

   Mais comme vous le voyez, ce HowTo ainsi que beaucoup de serveurs ne
   suivent pas cette rgle.

   Chargez la nouvelle base de donnes en lanant ndc reload, ce qui
   forcera named  relire ses fichiers de configuration.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

> ls -d linux.bogus

   Ceci veut dire que l'on souhaite que tous les champs soient affichs.

[localhost]
$ORIGIN linux.bogus.
@                       1D IN SOA       ns hostmaster (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns
                        1D IN NS        ns.friend.bogus.
                        1D IN TXT       "Linux.Bogus, your DNS consultants"
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
gw                      1D IN A         192.168.196.1
                        1D IN HINFO     "Cisco" "IOS"
                        1D IN TXT       "The router"
mail                    1D IN A         192.168.196.4
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "386sx" "Linux 1.0.9"
localhost               1D IN A         127.0.0.1
www                     1D IN CNAME     ns
donald                  1D IN A         192.168.196.3
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "i486" "Linux 1.2"
                        1D IN TXT       "DEK"
ftp                     1D IN A         192.168.196.5
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "P6" "Linux 1.3.59"
ns                      1D IN A         192.168.196.2
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "Pentium" "Linux 1.2"

   Tout va bien. Regardons ce qu'il dit pour www tout seul :

> set q=any
> www.linux.bogus.
Server:  localhost
Address:  127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
ns.linux.bogus  internet address = 192.168.196.2

   En d'autres termes, le vrai nom de www.linux.bogus est ns.linux.bogus,
   et vous avez en plus quelques informations  propos de ns, en fait,
   suffisamment pour vous y connecter si vous tiez un programme.

   Bon, on a fait la moiti du boulot.

4.3 La zone inverse

   a y est, les programmes peuvent convertir les noms de linux.bogus en
   adresses auxquelles ils peuvent se connecter. Maintenant, on a besoin
   d'une zone inverse pour que l'on puisse retrouver le DNS  partir de
   l'adresse. Ce nom est utilis par diffrents types de serveurs (FTP,
   IRC, WWW et autres) pour dcider s'ils vont discuter avec vous ou non,
   et s'ils le font, quelle priorit ils vont vous donner. Pour un accs
   complet aux services sur Internet, la zone inverse est indispensable.

   Mettez a dans votre named.conf
     _________________________________________________________________

zone "196.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "pz/192.168.196";
};
     _________________________________________________________________

   C'est exactement comme pour le 0.0.127.in-addr.arpa et le contenu est
   similaire :
     _________________________________________________________________

@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151 ; Serial, todays date + todays serial
                        8H      ; Refresh
                        2H      ; Retry
                        1W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.linux.bogus.

1               PTR     gw.linux.bogus.
2               PTR     ns.linux.bogus.
3               PTR     donald.linux.bogus.
4               PTR     mail.linux.bogus.
5               PTR     ftp.linux.bogus.
     _________________________________________________________________

   Redmarrez votre named (ndc restart) et examinez votre travail avec
   nslookup :
     _________________________________________________________________

> 192.168.196.4
Server:  localhost
Address:  127.0.0.1

Name:    mail.linux.bogus
Address:  192.168.196.4
     _________________________________________________________________

   On dirait que c'est bon, on va regarder en dtails pour s'en assurer :
     _________________________________________________________________

> ls -d 196.168.192.in-addr.arpa
[localhost]
$ORIGIN 196.168.192.in-addr.arpa.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus.
 (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns.linux.bogus.
1                       1D IN PTR       gw.linux.bogus.
2                       1D IN PTR       ns.linux.bogus.
3                       1D IN PTR       donald.linux.bogus.
4                       1D IN PTR       mail.linux.bogus.
5                       1D IN PTR       ftp.linux.bogus.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus.
 (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
     _________________________________________________________________

   Pas mal ! Si ce que vous donne nslookup ne ressemble pas a a, allez a
   la pche aux messages d'erreur dans votre syslog. J'ai expliqu
   comment faire au tout dbut du chapitre.

4.4 Prcautions d'usage

   Je devrais maintenant faire quelques remarques. Les adresses IP
   utilises dans les exemples prcdents sont prises dans le bloc des
   ``rseaux privs'', c'est  dire des adresses qui ne doivent pas tre
   utilises publiquement sur Internet. Donc, il est sage de les avoir
   utilises dans un exemple d'un HowTo. La deuxime chose est la ligne
   notify no;. Elle demande  named de ne pas informer ses serveur
   secondaires (les esclaves) quand l'un de ses fichiers de zone a t
   mis  jour. Depuis Bind-8 named peut informer les autres serveurs
   lists dans ses champs NS dans le fichier zone, quand une zone est
   mise a jour. C'est pratique pour une utilisation normale, mais pour
   des expriences prives cette fonctionnalit doit tre mise hors
   service, on ne va quand mme pas polluer Internet avec nos
   expriences, non ?

   Bien sr, ce domaine est trs factice, tout comme le sont ses
   adresses. C'est peut-tre un peu droutant pour vous. Un vrai exemple
   tir d'un vrai domaine vous attend au grand chapitre suivant.

4.5 Pourquoi est-ce que les lookup inverss ne marchent pas ?

   Il y a quelques trucs qui sont normalement vits avec les lookups qui
   arrivent souvent quand on met en place des zones inverss. Avant de
   continuer, vous avez besoin d'avoir des lookups qui marchent sur vos
   propres serveurs de noms. Si ce n'est pas le cas, revenez en arrire
   et rparez-le avant de continuer.

   Je parlerais des deux problmes de lookups inverss qui sont vu de
   l'extrieur de votre rseau :

  La zone inverse n'est pas dlgue.

   Quand vous demandez  un fournisseur d'accs quelques adresses IP
   ainsi qu'un nom de domaine, le nom de domaine vous est normalement
   dlgu. La dlgation consiste en un champ NS qui vous aide a passer
   d'un serveur  l'autre comme je l'ai expliqu dans le brin de thorie
   qui prcde. Vous l'avez lu, n'est-ce pas ? Si votre zone inverse ne
   marche pas, retournez y et lisez-le. Maintenant.

   La zone inverse a elle aussi besoin d'tre dlgue. Si vous avez le
   rseau 192.168.196 avec le domaine linux.bogus de votre fournisseur,
   il devra mettre des champs NS pour votre zone inverse aussi bien que
   pour votre zone directe. Si vous remontez la chane  partir de
   in-addr.arpa vous trouverez un trou quelque part. Trs certainement au
   niveau de votre fournisseur. Aprs avoir trouv le trou dans la
   chane, contactez votre fournisseur et demandez-lui de corriger
   l'erreur.

  Vous avez un sous-rseau sans classe

   C'est un sujet plutt pointu, mais les sous rseaux sans classe sont
   trs rpandus de nos jours et vous en aurez trs certainement un si
   vous n'tes pas une entreprise assez grande.

   Un sous-rseau sans classe est ce qui sauve Internet de nos jours. Il
   y a quelques annes, il y avait vraiment beaucoup de discussions sur
   la rarfaction des adresses IP. Les personnes intelligentes de l'IETF
   (Internet Engineering Task Force, ceux qui maintiennent Internet en
   tat de marche) se sont penches sur cet pineux problme et ont
   trouv une solution. A un certain prix. Le prix est que vous aurez
   moins qu'un sous rseau de classe ``C'' et que certaines choses ne
   marcheront certainement plus. Allez voir Ask Mr DNS (c'est en anglais)
   pour plus d'explications.

   Vous l'avez lu ? Comme je ne vais pas l'expliquer, s'il vous plat,
   allez le lire.

   La premire partie du problme est que votre FAI doit comprendre la
   technique dcrite par _Mr DNS_. Tous les petits FAI ne le comprennent
   pas. S'ils n'ont pas bien compris, vous allez avoir  leur expliquer
   et  insister. Mais assurez-vous de comprendre vous-mme en premier
   lieu ;-). Ils mettrons ensuite une jolie zone inverse sur leurs
   serveurs que vous pourrez examiner pour savoir si elle est correcte
   avec nslookup.

   La deuxime et dernire partie du problme est que vous devez en
   comprendre la technique. Si vous n'tes pas certain, revenez en
   arrire et relisez ce document. Ensuite, vous pourrez mettre en place
   une zone inverse sans classe comme le dcrit _Mr DNS_.

   Il y a une autre difficult qui pointe son nez ici. Les vieux
   rsolveurs _ne seront pas_ capable de suivre les champs CNAME dans la
   chane de rsolution et n'arriveront pas a rsoudre l'IP de votre
   machine. Cela peut entraner l'assignation d'une mauvaise classe, la
   non-rsolution ou quelque chose dans ce got-l. Si vous butez sur ce
   genre de problme, la seule solution (que je connaisse) est de
   demander  votre FAI d'insrer vos champs PTR dans ses fichiers de
   zone sans classe plutt que des champs CNAME.

   Certains FAI vous proposeront d'autre mthodes pour grer cela, comme
   des formulaires web o vous pourrez entrer vos zones inverses, ou
   d'autre systmes automatiss.

5. Un exemple tir d'un domaine rel

   _O nous allons enfin voir de vrais fichiers de zone_

   Certains utilisateurs ont suggr que je mette un vrai exemple d'un
   domaine qui marche dans la ralit car mon explication sur la
   diffrence entre un vrai domaine et l'exemple bidon ci-dessus n'tait
   pas trs claire.

   J'utilise cet exemple avec la permission de David Bullock de LAND-5.
   Ces fichiers taient  jour le 24 Septembre 96, et ont t modifie
   pour tre utiliss avec les restrictions de bind 8 et quelques
   extensions de mon cru. Par consquent, ils peuvent donc diffrer de ce
   que vous pouvez trouver en questionnant les serveurs de nom de LAND-5
   aujourd'hui.

   Voici les sections pour les deux zones inverses ncessaires : le
   rseau 127.0.0, ainsi que le sous-rseau LAND-5 206.6.177. Et une
   ligne primary pour la forward zone land-5.com. Notez aussi qu'au lieu
   de mettre les fichiers dans le rpertoire pz comme dans ce HowTo, il
   les met dans le rpertoire zone.

5.1 /etc/named.conf (ou /var/named/named.conf)
     _________________________________________________________________

// Boot file for LAND-5 name server

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "root.hints";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "zone/127.0.0";
};

zone "land-5.com" {
        type master;
        file "zone/land-5.com";
};

zone "177.6.206.in-addr.arpa" {
        type master;
        file "zone/206.6.177";
};
     _________________________________________________________________

   Si vous mettez a dans votre named.conf pour jouer avec, _PAR PITI_
   mettez aussi le ``notify no;'' dans les zones des deux land-5.com pour
   viter les accidents.

5.2 /var/named/root.hints

   Souvenez-vous que le contenu de ce fichier peut changer, et celui
   donn ici est assez vieux. Vous feriez mieux d'utiliser un fichier
   plus rcent, produit par le programme dig.
     _________________________________________________________________

; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;;      ., type = NS, class = IN

;; ANSWER SECTION:
.                       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.

;; ADDITIONAL SECTION:
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

;; Total query time: 215 msec
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET.  198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE  sent: 17  rcvd: 436
     _________________________________________________________________

5.3 /var/named/zone/127.0.0

   Nous y avons mis juste l'essentiel, le champ SOA obligatoire, et un
   champ qui tablit la correspondance entre 127.0.0.1 et localhost. Ils
   sont tous les deux indispensables. Rien d'autre ne doit figurer dans
   ce fichier. Il ne sera probablement jamais ncessaire de le mettre 
   jour,  moins que l'adresse du serveur de noms ou de hostmaster ne
   change.
     _________________________________________________________________

@               IN      SOA     land-5.com. root.land-5.com. (
                                199609203       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.

1                       PTR     localhost.
     _________________________________________________________________

5.4 /var/named/zone/land-5.com

   Nous trouvons ici le classique et obligatoire champ SOA ainsi que les
   champs NS. Nous pouvons voir qu'il y a un serveur de noms secondaire
   ns2.psi.net. C'est comme a que tout le monde devrait faire :
   _toujours_ avoir un serveur secondaire sur un site distant pour faire
   des sauvegardes. Nous voyons galement que le serveur primaire est
   land-5, qui assure tous les services, et que l'administrateur a
   utilis des CNAME pour faire a (il aurait pu utiliser des champs A).

   Comme vous pouvez voir d'aprs le champ SOA, le fichier de zone a son
   origine en land-5.com, la personne  contacter est root@land-5.com.
   hostmaster est une autre adresse souvent utilise pour la personne 
   contacter. Le numro de srie est au format obligatoire aaaammjj, avec
   le numro de srie dans la journe ajout  la fin; il s'agit
   certainement de la sixime version du fichier de zone pour la journe
   du 20 septembre 1996. N'oubliez-pas que le numro de srie doit
   _obligatoirement_ augmenter avec le temps, ici il n'y a qu'un chiffre
   pour le numro de srie dans la journe, si bien qu'aprs 9
   modifications il faudra attendre le lendemain pour modifier le fichier
    nouveau. On peut aussi utiliser deux chiffres au lieu d'un seul.
     _________________________________________________________________

@       IN      SOA     land-5.com. root.land-5.com. (
                        199609206       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        1W              ; expire, seconds
                        1D )            ; minimum, seconds
                NS      land-5.com.
                NS      ns2.psi.net.
                MX      10 land-5.com.  ; Primary Mail Exchanger
                TXT     "LAND-5 Corporation"

localhost       A       127.0.0.1

router          A       206.6.177.1

land-5.com.     A       206.6.177.2
ns              A       206.6.177.3
www             A       207.159.141.192

ftp             CNAME   land-5.com.
mail            CNAME   land-5.com.
news            CNAME   land-5.com.

funn            A       206.6.177.2

;
;       Workstations
;
ws-177200       A       206.6.177.200
                MX      10 land-5.com.   ; Primary Mail Host
ws-177201       A       206.6.177.201
                MX      10 land-5.com.   ; Primary Mail Host
ws-177202       A       206.6.177.202
                MX      10 land-5.com.   ; Primary Mail Host
ws-177203       A       206.6.177.203
                MX      10 land-5.com.   ; Primary Mail Host
ws-177204       A       206.6.177.204
                MX      10 land-5.com.   ; Primary Mail Host
ws-177205       A       206.6.177.205
                MX      10 land-5.com.   ; Primary Mail Host
; {Ici 245 lignes ont t effaces}
ws-177250       A       206.6.177.250
                MX      10 land-5.com.   ; Primary Mail Host
ws-177251       A       206.6.177.251
                MX      10 land-5.com.   ; Primary Mail Host
ws-177252       A       206.6.177.252
                MX      10 land-5.com.   ; Primary Mail Host
ws-177253       A       206.6.177.253
                MX      10 land-5.com.   ; Primary Mail Host
ws-177254       A       206.6.177.254
                MX      10 land-5.com.   ; Primary Mail Host
     _________________________________________________________________

   Si vous examinez le serveur de noms de land-5, vous allez voir que les
   noms sont de la forme ws__nombre_. Depuis les dernires versions de
   bind 4, named fait plus attention aux caractres placs dans les noms
   de domaines. Cela ne marcherait pas du tout avec bind-8, c'est pour a
   que j'ai remplac les ``_'' (soulign) par des ``-'' (tiret) pour
   l'exemple dans ce HowTo.

   Une autre chose qu'il faut noter est que les stations de travail n'ont
   pas de nom personnel, mais plutt un prfixe suivit des deux derniers
   morceaux de leur adresse IP. Utiliser une telle convention simplifie
   grandement la maintenance, mais c'est un peu impersonnel, et a peut
   agacer vos clients.

   Nous voyons aussi que funn.land-5.com est un alias pour land-5.com,
   mais en utilisant un enregistrement A, pas un CNAME. C'est une bonne
   chose comme on l'a not plus haut.

5.5 /var/named/zone/206.6.177

   Les commentaires se trouvent juste aprs le fichier.
     _________________________________________________________________

@               IN      SOA     land-5.com. root.land-5.com. (
                                199609206       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
                        NS      ns2.psi.net.
;
;       Servers
;
1       PTR     router.land-5.com.
2       PTR     land-5.com.
2       PTR     funn.land-5.com.
;
;       Workstations
;
200     PTR     ws-177200.land-5.com.
201     PTR     ws-177201.land-5.com.
202     PTR     ws-177202.land-5.com.
203     PTR     ws-177203.land-5.com.
204     PTR     ws-177204.land-5.com.
205     PTR     ws-177205.land-5.com.
; {Ici 245 lignes ont t effaces}
250     PTR     ws-177250.land-5.com.
251     PTR     ws-177251.land-5.com.
252     PTR     ws-177252.land-5.com.
253     PTR     ws-177253.land-5.com.
254     PTR     ws-177254.land-5.com.
     _________________________________________________________________

   La zone inverse est la partie de la configuration qui semble poser le
   plus de problmes. Elle est utilise pour trouver le nom d'hte d'une
   machine, connaissant son adresse IP. Exemple : vous tes un serveur
   IRC et vous acceptez des connexions provenant de clients IRC.
   Cependant, comme vous tes un serveur IRC norvgien, vous ne voulez
   accepter que les connexions venant de Norvge ou des autres pays
   scandinaves. Ainsi, lorsqu'un client se connecte chez vous, la
   bibliothque C peut vous dire quelle est l'adresse IP du client,
   puisque cette dernire se trouve dans tous les paquets qui traversent
   le rseau. Ensuite, vous pouvez appeler une fonction connue sous le
   nom de gethostbyaddr qui va rechercher le nom d'une machine
   connaissant son adresse IP. gethostbyaddr va poser la question  un
   serveur de noms, qui va alors faire une recherche de la machine dans
   le DNS. Supposons que la connexion du client se fasse depuis
   ws_177200.land-5.com. L'adresse IP que la bibliothque C fournit au
   serveur IRC est 206.6.177.200. Pour retrouver le nom de cette machine,
   il nous faut trouver 200.177.6.206.in-addr.arpa. Le serveur de noms va
   donc d'abord trouver les serveurs arpa., puis les serveurs
   in-addr.arpa., poursuivre la recherche inverse par 206, puis 6 et
   finalement trouver le serveur pour la zone 177.6.206.in-addr.arpa 
   LAND-5. C'est ce dernier qui lui dira que pour
   200.177.6.206.in-addr.arpa nous avons un champ ``PTR
   ws_177200.land-5.com'', ce qui veut dire que le nom qui va avec
   206.6.177.200 est ws_177200.land-5.com. Tout comme l'explication de la
   rsolution de prep.ai.mit.edu, ce scnario est un peu idalis.

   Revenons  l'exemple du serveur IRC. Le serveur n'accepte que les
   connexions venant des pays scandinaves, c'est--dire *.no, *.se, *.dk.
   Le nom ws_177200.land-5.com ne correspond videmment pas, et le
   serveur va donc refuser la connexion. Si il n'existait _pas_ de
   rsolution inverse de 206.2.177.200 au travers de la zone
   in-addr.arpa, le serveur aurait t tout  fait incapable de trouver
   le nom, et aurait d se contenter de comparer 206.6.177.200  *.no,
   *.se et *.dk, dont aucun ne correspond.

   Certaines personnes vous diront que la rsolution de noms inverse
   n'est importante que pour les serveurs, ou pas importante du tout. Pas
   tant que a : beaucoup de serveurs ftp, news, irc ou mme certains
   http (Web) n'acceptent _pas_ les connexions venant de machines dont
   ils ne peuvent retrouver le nom. C'est pourquoi la rsolution de noms
   inverse pour les machines est _obligatoire_.

6. Maintenance

   _Garder votre DNS en tat de marche_

   En plus des tches normales, il y a une tche de maintenance spciale
    effectuer sur les serveurs de nom. Il s'agit de garder le fichier
   root.hints  jour. La faon la plus simple de le faire est d'utiliser
   dig. Lancez d'abord dig sans argument, vous obtiendrez le fichier
   root.cache de votre propre serveur. Posez alors la mme question  un
   des serveurs de cette liste avec la commande dig @rootserver. Vous
   remarquerez que ce que vous obtenez ressemble normment  un fichier
   root.hints, avec quelques chiffres en plus. Ces chiffres
   supplmentaires sont inoffensifs. Sauvez-le dans un fichier (dig .
   @e.root-servers.net >root.hints.new) et remplacez l'ancien fichier
   root.hints avec.

   N'oubliez pas de relancer named aprs avoir remplac ce fichier.

   Al Longyear m'a envoy ce script, qui peut tre lanc automatiquement
   pour mettre  jour named.hints. Lancez-le automatiquement  partir de
   la crontab et vous pourrez oublier qu'il existe. Ce script suppose que
   l'alias de mail `hostmaster' existe. Il faudra sans doute modifier ce
   fichier pour qu'il fonctionne chez vous.
     _________________________________________________________________

#!/bin/sh
#
# Met a jours les informations du cache du serveur de noms chaque mois.
# Ce script est lanc automatiquement par un cron.
#
# Original par Al Longyear
# Mis a jour pour Bind 8 par Nicolai Langfeldt
# Plusieurs erreurs dcouvertes par David A. Ranch
# Test avec un ping suggr par Martin Foster
#
(
 echo "To: hostmaster <hostmaster>"
 echo "From: system <root>"
 echo "Subject: Mise a jour automatique du fichier root.hints"
 echo

 PATH=/sbin:/usr/sbin:/bin:/usr/bin:
 export PATH
 cd /var/named

 # Sommes nous connects ? Pingons un serveur de notre FAI
 case `ping -qnc some.machine.net` in
   *'100% packet loss'*)
        echo "PAS de connexion rseau. root.hints NON mis  jour"
        echo
        exit 0
        ;;
 esac

 dig @rs.internic.net . ns >root.hints.new 2>&1

 case `cat root.hints.new` in
   *NOERROR*)
        # Ca a march
        :;;
   *)
        echo "La mise a jour de root.hints a ECHOUE."
        echo "Voici la sortie de dig :"
        echo
        cat root.hints.new
        exit 0
        ;;
 esac

 echo "Le fichier root.hints a t mis a jour et contient les informations suiv
antes :"
 echo
 cat root.hints.new

 chown root.root root.hints.new
 chmod 444 root.hints.new
 rm -f root.hints.old
 mv root.hints root.hints.old
 mv root.hints.new root.hints
 ndc restart
 echo
 echo "Le serveur de noms a t redmarr, de cette manire, la mise a jour est
 complte."
 echo "L'ancien root.hints s'appelle maintenant /var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
     _________________________________________________________________

   Certains d'entre vous ont remarqus que le fichier root.hints est
   aussi disponible via ftp depuis l'Internic. S'il vous plat,
   n'utilisez pas le ftp pour mettre  jour le root.hints, la mthode ci
   dessus est bien meilleur du point de vue de la nettiquette et de
   l'Internic.

7. Passer de la version 4  la version 8

   Cette section tait au dpart sur l'utilisation de bind-8 crite par
   David E. Smith (dave@bureau42.ml.org). Je l'ai dite pour reflter le
   nouveau nom de la section.

   Il n'y a pas grand chose  faire, sinon, utiliser named.conf au lieu
   du named.boot, or bind-8 est distribu avec un script perl pour
   convertir un named.boot en named.conf. Exemple de named.boot (vieux)
   pour un serveur qui ne sert que de cache :
     _________________________________________________________________

directory /var/named
cache   .                                       root.hints
primary 0.0.127.IN-ADDR.ARPA                    127.0.0.zone
primary localhost                               localhost.zone
     _________________________________________________________________

   Depuis la ligne de commande, et depuis le rpertoire
   bind8/src/bin/named (au cas o vous avez rcupr les sources; si vous
   avez eu un paquetage binaire, le script se balade certainement dans le
   coin), tapez :
     _________________________________________________________________

./named-bootconf.pl < named.boot > named.conf
     _________________________________________________________________

   qui cre un nouveau named.conf :
     _________________________________________________________________

// generated by named-bootconf.pl

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "root.hints";
};

zone "0.0.127.IN-ADDR.ARPA" {
        type master;
        file "127.0.0.zone";
};

zone "localhost" {
        type master;
        file "localhost.zone";
};
     _________________________________________________________________

   a marche pour tout ce qui pouvait aller dans un named.boot, mais, il
   ne met pas toutes les nouveauts que bind-8 permet. Voici une version
   plus complte d'un named.conf qui fait la mme chose, mais d'une faon
   plus efficace :
     _________________________________________________________________

// Voici le fichier de configuration de named (pour BIND 8.1 et ultrieur).
// Il devrait normalement tre install dans /etc/named.conf.
// Le seul changement fait dans le named.conf d'origine (a part ce commentaire
// :) est que la ligne directory a t dcommente, car j'ai dj les fichiers
// de zone dans /var/named.

options {
        directory "/var/named";
        datasize 20M;
};

zone "localhost" IN {
        type master;
        file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "127.0.0.zone";
};

zone "." IN {
        type hint;
        file "root.hints";
};
     _________________________________________________________________

   Dans le rpertoire bind8/src/bin/named/test de la distribution de
   bind8, vous trouverez tout a, ainsi que des fichiers de zone que la
   majorit peuvent prendre et utiliser instantanment.

   Les formats des fichiers de zone et du root.hints sont les mmes, tout
   comme les commandes qui les mettent  jour.

8. Questions et Rponses

   Dans cette section, je passe en revue quelques-unes des questions les
   plus frquemment poses  propos du DNS et de ce HOWTO. Et je donne
   mme les rponses ;-) Merci de bien lire cette section avant de
   m'crire.

    1. Mon named me rclame un fichier named.boot
       Vous vous tes tromps de HowTo. allez voir l'ancienne version de
       ce HowTo, celle qui parle de bind 4,  www.math.uio.no/~janl/DNS/
    2. Question : Comment utiliser un DNS si l'on se trouve derrire un
       firewall ?
       Voici un indice : forward only;. Vous aurez probablement aussi
       besoin de mettre :
         _____________________________________________________________

  query-source port 53;
         _____________________________________________________________

       dans la partie ``options'' de votre named.conf comme l'exemple 3
       le suggre serveur qui ne fait que du cache.
    3. Question : Comment dire  un DNS qu'il doit faire une rotation
       entre un certain nombre d'adresses pour un service donn, par
       exemple si l'on veut obtenir quilibrer la charge de www.busy.com
       entre plusieurs machines ?
       Crez plusieurs champs _A_ pour www.busy.com et utilisez bind
       4.9.3 ou une version plus rcente, qui supporte les rponses 
       scrutation circulaire. Cela ne marchera _pas_ avec des versions de
       bind antrieures.
    4. Je veux mettre en place un serveur DNS sur un Intranet (ferm).
       Comment faire ?
       Effacez rageusement le fichier root.hints et crez seulement les
       fichiers de zone. Cela veut aussi dire que vous n'aurez pas 
       crer des nouveaux fichiers hints tout le temps.
    5. Comment mettre en place un serveur secondaire ?
       Si le serveur primaire a pour adresse 127.0.0.1, mettez une ligne
       comme celle-ci dans le fichier named.conf du serveur secondaire :
         _____________________________________________________________

  zone "linux.bogus" {
        type slave;
        file "sz/linux.bogus";
        masters { 127.0.0.1; };
  };
         _____________________________________________________________

       Vous pouvez mettre plusieurs serveurs matres, ajoutez les sur la
       ligne masters en les sparant par un ``;'' (point-virgule)
    6. Je veux faire tourner bind lorsque je suis dconnect du rseau
       Il y a trois trucs a savoir :
          + J'ai reu le mail suivant de Ian Clark <ic@deakin.edu.au>, o
            il explique comment il fait a :


Ici, je fais tourner named sur la machine qui fait du "Masquerading". J'ai
deux fichiers root.cache, un qui s'appelle root.cache.real et qui contient les
vrais noms des serveurs root, et l'autre qui s'appelle root.cache.fake qui
contient ceci~:

--------------
; root.hints.fake
; Ce fichier ne contient pas d'informations
--------------

Quand je me dconnecte, je copie le fichier root.hints.fake vers root.hints et
je relance named.

Quand je me connecte, je copie root.hints.real et je relance named.

Ces deux manoeuvres sont faites, respectivement,  partir de ip-down et ip-up.

Lorsque je suis dconnect, named rajoute ceci au fichier messages aprs la
premire requte concernant un nom de domaine qu'il ne connat pas~:

Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN

Ce qui n'est pas trs gnant.

a marche trs bien dans mon cas.  Je peux utiliser le serveur de noms pour
les machines locales lorsque je suis dconnect du Net en vitant les dlais
introduits par les timeout lis  la recherche des noms de domaine extrieurs.
Et lorsque je suis connect au Net, les requtes concernant les noms de
domaines extrieurs marchent normalement.

          + J'ai aussi reu des informations sur la faon dont bind
            interagit avec NFS et le portmapper sur une machine qui est
            le plus souvent dconnecte de la part de Karl-Max Wanger :


J'ai pris l'habitude d'utiliser named sur toutes mes machines qui sont
seulement connectes  Internet de faons occasionnelles grce  un modem. Le
serveur de noms n'agit qu'en tant que cache, il n'a aucune zone d'autorit et
demande tout aux serveurs du fichier root.cache.  Comme d'habitude avec une
Slackware, named est dmarr avant nfsd et mountd.

Avec l'une de mes machines (un portable Libretto 30), j'ai eu le problme
suivant~: de temps en temps, je pouvais monter ses disques depuis un autre
systme connect sur mon LAN local, mais la plupart du temps, a ne marchait
pas. Il se passait la mme chose que ce soit en utilisant PLIP, une carte
Ethernet PCMCIA ou PPP avec une interface srie.

Aprs quelques temps de rflexions et d'expriences, j'ai dcouvert que named
empchait nfsd et mountd de s'enregistrer avec portmapper au dmarrage (Je
dmarre ces dmons au boot d'habitude).  Le fait de lancer named aprs nfsd
et mountd liminait ce problme compltement

Comme il n'y a pas de dsavantages  modifier ainsi la squence de boot de
cette faon, j'encourage tout le monde  en faire de mme pour viter des
problmes potentiels.

          + Enfin, il y a quelques informations sur le sujet chez Ask Mr
            DNS. C'est a propos de bind 4, vous aurez donc  l'adapter
            pour que cela fonctionne avec bind 8.
    7. O le serveur de noms qui fait que du cache stocke-t-il son
       cache ? Puis-je contrler la taille de ce cache ?
       Le cache est entirement stock en mmoire, il n'est _pas_ crit
       sur le disque. Chaque fois que vous tuez named, le cache est
       perdu. Il n'y a _aucun_ moyen de contrler le cache. named gre le
       cache selon quelques rgles simples, et c'est tout. Vous ne pouvez
       pas contrler le cache ou sa taille en aucune manire. Si vous
       voulez vraiment le faire, vous pouvez le faire en bricolant le
       code de named. Mais ce n'est pas recommand.
    8. Est-ce que named sauvegarde le contenu du cache entre deux
       redmarrage ? Puis-je le forcer  le faire ?
       Non, named ne sauve _pas_ la contenu du cache lorsqu'il meurt.
       Cela signifie que le cache est reconstruit  partir de zro chaque
       fois que vous tuez puis relancez named. Il n'y a _aucun_ moyen de
       forcer named  sauvegarder le contenu du cache dans un fichier. Si
       vous voulez vraiment le faire, vous pouvez le faire en bricolant
       le code de named. Mais, encore une fois, ce n'est pas recommand.
    9. Comment je fais pour obtenir un domaine ? Je veux mettre en place
       mon domaine appel (par exemple) linux-rulez.net. Comment puis-je
       me faire assigner ce domaine ?
       Contactez votre FAI. Ils seront en mesure de vous aider pour tout
       a. Notez toutefois que vous aurez certainement  payer quelque
       chose.

9. Comment devenir un administrateur DNS de haut vol

   _Documentation et outils_

   La Vraie Documentation existe. En ligne et imprime. Il faut
   absolument la lire si vous voulez devenir un administrateur DNS du
   plus haut niveau. Pour ce qui est de la documentation imprime, le
   livre standard est _DNS and BIND_ de C. Liu et P. Albitz chez O'Reilly
   & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Je l'ai lu, c'est
   excellent, la deuxime dition est base sur bind 4, la troisime sur
   bind 8. Il y a aussi un chapitre sur le DNS dans _TCP/IP Network
   Administration_, de Craig Hunt chez O'Reilly..., ISBN 0-937175-82-X.
   Un autre passage oblig pour une Bonne administration de DNS (ou Bonne
   n'importe quoi, d'ailleurs) est _Zen and the Art of Motorcycle
   Maintenance_ by Robert M. Pirsig :-) Disponible sous la rfrence ISBN
   0688052304 entre autres.

   En ligne, vous trouverez des trucs sur DNS Resources Directory,
   www.isc.org/bind.html; Une FAQ, un manuel de rfrence (BOG; Bind
   Operations Guide) aussi bien que des papiers, des descriptions de
   protocoles et des trucs sur le service DNS (ces documents, ainsi que
   la majorit, sinon la totalit des RFC mentionnes ci-dessous font
   partie de la distribution de bind). Je n'ai pas lu la plupart de ces
   trucs-l, c'est pourquoi je ne suis pas un Grand Administrateur de
   DNS. Arnt Gulbrandsen,  l'inverse, a lu le BOG et n'en dit que du
   bien :-). Le newsgroup comp.protocols.tcp-ip.domains parle de DNS. En
   complment, il y a un certain nombre de RFC sur le DNS, les plus
   importantes sont certainement celles-ci :

   _RFC 2052_
          A. Gulbrandsen, P. Vixie, _A DNS RR for specifying the location
          of services (DNS SRV)_, October 1996

   _RFC 1918_
          Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear,
          _Address Allocation for Private Internets_, 02/29/1996.

   _RFC 1912_
          D. Barr, _Common DNS Operational and Configuration Errors_,
          02/28/1996.

   _RFC 1912 Errors_
          B. Barr _Errors in RFC 1912_, this is available at
          www.cis.ohio-state.edu/~barr/rfc1912-errors.html

   _RFC 1713_
          A. Romao, _Tools for DNS debugging_, 11/03/1994.

   _RFC 1712_
          C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, _DNS Encoding
          of Geographical Location_, 11/01/1994.

   _RFC 1183_
          R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, _New DNS
          RR Definitions_, 10/08/1990.

   _RFC 1035_
          P. Mockapetris, _Domain names - implementation and
          specification_, 11/01/1987.

   _RFC 1034_
          P. Mockapetris, _Domain names - concepts and facilities_,
          11/01/1987.

   _RFC 1033_
          M. Lottor, _Domain administrators operations guide_,
          11/01/1987.

   _RFC 1032_
          M. Stahl, _Domain administrators guide_, 11/01/1987.

   _RFC 974_
          C. Partridge, _Mail routing and the domain system_, 01/01/1986.
