|
このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
Si vous ne parlez ni l'anglais ni le norv馮ien, vous pouvez toujours
Ce que ce document est et ce qu'il n'est pas
Le DNS est le Domain Name System. C'est l'ensemble des r鑒les utilis馥s par les machines et les logiciels pour 騁ablir, entre autres choses, parties les plus obscures de l'administration de r駸eau. Le but de ce HOWTO est d'essayer d'en 馗laircir quelques aspects. Ce document explique comment configurer un DNS simple. Nous allons commencer avec un serveur de noms n'y trouvez pas ce que vous cherchez, vous allez alors devoir lire la Vraie Documentation. Je reviendrai sur ce en quoi consiste la Vraie Documentation dans le chapitre final.
Avant de commencer, vous devez configurer votre machine pour 黎re capable de vous connecter par telnet sur d'autres machines mais aussi pouvoir recevoir des connexions sur votre machine. Vous devez aussi 黎re en mesure de vous connecter au r駸eau par tous les services possibles, et en particulier pouvoir 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馘er au r駸eau.
Je supposerai par la suite que vous ne vous trouvez pas derri鑽e un firewall qui bloque les requ黎es de r駸olution de nom. Si tel est le cas, vous aurez besoin d'une configuration sp馗iale. Reportez-vous alors au chapitre FAQ.
d'un site FTP Linux ou allez chercher la derni鑽e et meilleure version des sources du programme depuis ftp.isc.org/isc/bind/src/cur/bind-8/. Ce HowTo parle de bind version qu'il vous offrira le meilleur de lui-m麥e. Apprenez a l'utiliser, l'administrer, le d饕ogger et vous ferez partie de ces administrateurs qui emp鹹hent que le r駸eau ne s'馗roule sous le poids des syst鑪es mal g駻駸.Un premier aper輹 de la configuration d'un DNS, tr鑚 utile pour ceux qui utilisent une connexion en dialup.
Un serveur de noms qui ne sert que de cache trouve la r駱onse aux requ黎es de r駸olution de nom et se souvient de cette r駱onse chaque fois qu'on lui posera la m麥e question par la suite. Cela r馘uira les temps de r駱onse, surtout si vous avez une connexion plut? 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 軋 ne marche pas :
// query-source port 53;
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
TRネS IMPORTANT : Dans certaines versions de ce document, les . 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. . 6D IN NS M.ROOT-SERVERS.NET. . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
Souvenez-vous bien de ce que j'ai dit pour les caract鑽es blancs en
127.0.0 dans le sous r駱ertoire 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.
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
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 軋) puis sunsite.unc.edu.your-domain.edu et enfin
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
order hosts,bind
Si il n'y a pas de ligne ``order'', il faut en mettre une. Elle
indique aux routines de r駸olution de nom de regarder d'abord dans
connexion en dialup, commencez par vous connecter. Tapez ``ndc start''
et appuyez sur la touche entr馥, sans donner d'options. Si 軋 ne marche pas,
essayez plut? ``/usr/sbin/ndc start''. Si 軋 ne marche toujours pas,
jetez un coup d'oeil au chapitre
(faites tail -f /var/adm/messages), vous devriez voir quelque chose
comme 軋 :
(les lignes se terminant par \ se continuent sur la ligne suivante)
Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \
00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
(IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.
Si il y a un quelconque message d'erreur, named donnera le nom du fichier
dans lequel se trouve l'erreur (soit named.conf, soit root.hints, j'esp鑽e
:-). Tuez le processus named et re-v駻ifiez ce fichier.
Il est maintenant temps de v駻ifier votre configuration. Lancez
nslookup pour regarder le r駸ultat de votre petit travail.
$ nslookup
Default Server: localhost
Address: 127.0.0.1
>
Si vous obtenez ce message, c'est que 軋 marche. Nous l'esp駻ons tous. Si
vous obtenez quoi que ce soit d'autre, revenez en arri鑽e et v駻ifiez
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黎e. Essayez de contacter une
recherche tous les domaines list駸 dans /etc/resolv.conf.
Si vous r馥ssayez, 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
seconde fois qu'on lui demande un certain h?e, c'est un signe certain que
named cache bien les informations et que tout marche. Pour sortir de
nslookup, utilisez la commande ``exit''.
3.2 Le rendre encore meilleur
Dans les grands r駸eaux, bien administr駸, des universit駸 ou FAI
(Fournisseur d'Acc鑚 a Internet), vous remarquerez peut-黎re que les
administrateurs r駸eau ont mis en place une hi駻archie de serveurs DNS ce qui
permet de soulager le r駸eau interne ainsi que le r駸eau vers l'ext駻ieur. Il
n'est pas facile de savoir si vous 黎es dans un r駸eau de ce type. Tout cela
n'est pas tr鑚 important, mais en utilisant le serveur DNS de votre FAI comme
``forwarder'' vous pouvez rendre les r駱onses plus rapides et all馮er la
charge de votre r駸eau. Avec un modem, la diff駻ence peut 黎re sensible. Pour
am駘iorer 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馥 ``options'' ins駻ez les lignes :
forward first;
forwarders {
10.0.0.1;
10.1.0.1;
};
Red駑arrez votre serveur de noms et testez avec nslookup. Cela
devrait marcher sans probl鑪es.
3.3 F駘icitations !
Maintenant, vous savez comment configurer un named qui sert de
cache. Servez-vous une bi鑽e, un verre de lait ou tout ce que vous voudrez
pour f黎er l'騅駭ement.
4. Un domaine simple
Comment mettre en place votre propre domaine
4.1 Mais avant tout, un brin de th駮rie
Avant d'entrer vraiment dans le vif du sujet, il va falloir que je
Level Domains); les plus connus sont ORG, COM, EDU,
NET et FR, mais il y en a beaucoup d'autres. Tout comme un
arbre, il a une racine avec des branches qui en partent. Si vous avez des
connaissances en informatique fondamentale, vous reconna?rez dans le DNS un
arbre de recherche, avec des noeuds, des arr黎es et des feuilles.
Lorsque vous recherchez une machine, la question est pos馥 r馗ursivement
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
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馗is : 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 馗ran.
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
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
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鑚 qu'on l'a
ai.mit.edu. Maintenant, on est sur le bon serveur, au bon
embranchement. La derni鑽e partie est de trouver prep.ai.mit.edu, ce
qui est tr鑚 simple. En informatique fondamentale, on appelle prep une
feuille de l'arbre.
Un domaine dont on parle beaucoup moins, mais qui n'en est pas moins
important, est in-addr.arpa. Ce domaine trouve sa place dans la
hi駻archie des noms de domaine comme un domaine ``normal''.
192.128.52.43, named proc鐡e 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
d駻anger personne dans le Vaste Monde.
Encore une chose avant de commencer. Tous les caract鑽es ne sont pas admis
dans les noms de machines. On ne doit utiliser que les caract鑽es de
l'alphabet anglais (a-z), les nombres (0-9) et le tiret ``-''. Utilisez ces
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
ce fichier, contrairement au fichier named.boot. Certaines personnes
aiment commencer chaque fichier d馭inissant une zone par une directive
$ORIGIN, mais en fait c'est superflu. L'origine (l'emplacement
dans la hi駻archie du service DNS) d'un fichier de zone est indiqu馥 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''
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饕ut de la ligne, il est implicite, puisque la ligne d'avant commence avec un ``@''. Alors, faites-vous une fleur en omettant ce caract鑽e. Donc, la ligne NS peut aussi s'馗rire 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
Le champ SOA est le pr饌mbule de tous les fichiers de zone, et il
doit y en avoir exactement un dans chaque fichier de zone. Ce champ SOA d馗rit
la zone, son origine (une machine appel馥 ns.linux.bogus), qui est
retry, expire et minimum) utilisez les valeurs
donn馥s dans ce HOWTO et tout se passera certainement tr鑚 bien.
Maintenant, relancez votre named (avec la commande ndc
restart) et utilisez nslookup pour regarder le r駸ultat :
$ 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
domaine dans le fichier named.conf.
Dans le fichier de zone linux.bogus, nous allons mettre quelques
donn馥s 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
doit absolument 黎re une vraie machine poss馘ant un champ A. Il n'est
pas l馮al d'avoir un champ CNAME pour la machine mentionn馥 dans le champ
SOA. Il n'est pas n馗essaire que son nom soit ``ns'', ce peut 黎re tout autre
Relancez named en tapant ndc restart. Examinons le r駸ultat
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鑽ement fausse. Il devrait y avoir
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
J'ai fait cette erreur d駘ib駻駑ent, 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馥
au nom de la machine. Ainsi, une des deux formes :
MX 10 mail.linux.bogus. ; Primary Mail Exchanger
ou
informations suppl駑entaires :
;
; 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 :
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?e l馮al
pour une adresse de courrier 駘ectronique. webmaster@www.linux.bogus
est une adresse de mail ill馮ale avec la configuration ci-dessus. Vous pouvez
www A 192.168.196.2
Un certain nombre de gourous-du-bind recommandent de ne pas utiliser
de CNAME. Mais les discussions sur le pour et le contre sortent du cadre de ce
HOWTO.
$ 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駸.
[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
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駑arrez 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騁ails 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
d'un vrai domaine vous attend au grand chapitre suivant.
4.5 Pourquoi est-ce que les lookup invers駸 ne marchent pas ?
Il y a quelques trucs qui sont normalement 騅it駸 avec les lookups qui
arrivent souvent quand on met en place des zones invers駸. 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鑽e et r駱arez-le avant de
continuer.
lisez-le. Maintenant.
La zone invers馥 a elle aussi besoin d'黎re d駘馮u馥. Si vous avez le
r駸eau 192.168.196 avec le domaine linux.bogus de votre
fournisseur, il devra mettre des champs NS pour votre zone invers馥
contactez votre fournisseur et demandez-lui de corriger l'erreur.
Vous avez un sous-r駸eau sans classe
C'est un sujet plut? pointu, mais les sous r駸eaux sans classe sont tr鑚
r駱andus de nos jours et vous en aurez tr鑚 certainement un si vous n'黎es pas
une entreprise assez grande.
Un sous-r駸eau sans classe est ce qui sauve Internet de nos jours. Il y a
quelques ann馥s, il y avait vraiment beaucoup de discussions sur la
rar馭action des adresses IP. Les personnes intelligentes de l'IETF (Internet
``C'' et que certaines choses ne marcheront certainement plus. Allez voir
Ask Mr DNS
(c'est en anglais) pour plus d'explications.
insister. Mais assurez-vous de comprendre vous-m麥e en premier lieu ;-). Ils
mettrons ensuite une jolie zone invers馥 sur leurs serveurs que vous pourrez
examiner pour savoir si elle est correcte avec nslookup.
La deuxi鑪e et derni鑽e partie du probl鑪e est que vous devez en comprendre
la technique. Si vous n'黎es pas certain, revenez en arri鑽e et relisez ce
document. Ensuite, vous pourrez mettre en place une zone invers馥 sans classe
comme le d馗rit Mr DNS.
utilis駸 avec les restrictions de bind 8 et quelques extensions de mon
cru. Par cons駲uent, ils peuvent donc diff駻er 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馥s n馗essaires : le r駸eau
127.0.0, ainsi que le sous-r駸eau 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駱ertoire pz comme dans ce HowTo, il les
met dans le r駱ertoire zone.
5.1 /etc/named.conf (ou /var/named/named.conf)
// Boot file for LAND-5 name server
options {
directory "/var/named";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "zone/127.0.0";
};
zone "land-5.com" {
type master;
file "zone/land-5.com";
};
zone "177.6.206.in-addr.arpa" {
type master;
file "zone/206.6.177";
};
Si vous mettez 軋 dans votre named.conf pour jouer avec, PAR
PITIノ mettez aussi le ``notify no;'' dans les zones des deux
par le programme dig.
; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;; ., type = NS, class = IN
;; ANSWER SECTION:
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
;; Total query time: 215 msec
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE sent: 17 rcvd: 436
5.3 /var/named/zone/127.0.0
Nous y avons mis juste l'essentiel, le champ SOA obligatoire, et un champ
qui 騁ablit la correspondance entre 127.0.0.1 et localhost. Ils sont
199609203 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.
1 PTR localhost.
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 軋 que tout le monde devrait faire :
toujours avoir un serveur secondaire sur un site distant pour faire des
@ 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-177250 A 206.6.177.250
MX 10 land-5.com. ; Primary Mail Host
ws-177251 A 206.6.177.251
MX 10 land-5.com. ; Primary Mail Host
ws-177252 A 206.6.177.252
MX 10 land-5.com. ; Primary Mail Host
ws-177253 A 206.6.177.253
MX 10 land-5.com. ; Primary Mail Host
ws-177254 A 206.6.177.254
MX 10 land-5.com. ; Primary Mail Host
Si vous examinez le serveur de noms de land-5, vous allez voir que les noms
sont de la forme ws_nombre. Depuis les derni鑽es versions de
bind 4, named fait plus attention aux caract鑽es plac駸 dans
de nom personnel, mais plut? un pr馭ixe suivit des deux derniers morceaux de
leur adresse IP. Utiliser une telle convention simplifie grandement la
maintenance, mais c'est un peu impersonnel, et 軋 peut agacer vos clients.
Nous voyons aussi que funn.land-5.com est un alias pour
Les commentaires se trouvent juste apr鑚 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.
254 PTR ws-177254.land-5.com.
La zone inverse est la partie de la configuration qui semble poser le plus
de probl鑪es. Elle est utilis馥 pour trouver le nom d'h?e d'une machine,
connaissant son adresse IP. Exemple : vous 黎es un serveur IRC et vous
acceptez des connexions provenant de clients IRC. Cependant, comme vous 黎es
un serveur IRC norv馮ien, vous ne voulez accepter que les connexions venant de
Norv鑒e ou des autres pays scandinaves. Ainsi, lorsqu'un client se connecte
chez vous, la biblioth鑷ue C peut vous dire quelle est l'adresse IP du client,
puisque cette derni鑽e se trouve dans tous les paquets qui traversent le
r駸eau. Ensuite, vous pouvez appeler une fonction connue sous le nom de
connexion du client se fasse depuis ws_177200.land-5.com. L'adresse IP
que la biblioth鑷ue 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
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
*.dk. Le nom ws_177200.land-5.com ne correspond 騅idemment pas,
et le serveur va donc refuser la connexion. Si il n'existait pas de
r駸olution inverse de 206.2.177.200 au travers de la zone
Certaines personnes vous diront que la r駸olution de noms inverse n'est importante que pour les serveurs, ou pas importante du tout. Pas tant que 軋 : beaucoup de serveurs ftp, news, irc ou m麥e certains http (Web) n'acceptent pas les connexions venant de machines dont ils ne peuvent retrouver le nom. C'est pourquoi la r駸olution de noms inverse pour les machines est obligatoire.
Garder votre DNS en 騁at de marche
root.hints, avec quelques chiffres en plus. Ces chiffres
suppl駑entaires sont inoffensifs. Sauvez-le dans un fichier (dig
. @e.root-servers.net >root.hints.new) et remplacez l'ancien fichier
root.hints avec.
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.
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駸 ? Pingons un serveur de notre FAI
case `ping -qnc some.machine.net` in
:;;
*)
echo "La mise a jour de root.hints a ECHOUE."
echo "Voici la sortie de dig :"
echo
cat root.hints.new
exit 0
;;
esac
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
tapez :
./named-bootconf.pl < named.boot > named.conf
qui cr馥 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駸 que bind-8 permet. Voici une version plus
compl鑼e d'un named.conf qui fait la m麥e chose, mais d'une fa輟n plus
efficace :
type master;
file "127.0.0.zone";
};
zone "." IN {
type hint;
file "root.hints";
};
Dans le r駱ertoire bind8/src/bin/named/test de la distribution de
www.math.uio.no/~janl/DNS/
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鑽e
serveur qui ne fait que du cache.
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?res, ajoutez les sur la ligne masters en les s駱arant par un ``;'' (point-virgule)
named, le cache est perdu. Il
n'y a aucun moyen de contr?er le cache. named g鑽e le cache
selon quelques r鑒les simples, et c'est tout. Vous ne pouvez pas contr?er
La Vraie Documentation existe. En ligne et imprim馥. Il faut absolument la lire si vous voulez devenir un administrateur DNS du plus haut niveau. Pour ce qui est de la documentation imprim馥, le livre standard est DNS and BIND de C. Liu et P. Albitz chez O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Je l'ai lu, c'est excellent, la deuxi鑪e 馘ition est bas馥 sur bind 4, la troisi鑪e sur bind 8. Il y a aussi un chapitre sur le DNS dans TCP/IP Network Administration, de Craig Hunt chez O'Reilly..., ISBN
En ligne, vous trouverez des trucs sur DNS Resources Directory, www.isc.org/bind.html; Une FAQ, un comp.protocols.tcp-ip.domains parle de DNS. En compl駑ent, il y a un certain nombre de RFC sur le DNS, les plus importantes sont certainement celles-ci :
A. Gulbrandsen, P. Vixie, A DNS RR for specifying the location of services (DNS SRV), October 1996
Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, Address Allocation for Private Internets, 02/29/1996.
D. Barr, Common DNS Operational and Configuration Errors, 02/28/1996.
B. Barr Errors in RFC 1912, this is available at www.cis.ohio-state.edu/~barr/rfc1912-errors.html
A. Romao, Tools for DNS debugging, 11/03/1994.
C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, DNS Encoding of Geographical Location, 11/01/1994.
R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, New DNS RR Definitions, 10/08/1990.
P. Mockapetris, Domain names - implementation and specification, 11/01/1987.
P. Mockapetris, Domain names - concepts and facilities, 11/01/1987.
M. Lottor, Domain administrators operations guide, 11/01/1987.
M. Stahl, Domain administrators guide, 11/01/1987.
C. Partridge, Mail routing and the domain system, 01/01/1986.