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.