DNS HOWTO
 Nicolai Langfeldt <[email protected]>
 <[email protected]>
 Version 2.2, du 11 f�vrier 1999

 Comment devenir un administrateur de DNS � la petite semaine.
 ______________________________________________________________________

 Table des mati�res


 1. Pr�ambule

    1.1 Aspect juridique
    1.2 Remerciements et appel aux bonnes volont�s
    1.3 D�dicace

 2. Introduction.

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

    3.1 D�marrer named.
    3.2 Le rendre encore meilleur
    3.3 F�licitations !

 4. Un domaine

    4.1 Mais avant tout, un brin de th�orie
    4.2 Notre propre domaine
    4.3 La zone invers�e
    4.4 Pr�cautions d'usage
    4.5 Pourquoi est-ce que les lookup invers�s ne marchent pas ?
       4.5.1 La zone inverse n'est pas d�l�gu�e.
       4.5.2 Vous avez un sous-r�seau sans classe

 5. Un exemple tir� d'un domaine r�el

    5.1 /etc/named.conf (ou /var/named/named.conf)
    5.2 /var/named/root.hints
    5.3 /var/named/zone/127.0.0
    5.4 /var/named/zone/land-5.com
    5.5 /var/named/zone/206.6.177

 6. Maintenance

 7. Passer de la version 4 � la version 8

 8. Questions et R�ponses

 9. Comment devenir un administrateur DNS de haut vol



 ______________________________________________________________________

 11..  PPrr��aammbbuullee

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


 Ce document fait partie du _L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t.




 11..11..  AAssppeecctt jjuurriiddiiqquuee

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


 11..22..  RReemmeerrcciieemmeennttss eett aappppeell aauuxx bboonnnneess vvoolloonntt��ss

 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 probl�mes ainsi que de vos succ�s, cela me
 permettra d'am�liorer ce HOWTO. Merci d'envoyer les commentaires et/ou
 les questions et m�me l'argent � [email protected]. Si vous m'envoyez
 un courrier �lectronique, merci de _v_�_r_i_f_i_e_r que votre adresse de
 retour est correcte car je re�ois _b_e_a_u_c_o_u_p 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 norv�gien.


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


 Si vous voulez traduire ce HOWTO, pr�venez-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.


 11..33..  DD��ddiiccaaccee

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


 22..  IInnttrroodduuccttiioonn..

 CCee qquuee ccee ddooccuummeenntt eesstt eett ccee qquu''iill nn''eesstt ppaass


 Le DNS est le _D_o_m_a_i_n _N_a_m_e _S_y_s_t_e_m. C'est l'ensemble des r�gles
 utilis�es 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 d�finir de telles correspondances � l'aide d'un syst�me 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 pr�sent ;-) une
 des parties les plus obscures de l'administration de r�seau. Le but de
 ce HOWTO est d'essayer d'en �claircir quelques aspects. Ce document
 explique comment configurer un DNS _s_i_m_p_l_e. 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 _l_i_r_e 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 r�seau par tous les services
 possibles, et en particulier pouvoir faire telnet 127.0.0.1, ce qui
 revient � vous connecter � votre propre machine (v�rifiez tout de
 suite que �a marche !). Il est aussi n�cessaire, pour commencer, que
 les fichiers /etc/nnswitch.conf (ou /etc/host.conf), /etc/resolv.conf
 et /etc/hosts soient correctement configur�s car je n'expliquerai pas
 ici � quoi ils servent. Si tout cela n'est pas d�j� 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 acc�der au r�seau.


 Je supposerai par la suite que vous ne vous trouvez pas derri�re un
 firewall qui bloque les requ�tes de r�solution de nom. Si tel est le
 cas, vous aurez besoin d'une configuration sp�ciale. Reportez-vous
 alors au chapitre ``FAQ''.


 Le service de r�solution de nom sous Unix est assur� par un programme
 appel� named. Il fait partie du paquetage ``bind'', g�r� 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 derni�re 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 s�curit� fait partie de vos
 pr�occupations, vous devriez vraiment passer � bind 8.


 Le service DNS est une base de donn�es � l'�chelle du r�seau tout
 entier. Faites donc tr�s 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 coh�rent et
 vous verrez qu'il vous offrira le meilleur de lui-m�me. Apprenez a
 l'utiliser, l'administrer, le d�bogger et vous ferez partie de ces
 administrateurs qui emp�chent que le r�seau ne s'�croule sous le poids
 des syst�mes mal g�r�s.


 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 ;-) tr�s bien si vous croyez ce que je vous dis.


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


 33..  UUnn SSeerrvveeuurr ddee NNoommss qquuii nnee sseerrtt qquuee ddee ccaacchhee..

 UUnn pprreemmiieerr aappeerr��uu ddee llaa ccoonnffiigguurraattiioonn dd''uunn DDNNSS,, ttrr��ss uuttiillee ppoouurr cceeuuxx
 qquuii uuttiilliisseenntt uunnee ccoonnnneexxiioonn eenn ddiiaalluupp..


 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";
 };
 ______________________________________________________________________




 TTRR��SS IIMMPPOORRTTAANNTT :: 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. EEffffaacceezz ddoonncc ttoouuss
 lleess ccaarraacctt��rreess bbllaannccss 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 _L_i_n_u_x
 _F_i_l_e_s_y_s_t_e_m _S_t_a_n_d_a_r_d, 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
 ______________________________________________________________________




 SSoouuvveenneezz--vvoouuss bbiieenn ddee ccee qquuee jj''aaii ddiitt ppoouurr lleess ccaarraacctt��rreess bbllaannccss eenn
 tt��ttee ddee lliiggnnee !!


 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_�_s_o_l_v_e_u_r 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.


 //eettcc//nnsssswwiittcchh..ccoonnff


 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.


 //eettcc//hhoosstt..ccoonnff


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


 33..11..  DD��mmaarrrreerr nnaammeedd..

 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 ^[email protected]:/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 _p_o_u_r_r_a_i_t 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''.


 33..22..  LLee rreennddrree eennccoorree mmeeiilllleeuurr

 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.


 33..33..  FF��lliicciittaattiioonnss !!

 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.


 44..  UUnn ddoommaaiinnee ssiimmppllee

 CCoommmmeenntt mmeettttrree eenn ppllaaccee vvoottrree pprroopprree ddoommaaiinnee


 44..11..  MMaaiiss aavvaanntt ttoouutt,, uunn bbrriinn ddee tthh��oorriiee

 Avant d'entrer _v_r_a_i_m_e_n_t dans le vif du sujet, il va falloir que je
 fasse un brin de th�orie avec quand m�me 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. Arr�tez
 le survol quand vous arrivez � l'endroit o� j'explique le contenu du
 fichier named.conf.


 Le service DNS est un syst�me organis� de mani�re hi�rarchique, sous
 forme d'arbre. La racine est d�sign�e par ``.'' et s'appelle ``la
 racine''. En dessous de . se trouvent un certain nombre de TLD (_T_o_p
 _L_e_v_e_l _D_o_m_a_i_n_s); 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 reconna�trez dans le DNS un arbre de
 recherche, avec des noeuds, des arr�tes et des feuilles.


 Lorsque vous recherchez une machine, la question est pos�e
 r�cursivement dans toute la hi�rarchie 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 poss�de d�j� 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 requ�te (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 acc�l�re 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
 pr�cis : 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 requ�te. Nous avons r�ussi � 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 commen�ant � partir de ., nous avons successivement trouv� les
 serveurs de noms des diff�rents niveaux du nom de domaine. Si vous
 aviez utilis� votre propre serveur DNS � la place de tous ces autres
 serveurs, votre named aurait, bien s�r, 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. D�s qu'on l'a trouv�e, on
 y grimpe en passant par le serveur qui conna�t 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 derni�re partie est de
 trouver prep.ai.mit.edu, ce qui est tr�s simple. En informatique
 fondamentale, on appelle prep une _f_e_u_i_l_l_e 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
 hi�rarchie des noms de domaine comme un domaine ``normal''.  in-
 addr.arpa nous sert � obtenir le nom d'h�te connaissant l'adresse IP
 d'une machine. Une chose tr�s importante ici est de bien remarquer que
 les adresses IP sont not�es en sens inverse � l'int�rieur du domaine
 in-addr.arpa. Si vous avez l'adresse d'une machine : 192.128.52.43,
 named proc�de 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 li�e � 43.52.128.192.in-addr.arpa.
 Malin, n'est ce pas ?  (dites oui). En fait, la r�solution de noms
 inverse est assez difficile � admettre les premi�res ann�es.


 � 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
 r�alit�.


 44..22..  NNoottrree pprroopprree ddoommaaiinnee

 Maintenant, nous en sommes � d�finir notre propre domaine bien � nous.
 Nous allons cr�er le domaine linux.bogus et y d�clarer quelques
 machines. C'est un nom de domaine totalement factice, afin d'�tre s�r
 de ne d�ranger personne dans le Vaste Monde.


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


 En fait, nous avons d�j� commenc� � cr�er 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 d�finir 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 d�j� vu ce fichier, il
 se pr�sente 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 d�finissant une zone par une directive
 $ORIGIN, mais en fait c'est superflu. L'origine (l'emplacement dans la
 hi�rarchie du service DNS) d'un fichier de zone est indiqu�e 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'abr�viation de ``Start Of Authority'' (Origine de l'Autorit�). Le
 ``@'' est une notation sp�ciale qui d�signe l'origine. Et comme la
 colonne ``domain'' de ce fichier donne 0.0.127.in-addr.arpa, la
 premi�re 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 d�but de la ligne, il est implicite,
 puisque la ligne d'avant commence avec un ``@''. Alors, faites-vous
 une fleur en omettant ce caract�re. 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 r�seau
 0.0.127.in-addr.arpa, donc 127.0.0.1 est appel� localhost.


 Le champ SOA est le pr�ambule de _t_o_u_s les fichiers de zone, et il doit
 y en avoir exactement un dans chaque fichier de zone. Ce champ SOA
 d�crit la zone, son origine (une machine appel�e ns.linux.bogus), qui
 est responsable de son contenu ([email protected], vous devriez
 mettre votre adresse email � cet endroit), de quelle version du
 fichier de zone il s'agit (serial : 1), et quelques autres param�tres
 pour le cache et les serveurs DNS secondaires. Quant aux champs
 restants (_r_e_f_r_e_s_h, _r_e_t_r_y, _e_x_p_i_r_e et _m_i_n_i_m_u_m) utilisez les valeurs
 donn�es dans ce HOWTO et tout se passera certainement tr�s bien.


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




 $ 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 pr�occupe, le domaine linux.bogus,
 ins�rez 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
 donn�es 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 _d_o_i_t
 _a_b_s_o_l_u_m_e_n_t �tre une vraie machine poss�dant un champ A. Il n'est pas
 l�gal d'avoir un champ CNAME pour la machine mentionn�e dans le champ
 SOA. Il n'est pas n�cessaire que son nom soit ``ns'', ce peut �tre
 tout autre nom valide. La deuxi�me chose � noter c'est que
 hostmaster.linux.bogus doit se lire comme [email protected]. Ce
 doit �tre un alias de mail, ou une v�ritable bo�te aux lettres
 �lectronique, et la personne qui maintient le DNS doit la lire
 r�guli�rement. Tous les mails concernant l'administration du domaine
 seront envoy�s � 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 syst�mes de gestion du courrier
 �lectronique � quelle machine envoyer le mail adress� �
 [email protected], 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 num�ro 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
 num�ro de priorit� imm�diatement sup�rieur, c'est-�-dire
 mail.friend.bogus qui a une priorit� de 20 dans notre cas.


 Relancez named en tapant ndc restart. Examinons le r�sultat 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 enti�rement fausse. Il devrait y avoir



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





 J'ai fait cette erreur d�lib�r�ment, 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 ajout�e 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 pr�f�re la deuxi�me forme parce qu'il y a moins de
 caract�res � 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 d�faut est l'origine.


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


 Cela �tant dit, voici le nouveau fichier de zone, avec quelques
 informations suppl�mentaires :









 ______________________________________________________________________
 ;
 ; 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
 premi�re partie est la description mat�rielle ou le type de processeur
 de la machine tandis que la deuxi�me partie d�crit le logiciel utilis�
 ou le syst�me 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 m�me machine. Par cons�quent, www est un
 alias de ns.


 L'utilisation des champs CNAME est assez controvers�e. Mais il est
 sage de suivre la r�gle selon laquelle un champ MX, CNAME ou SOA ne
 doit _j_a_m_a_i_s se r�f�rer � un champ CNAME, toujours se r�f�rer � un
 champ A, il est donc pr�f�rable 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'h�te
 l�gal pour une adresse de courrier �lectronique.
 [email protected] est une adresse de mail ill�gale avec la
 configuration ci-dessus. Vous pouvez �tre s�rs qu'il y a un certain
 nombre d'administrateurs syst�me dans le Vaste Monde qui sont tr�s �
 cheval sur cette r�gle, m�me si avec un CNAME �a marche pour vous. Une
 fa�on de contourner le probl�me 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 _p_a_s 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 r�gle.


 Chargez la nouvelle base de donn�es en lan�ant 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 affich�s.








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

 44..33..  LLaa zzoonnee iinnvveerrss��ee

 �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 invers�e pour que l'on puisse retrouver le DNS � partir de
 l'adresse. Ce nom est utilis� par diff�rents types de serveurs (FTP,
 IRC, WWW et autres) pour d�cider s'ils vont discuter avec vous ou non,
 et s'ils le font, quelle priorit� ils vont vous donner. Pour un acc�s
 complet aux services sur Internet, la zone invers�e 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.
 ______________________________________________________________________




 Red�marrez 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 d�tails 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 p�che aux messages d'erreur dans votre syslog. J'ai expliqu�
 comment faire au tout d�but du chapitre.


 44..44..  PPrr��ccaauuttiioonnss dd''uussaaggee

 Je devrais maintenant faire quelques remarques. Les adresses IP
 utilis�es dans les exemples pr�c�dents sont prises dans le bloc des
 ``r�seaux priv�s'', c'est � dire des adresses qui ne doivent pas �tre
 utilis�es publiquement sur Internet. Donc, il est sage de les avoir
 utilis�es dans un exemple d'un HowTo. La deuxi�me 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
 list�s 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 exp�riences priv�es cette fonctionnalit� doit �tre mise hors
 service, on ne va quand m�me pas polluer Internet avec nos
 exp�riences, non ?


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


 44..55..  PPoouurrqquuooii eesstt--ccee qquuee lleess llooookkuupp iinnvveerrss��ss nnee mmaarrcchheenntt ppaass ??

 Il y a quelques trucs qui sont normalement �vit�s avec les lookups qui
 arrivent souvent quand on met en place des zones invers�s. 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 arri�re
 et r�parez-le avant de continuer.


 Je parlerais des deux probl�mes de lookups invers�s qui sont vu de
 l'ext�rieur de votre r�seau :
 44..55..11..  LLaa zzoonnee iinnvveerrssee nn''eesstt ppaass dd��ll��gguu��ee..

 Quand vous demandez � un fournisseur d'acc�s quelques adresses IP
 ainsi qu'un nom de domaine, le nom de domaine vous est normalement
 d�l�gu�. La d�l�gation consiste en un champ NS qui vous aide a passer
 d'un serveur � l'autre comme je l'ai expliqu� dans le brin de th�orie
 qui pr�c�de. Vous l'avez lu, n'est-ce pas ? Si votre zone invers�e ne
 marche pas, retournez y et lisez-le. Maintenant.


 La zone invers�e a elle aussi besoin d'�tre d�l�gu�e. Si vous avez le
 r�seau 192.168.196 avec le domaine linux.bogus de votre fournisseur,
 il devra mettre des champs NS pour votre zone invers�e aussi bien que
 pour votre zone directe. Si vous remontez la cha�ne � partir de in-
 addr.arpa vous trouverez un trou quelque part. Tr�s certainement au
 niveau de votre fournisseur. Apr�s avoir trouv� le trou dans la
 cha�ne, contactez votre fournisseur et demandez-lui de corriger
 l'erreur.


 44..55..22..  VVoouuss aavveezz uunn ssoouuss--rr��sseeaauu ssaannss ccllaassssee

 C'est un sujet plut�t pointu, mais les sous r�seaux sans classe sont
 tr�s r�pandus de nos jours et vous en aurez tr�s certainement un si
 vous n'�tes pas une entreprise assez grande.


 Un sous-r�seau sans classe est ce qui sauve Internet de nos jours. Il
 y a quelques ann�es, il y avait vraiment beaucoup de discussions sur
 la rar�faction des adresses IP. Les personnes intelligentes de l'IETF
 (Internet Engineering Task Force, ceux qui maintiennent Internet en
 �tat de marche) se sont pench�es sur cet �pineux probl�me et ont
 trouv� une solution. A un certain prix. Le prix est que vous aurez
 moins qu'un sous r�seau 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 pla�t,
 allez le lire.


 La premi�re partie du probl�me est que votre FAI doit comprendre la
 technique d�crite par _M_r _D_N_S. 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-m�me en premier
 lieu ;-). Ils mettrons ensuite une jolie zone invers�e sur leurs
 serveurs que vous pourrez examiner pour savoir si elle est correcte
 avec nslookup.


 La deuxi�me et derni�re partie du probl�me est que vous devez en
 comprendre la technique. Si vous n'�tes pas certain, revenez en
 arri�re et relisez ce document.  Ensuite, vous pourrez mettre en place
 une zone invers�e sans classe comme le d�crit _M_r _D_N_S.


 Il y a une autre difficult� qui pointe son nez ici. Les vieux
 r�solveurs _n_e _s_e_r_o_n_t _p_a_s capable de suivre les champs CNAME dans la
 cha�ne de r�solution et n'arriveront pas a r�soudre l'IP de votre
 machine. Cela peut entra�ner l'assignation d'une mauvaise classe, la
 non-r�solution ou quelque chose dans ce go�t-l�. Si vous butez sur ce
 genre de probl�me, la seule solution (que je connaisse) est de
 demander � votre FAI d'ins�rer vos champs PTR dans ses fichiers de
 zone sans classe plut�t que des champs CNAME.

 Certains FAI vous proposeront d'autre m�thodes pour g�rer cela, comme
 des formulaires web o� vous pourrez entrer vos zones invers�es, ou
 d'autre syst�mes automatis�s.


 55..  UUnn eexxeemmppllee ttiirr�� dd''uunn ddoommaaiinnee rr��eell

 OO�� nnoouuss aalllloonnss eennffiinn vvooiirr ddee _v_r_a_i_s ffiicchhiieerrss ddee zzoonnee


 Certains utilisateurs ont sugg�r� que je mette un vrai exemple d'un
 domaine qui marche dans la r�alit� car mon explication sur la
 diff�rence entre un vrai domaine et l'exemple bidon ci-dessus n'�tait
 pas tr�s 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� modifi�e
 pour �tre utilis�s avec les restrictions de bind 8 et quelques
 extensions de mon cru. Par cons�quent, ils peuvent donc diff�rer de ce
 que vous pouvez trouver en questionnant les serveurs de nom de LAND-5
 aujourd'hui.


 Voici les sections pour les deux zones invers�es n�cessaires : le
 r�seau 127.0.0, ainsi que le sous-r�seau 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 r�pertoire pz comme dans ce HowTo, il
 les met dans le r�pertoire zone.


 55..11..  //eettcc//nnaammeedd..ccoonnff ((oouu //vvaarr//nnaammeedd//nnaammeedd..ccoonnff))



 ______________________________________________________________________
 // 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, PPAARR PPIITTII��
 mettez aussi le ``notify no;'' dans les zones des deux land-5.com pour
 �viter les accidents.


 55..22..  //vvaarr//nnaammeedd//rroooott..hhiinnttss

 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 r�cent, 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
 ______________________________________________________________________




 55..33..  //vvaarr//nnaammeedd//zzoonnee//112277..00..00

 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 n�cessaire 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.
 ______________________________________________________________________




 55..44..  //vvaarr//nnaammeedd//zzoonnee//llaanndd--55..ccoomm

 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 : _t_o_u_j_o_u_r_s
 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'apr�s le champ SOA, le fichier de zone a son
 origine en land-5.com, la personne � contacter est [email protected].
 hostmaster est une autre adresse souvent utilis�e pour la personne �
 contacter. Le num�ro de s�rie est au format obligatoire aaaammjj, avec
 le num�ro de s�rie dans la journ�e ajout� � la fin; il s'agit
 certainement de la sixi�me version du fichier de zone pour la journ�e
 du 20 septembre 1996. N'oubliez-pas que le num�ro de s�rie doit
 _o_b_l_i_g_a_t_o_i_r_e_m_e_n_t augmenter avec le temps, ici il n'y a qu'un chiffre
 pour le num�ro de s�rie dans la journ�e, si bien qu'apr�s 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� effac�es}
 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__n_o_m_b_r_e. Depuis les derni�res versions de bind
 4, named fait plus attention aux caract�res plac�s 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 plut�t un pr�fixe 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.


 55..55..  //vvaarr//nnaammeedd//zzoonnee//220066..66..117777

 Les commentaires se trouvent juste apr�s 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� effac�es}
 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 probl�mes. Elle est utilis�e pour trouver le nom d'h�te 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 norv�gien, vous ne voulez
 accepter que les connexions venant de Norv�ge ou des autres pays
 scandinaves. Ainsi, lorsqu'un client se connecte chez vous, la
 biblioth�que C peut vous dire quelle est l'adresse IP du client,
 puisque cette derni�re se trouve dans tous les paquets qui traversent
 le r�seau. 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 biblioth�que 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 r�solution de
 prep.ai.mit.edu, ce sc�nario est un peu id�alis�.


 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 _p_a_s de
 r�solution 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 r�solution 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 m�me certains
 http (Web) n'acceptent _p_a_s les connexions venant de machines dont ils
 ne peuvent retrouver le nom. C'est pourquoi la r�solution de noms
 inverse pour les machines est _o_b_l_i_g_a_t_o_i_r_e.



 66..  MMaaiinntteennaannccee

 GGaarrddeerr vvoottrree DDNNSS eenn ��ttaatt ddee mmaarrcchhee


 En plus des t�ches normales, il y a une t�che de maintenance sp�ciale
 � effectuer sur les serveurs de nom. Il s'agit de garder le fichier
 root.hints � jour. La fa�on 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 m�me question � un
 des serveurs de cette liste avec la commande dig @rootserver. Vous
 remarquerez que ce que vous obtenez ressemble �norm�ment � un fichier
 root.hints, avec quelques chiffres en plus. Ces chiffres
 suppl�mentaires 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 apr�s 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 d�couvertes par David A. Ranch
 # Test avec un ping sugg�r� 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 connect�s ? Pingons un serveur de notre FAI
  case `ping -qnc some.machine.net` in
    *'100% packet loss'*)
         echo "PAS de connexion r�seau. 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 suivantes :"
  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� red�marr�, de cette mani�re, la mise a jour est compl�te."
  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 remarqu�s que le fichier root.hints est
 aussi disponible via ftp depuis l'Internic. S'il vous pla�t,
 n'utilisez pas le ftp pour mettre � jour le root.hints, la m�thode ci
 dessus est bien meilleur du point de vue de la nettiquette et de
 l'Internic.


 77..  PPaasssseerr ddee llaa vveerrssiioonn 44 �� llaa vveerrssiioonn 88

 Cette section �tait au d�part sur l'utilisation de bind-8 �crite par
 David E. Smith ([email protected]). Je l'ai �dit�e pour refl�ter 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 r�pertoire
 bind8/src/bin/named (au cas o� vous avez r�cup�r� 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 cr�e 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 nouveaut�s que bind-8 permet. Voici une version
 plus compl�te d'un named.conf qui fait la m�me chose, mais d'une fa�on
 plus efficace :


 ______________________________________________________________________
 // Voici le fichier de configuration de named (pour BIND 8.1 et ult�rieur).
 // 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� d�comment�e, car j'ai d�j� 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 r�pertoire 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 instantan�ment.
 Les formats des fichiers de zone et du root.hints sont les m�mes, tout
 comme les commandes qui les mettent � jour.


 88..  QQuueessttiioonnss eett RR��ppoonnsseess

 Dans cette section, je passe en revue quelques-unes des questions les
 plus fr�quemment pos�es � propos du DNS et de ce HOWTO. Et je donne
 m�me les r�ponses ;-) Merci de bien lire cette section avant de
 m'�crire.


 1. Mon named me r�clame un fichier named.boot


    Vous vous �tes tromp�s 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 derri�re 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
 sugg�re ``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 ?


    Cr�ez plusieurs champs AA pour www.busy.com et utilisez bind 4.9.3
    ou une version plus r�cente, qui supporte les r�ponses � scrutation
    circulaire. Cela ne marchera _p_a_s avec des versions de bind
    ant�rieures.


 4. Je veux mettre en place un serveur DNS sur un Intranet (ferm�).
    Comment faire ?


    Effacez rageusement le fichier root.hints et cr�ez seulement les
    fichiers de zone. Cela veut aussi dire que vous n'aurez pas � cr�er
    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 ma�tres, ajoutez les sur la
 ligne masters en les s�parant par un ``;'' (point-virgule)


 6. Je veux faire tourner bind lorsque je suis d�connect� du r�seau


    Il y a trois trucs a savoir :


 �  J'ai re�u le mail suivant de Ian Clark <[email protected]>, 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 d�connecte, 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 d�connect�, named rajoute ceci au fichier messages apr�s la
      premi�re requ�te concernant un nom de domaine qu'il ne conna�t pas~:

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

      Ce qui n'est pas tr�s g�nant.

      �a marche tr�s bien dans mon cas.  Je peux utiliser le serveur de noms pour
      les machines locales lorsque je suis d�connect� du Net en �vitant les d�lais
      introduits par les timeout li�s � la recherche des noms de domaine ext�rieurs.
      Et lorsque je suis connect� au Net, les requ�tes concernant les noms de
      domaines ext�rieurs marchent normalement.





 �  J'ai aussi re�u des informations sur la fa�on dont bind interagit
    avec NFS et le portmapper sur une machine qui est le plus souvent
    d�connect�e de la part de Karl-Max Wanger :

      J'ai pris l'habitude d'utiliser named sur toutes mes machines qui sont
      seulement connect�es � Internet de fa�ons occasionnelles gr�ce � 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 d�marr� avant nfsd et mountd.

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

      Apr�s quelques temps de r�flexions et d'exp�riences, j'ai d�couvert que named
      emp�chait nfsd et mountd de s'enregistrer avec portmapper au d�marrage (Je
      d�marre ces d�mons au boot d'habitude).  Le fait de lancer named apr�s nfsd
      et mountd �liminait ce probl�me compl�tement

      Comme il n'y a pas de d�savantages � modifier ainsi la s�quence de boot de
      cette fa�on, j'encourage tout le monde � en faire de m�me pour �viter des
      probl�mes 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 contr�ler la taille de ce cache ?


    Le cache est enti�rement stock� en m�moire, il n'est _p_a_s �crit sur
    le disque. Chaque fois que vous tuez named, le cache est perdu. Il
    n'y a _a_u_c_u_n moyen de contr�ler le cache. named g�re le cache selon
    quelques r�gles simples, et c'est tout. Vous ne pouvez pas
    contr�ler le cache ou sa taille en aucune mani�re. 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
    red�marrage ?  Puis-je le forcer � le faire ?


    Non, named ne sauve _p_a_s la contenu du cache lorsqu'il meurt. Cela
    signifie que le cache est reconstruit � partir de z�ro chaque fois
    que vous tuez puis relancez named. Il n'y a _a_u_c_u_n 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.


 99..  CCoommmmeenntt ddeevveenniirr uunn aaddmmiinniissttrraatteeuurr DDNNSS ddee hhaauutt vvooll

 DDooccuummeennttaattiioonn eett oouuttiillss


 La Vraie Documentation existe. En ligne et imprim�e. Il faut
 absolument la lire si vous voulez devenir un administrateur DNS du
 plus haut niveau.  Pour ce qui est de la documentation imprim�e, le
 livre standard est _D_N_S _a_n_d _B_I_N_D 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 deuxi�me �dition est bas�e sur bind 4, la troisi�me sur
 bind 8. Il y a aussi un chapitre sur le DNS dans _T_C_P_/_I_P _N_e_t_w_o_r_k
 _A_d_m_i_n_i_s_t_r_a_t_i_o_n, 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 _Z_e_n _a_n_d _t_h_e _A_r_t _o_f _M_o_t_o_r_c_y_c_l_e
 _M_a_i_n_t_e_n_a_n_c_e by Robert M. Pirsig :-) Disponible sous la r�f�rence ISBN
 0688052304 entre autres.


 En ligne, vous trouverez des trucs sur DNS Resources Directory,
 www.isc.org/bind.html; Une FAQ, un manuel de r�f�rence (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 mentionn�es 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
 compl�ment, il y a un certain nombre de RFC sur le DNS, les plus
 importantes sont certainement celles-ci :



    RRFFCC 22005522
       A. Gulbrandsen, P. Vixie, _A _D_N_S _R_R _f_o_r _s_p_e_c_i_f_y_i_n_g _t_h_e _l_o_c_a_t_i_o_n
       _o_f _s_e_r_v_i_c_e_s _(_D_N_S _S_R_V_), October 1996


    RRFFCC 11991188
       Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear,
       _A_d_d_r_e_s_s _A_l_l_o_c_a_t_i_o_n _f_o_r _P_r_i_v_a_t_e _I_n_t_e_r_n_e_t_s, 02/29/1996.


    RRFFCC 11991122
       D. Barr, _C_o_m_m_o_n _D_N_S _O_p_e_r_a_t_i_o_n_a_l _a_n_d _C_o_n_f_i_g_u_r_a_t_i_o_n _E_r_r_o_r_s,
       02/28/1996.


    RRFFCC 11991122 EErrrroorrss
       B. Barr _E_r_r_o_r_s _i_n _R_F_C _1_9_1_2, this is available at www.cis.ohio-
       state.edu/~barr/rfc1912-errors.html


    RRFFCC 11771133
       A. Romao, _T_o_o_l_s _f_o_r _D_N_S _d_e_b_u_g_g_i_n_g, 11/03/1994.


    RRFFCC 11771122
       C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, _D_N_S _E_n_c_o_d_i_n_g _o_f
       _G_e_o_g_r_a_p_h_i_c_a_l _L_o_c_a_t_i_o_n, 11/01/1994.


    RRFFCC 11118833
       R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, _N_e_w _D_N_S _R_R
       _D_e_f_i_n_i_t_i_o_n_s, 10/08/1990.

    RRFFCC 11003355
       P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _i_m_p_l_e_m_e_n_t_a_t_i_o_n _a_n_d _s_p_e_c_i_f_i_c_a_t_i_o_n,
       11/01/1987.


    RRFFCC 11003344
       P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _c_o_n_c_e_p_t_s _a_n_d _f_a_c_i_l_i_t_i_e_s,
       11/01/1987.


    RRFFCC 11003333
       M. Lottor, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _o_p_e_r_a_t_i_o_n_s _g_u_i_d_e, 11/01/1987.


    RRFFCC 11003322
       M. Stahl, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _g_u_i_d_e, 11/01/1987.


    RRFFCC 997744
       C. Partridge, _M_a_i_l _r_o_u_t_i_n_g _a_n_d _t_h_e _d_o_m_a_i_n _s_y_s_t_e_m, 01/01/1986.