40.5. Fichiers de zone

Deux types de fichiers de zones sont nécessaires. Le premier sert à associer l'adresse IP au nom de l'ordinateur. L'autre fonctionne en sens inverse et fournit un nom d'hôte pour une adresse IP donnée.

[Tip]Point (.) dans les fichiers de zones

Le . a une signification importante dans le fichier de zones. Si vous indiquez les noms des ordinateurs sans . final, la zone ajoutée à la fin. Il est donc important de terminer les noms d'ordinateurs complets par un . final, pour que le domaine n'y soit pas encore ajouté. Un point oublié ou mal placé est probablement la cause la plus fréquente d'erreur dans la configuration des serveurs de noms.

Considérons, tout d'abord, le fichier de zone monde.zone, responsable du domaine monde.entier, montré dans l'Exemple 40.6, « Fichier /var/lib/named/monde.zone ».

Exemple 40.6. Fichier /var/lib/named/monde.zone

$TTL 2D
monde.entier.   IN SOA      gateway  root.monde.entier. (
            2003072441  ; serial
            1D          ; refresh
            2H          ; retry
            1W          ; expiry
            2D )        ; minimum

            IN NS       gateway
            IN MX       10 soleil

gateway     IN A        192.168.0.1
            IN A        192.168.1.1
soleil      IN A        192.168.0.2
lune        IN A        192.168.0.3
terre       IN A        192.168.1.2
mars        IN A        192.168.1.3
www         IN CNAME    lune
Ligne 1 :

$TTL définit la durée de vie par défaut (en anglais, Time To Live), c'est-à-dire la durée de vie valable de toutes les directives de ce fichier : 2 jours (2D = 2 days).

Ligne 2 :

C'est ici que commence l'enregistrement de contrôle SOA (SOA = Start of Authority) :

  • En première position, on trouve le nom du domaine à gérer monde.entier, ce dernier se terminant par un . car sinon la zone serait à nouveau ajoutée. Sinon, on peut aussi écrire ici un @ pour que la zone de la directive correspondante soit extraite du fichier /etc/named.conf.

  • Après IN SOA, on trouve le nom du serveur de noms qui sert de maître pour cette zone. Dans ce cas, le nom gateway est complété pour devenir gateway.monde.entier car il ne se termine pas par un ..

  • Vient ensuite l'adresse électronique de la personne responsable du serveur de noms. Comme le signe @ a déjà une signification particulière, il faut simplement écrire un . à la place. Ainsi, pour root@monde.entier, on écrit root.monde.entier.. N'oubliez pas le . à la fin, sans quoi la zone serait à nouveau ajoutée.

  • Vient enfin une parenthèse ( qui permet d'englober les lignes qui suivent jusqu'à la parenthèse ) dans l'enregistrement SOA.

Ligne 3 :

Le numéro de série est un nombre arbitraire qui doit être incrémenté à chaque modification de ce fichier. Il sert à informer les serveurs de noms secondaires (serveurs esclaves) des modifications entreprises. On a donc introduit pour ce faire un nombre à 10 chiffres composé de la date et d'un numéro d'ordre de la forme AAAAMMJJNN.

Ligne 4 :

La fréquence d'actualisation indique à quels intervalles le serveur de noms secondaire vérifie le numéro de série de la zone. Dans cet exemple, on a pris 1 jour (1D = 1 day).

Ligne 5 :

La fréquence des tentatives indique l'écart de temps qui s'écoule avant qu'un serveur de noms secondaire, en cas d'erreur, n'essaie de contacter à nouveau le serveur principal. Dans le cas présent, on a 2 heures (2H = 2 hours).

Ligne 6 :

La durée d'expiration indique la durée au bout de laquelle un serveur de noms secondaire jette les données mises en cache s'il n'a plus réussi à contacter le serveur principal. Dans le cas présent, il s'agit d'une semaine (1W = 1 week).

Ligne 7 :

La dernière ligne du SOA est la durée de vie de mise en cache des échecs. Elle indique combien de temps les résultats des requêtes DNS des autres serveurs qui n'ont pu être résolues peuvent être conservées en mémoire cache.

