Page suivante Page précédente Table des matières

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

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.

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


// Boot file for LAND-5 name server

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

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

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

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

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

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

5.2 /var/named/root.hints

Souvenez-vous que le contenu de ce fichier peut changer, et celui donné ici est assez vieux. Vous feriez mieux d'utiliser un fichier plus 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

5.3 /var/named/zone/127.0.0

Nous y avons mis juste l'essentiel, le champ SOA obligatoire, et un champ qui établit la correspondance entre 127.0.0.1 et localhost. Ils sont tous les deux indispensables. Rien d'autre ne doit figurer dans ce fichier. Il ne sera probablement jamais 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.

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

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

Comme vous pouvez voir d'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.

5.5 /var/named/zone/206.6.177

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.


Page suivante Page précédente Table des matières