Où nous allons enfin voir de vrais fichiers de zone
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.
// Boot file for LAND-5 name server
options {
directory "/var/named";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "zone/127.0.0";
};
zone "land-5.com" {
type master;
file "zone/land-5.com";
};
zone "177.6.206.in-addr.arpa" {
type master;
file "zone/206.6.177";
};
Si vous mettez ça dans votre named.conf pour jouer avec, PAR
PITIÉ mettez aussi le ``notify no;'' dans les zones des deux
land-5.com pour éviter les accidents.
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
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.
Nous trouvons ici le classique et obligatoire champ SOA ainsi que les
champs NS. Nous pouvons voir qu'il y a un serveur de noms secondaire
ns2.psi.net. C'est comme ça que tout le monde devrait faire :
toujours avoir un serveur secondaire sur un site distant pour faire des
sauvegardes. Nous voyons également que le serveur primaire est land-5,
qui assure tous les services, et que l'administrateur a utilisé des CNAME pour
faire ça (il aurait pu utiliser des champs A).
Comme vous pouvez voir d'après le champ SOA, le fichier de zone a son
origine en land-5.com, la personne à contacter est
root@land-5.com. hostmaster est une autre adresse souvent
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
obligatoirement 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_nombre. 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.
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 pas 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 pas 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 obligatoire.