Ligne 9 :

IN NS indique le serveur de noms responsable de ce domaine. Ici aussi, le nom gateway est complété pour devenir gateway.monde.entier car il ne se termine pas par un .. On peut utiliser plusieurs lignes de ce type, une pour le serveur principal et une pour chaque serveur de noms secondaire. Si notify dans le fichier /etc/named.conf ne vaut pas no, tous les serveurs de noms indiqués ici sont informés des modifications des données de la zone.

Ligne :10 :

L'enregistrement MX indique le serveur de messagerie qui prend en charge, modifie et redirige les messages pour le domaine monde.entier. Dans cet exemple, il s'agit de l'ordinateur soleil.monde.entier. Le chiffre qui précède le nom de l'ordinateur est la valeur de préférence. Ainsi, s'il existe plusieurs déclarations MX, c'est le serveur de messagerie dont la valeur de préférence est la plus petite qui est pris, et si la remise de courrier à ce serveur échoue, on essaie celui ayant la valeur plus élevée suivante.

Lignes 12 à 17 :

Il s'agit là des véritables enregistrements d'adresses (en anglais, address records), dans lesquels on attribue une ou plusieurs adresses IP à un nom d'ordinateur. Les noms figurent ici sans . final, car ils sont indiqués sans domaine à leur suite et sont donc tous complétés par monde.entier. Deux adresses IP sont attribuées à l'ordinateur gateway car il est équipé de deux cartes réseau. Le A indique une adresse de machine traditionnelle ; on utilise A6 pour les adresses IPv6 (AAAA est un format dépassé pour les adresses IPv6).

Ligne 18 :

On peut utiliser l'alias www pour désigner lune (CNAME = canonical name, nom canonique).

Pour la résolution inverse (en anglais, reverse lookup) des adresses IP en noms de machines, on utilise le pseudo-domaine in-addr.arpa. Ce dernier est ajouté à l'adresse réseau écrite dans l'ordre inverse. 192.168.1 devient donc 1.168.192.in-addr.arpa. Reportez-vous à l'Exemple 40.7, « Résolution inverse ».

Exemple 40.7. Résolution inverse

$TTL 2D 
1.168.192.in-addr.arpa. IN SOA gateway.monde.entier. root.monde.entier. ( 
						2003072441      ; serial 
						1D              ; refresh 
						2H              ; retry 
						1W              ; expiry 
						2D )            ; minimum 

						IN NS           gateway.monde.entier. 

1                       IN PTR          gateway.monde.entier. 
2                       IN PTR          terre.monde.entier. 
3                       IN PTR          mars.monde.entier.
Ligne 1 :

$TTL définit la durée de vie par défaut valable ici pour toutes les directives.

Ligne 2 :

Ce fichier permet en principe la résolution inverse pour le réseau 192.168.1.0. Comme la zone s'appelle ici 1.168.192.in-addr.arpa, on ne souhaite bien entendu pas l'ajouter au nom d'hôte. C'est pourquoi on saisit ce dernier en entier—avec le domaine et le . final. Le reste correspond à ce qui a déjà été décrit dans l'exemple précédent pour la zone monde.entier.

Lignes 3 à 7 :

Voir l'exemple précédent pour monde.entier.

Ligne 9 :

Cette ligne indique ici aussi à nouveau le serveur de noms responsable de cette zone, mais cette fois-ci, le nom est indiqué en entier, avec le domaine et le . final.

Lignes 11 à 13 :

Il s'agit d'enregistrements pointeurs (pointer records) qui, pour une adresse IP pointent vers le nom d'ordinateur correspondant. On trouve au début de cette ligne uniquement le dernier chiffre de l'adresse IP, sans . final. Si l'on y ajoute la zone et que l'on fait abstraction de .in-addr.arpa, on obtient bien l'adresse IP complète en ordre inversé.

Les transferts de zones entre différentes versions de BIND ne doivent, normalement, pas poser de problème.