Le protocole IP utilise cette adresse numérique pour l'échange de données, mais il est bien plus commode pour l'humain de se souvenir de noms comme www.gnu.net que de séries de chiffres comme 199.232.41.10...
Lors des premiers pas d'internet, les correspondances noms/IP étaient indiquées dans un fichier nommé "hosts", mais la multiplication exponentielle du nombre de machines connectées au réseau des réseaux a forcé la mise en place d'un protocole dédié et dynamique pour assurer les résolutions de noms. Ce protocole a été implémenté pour la première fois en 1983 par Paul Mockapetris dans les RFC 882 et 883.
Notez que les exemples contenus dans ce billet sont valables sous Ubuntu Server 8.04 Hardy Heron. Il peut être nécessaire d'adapter certaines parties, notamment concernant les chemins de fichiers/dossiers.
Configuration
Bind se configure via deux types de fichiers, ceux de configurations du comportement du serveur, et ceux de configurations des zones connues par ce serveur.
Configuration du serveur
Le comportement du serveur se configure via le fichier "named.conf", auquel on ajoute "named.conf.options" et "named.conf.local" sous Ubuntu, simplement par souci de clarté. Ils contiennent les paramètres généraux du serveur, ainsi que les options en tous genres et les fichiers des zones à intégrer.
Voilà un exemple de fichier standard "/etc/bind/named.conf" :
// Le fichier de configuration principal.
//
// Les enregistrement des zones devraient être fait dans
// /etc/bind/named.conf.local
controls {
inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; };
};
// Le "include" indique d'aller lire un fichiers supplémentaire
include "/etc/bind/rndc.key";
// Emplacement d'une liste des serveurs "root"
zone "." {
type hint;
file "/etc/bind/db.root";
};
// Rend le serveur autoritaire concernant localhost et
// et la zone de broadcast comme le veux la RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
zone "domaine.tld" {
type master;
file "/etc/bind/zone/domaine.tld";
notify yes;
};
zone "2.50.10.in-addr.arpa" {
type master;
file "/etc/bind/zone/db.10.50.2";
notify yes;
};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an
// unprivileged port by default.
// query-source address * port 53;
// On indique ici les "forwarders", c'est a dire les IP des
// serveurs que notre serveur va contacter quand il ne sera
// pas capable de resoudre une adresse. Typiquement,
// ceux de votre FAI.
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; }; # Ecoute sur les adresses IPv6
};
La partie "options" reconnait les valeurs suivantes (non exhaustif) :
- version : Si none; permet de ne pas afficher la version du serveur. Recommandé.
- hostname : Si none; permet de cacher le nom d'hôte du serveur. Recommandé.
- server-id : Identique à hostname.
- coresize : Permet de définir la taille maximum du fichier core en cas de plantage. 0M; permet ne pas créer ce fichier.
- listen-on : Indique l'interface et/ou le-s port-s d'écoute du serveur.
- allow-query : Pour définir les hôtes autorisés à faire des requêtes sur le serveur.
- allow-recursion : Pour définir les hôtes autorisés à des faire des demandes récursives.
- listen-on : Pour définir l'interface réseau à utiliser (toutes par défaut).
- forwarders : Pour définir les IPs des serveurs où les requêtes doivent être relayées.
- blackhole : Pour définir les hôtes non autorisés.
- directory : Pour définir le répertoire de travail (/var/named par défaut).
- zone statistics : Permet d'activer les stats utiles pour un meilleur suivi du serveur.
- statistics-file : Pour définir l'emplacement du fichier de statistiques (par défaut /var/named/stats).
- forward : Options pour la retransmission des requêtes. Les options suivantes sont acceptées :
- first : Les DNS de la directive forwarders sont essayés en premier.
- only : Pas de résolution locale si les DNS de la directive forwarders n'ont pas réussi la résolution.
- notify : Permet de définir si le service envoie une notification aux esclaves lors d'une mise à jour :
- yes : Active les notifications.
- no : Pas de notifications.
- explicit : Notification uniquement aux serveurs spécifiés par also-notify dans la déclaration de zone.
Les parties "zone", qui définissent les zones connues par le serveur, acceptent les paramètres suivant (non exhaustif) :
- allow-query : Les clients autorisés à faire des requêtes sur cette zone.
- allow-transfer : Les serveurs esclaves autorisés à demander un transfert des informations de cette zone.
- allow-update : Hôtes autorisés à mettre à jour les informations de cette zone.
- file : Fichier de configuration de la zone.
- masters : IPs faisant autorité sur la zone.
- notify : Permet de définir si le service envoie une notification aux esclaves lors d'une mise à jour :
- yes : Actives les notifications.
- no : Pas de notifications.
- explicit : Notifications uniquement aux serveurs spécifiés par also-notify dans la déclaration de zone.
- type : Pour définir le type de zone :
- forward : Relaie toutes les demandes vers d'autres DNS.
- hint : redirige les demandes vers les serveurs racines.
- master : Serveurs de noms faisant autorité pour cette zone.
- slave : Serveurs de noms esclaves pour cette zone.
Configuration des zones
Les fichiers des zones sont là pour lister les différentes ressources d'un domaine, comme les serveurs de mails (MX), les serveurs de noms (NS), ou les enregistrements machine/IP (A) et redirections sousdomaine/autresousdomaine (CNAME).
$TTL 86400
@ IN SOA ns1.domaine.tld. root.domaine.tld. (
2009010502 ;; numero de serie
28800 ;; refresh
7200 ;; retry
604800 ;; expire
86400 ;; minimum TTL
)
TXT "DNS de Votre Domaine"
HINFO "Machine" "OS"
@ IN NS ns1.domaine.tld.
@ IN NS ns2.domaine.tld.
@ IN MX 10 mx1.domaine.tld.
@ IN MX 20 mx2.domaine.tld.
ns1 A 10.50.2.2
ns1 AAAA 2004:5d0:8fff:fffb::522f
ns2 A 10.28.27.230
srv A 10.50.2.2
www A 10.50.2.53
ftp A 10.50.2.55
mail A 10.50.2.60
php CNAME www
wmin A 10.50.2.125
wmin TXT "Interface Administration WebMin"
Prenons le temps de détailler un peu la syntaxe de ce fichier.
- Pour commencer, le "$TTL 86400" permet de spécifier combien de temps les informations contenues dans le fichiers seront gardées en cache. Ici, avec la valeur 86400, le cache sera vidé et le fichier relu toutes les 24 heures
- Le "@" permet de définir l'espace de nom de la zone.
- Le "IN" défini le protocole utilisé. De nos jours, "IN" n'a plus d'alternative.
- Le "SOA" indique que notre serveur est maître de la zone.
- Vient ensuite le FQDN du serveur de nom. Attention à ne surtout pas oublier le point final !
- Puis enfin on trouve l'adresse mail de l'administrateur. Notez le point final, et le remplacement du @ habituel par un simple point. Bind interprète le premier "." rencontré dans ce champ comme un "@". Si l'adresse de l'administrateur est de la forme "admin.dns@domaine.org", il est possible d'échapper le premier point ainsi "admin\.dns.domaine.org".
Arrive ensuite, systématiquement dans (), une petite série de paramètres:
- Le premier est le numéro de série du fichier de configuration. Il est important de le modifier si votre serveur maître dispose de serveur esclave qui se synchronise sur lui. Les esclaves se fient à ce numéro pour savoir si il y a du changement. On le note habituellement "ANNEEMOISJOURMODIFICATIONDUJOUR", mais cette convention n'est pas obligatoire. Mais il est tout de même important que les modifications du serial soient toujours croissantes.
- Les champs suivants sont, dans l'ordre :
- Refresh qui indique qu'a l'expiration du délai, ici 8 heures, un serveur esclave rentrera en contact avec le maître.
- Retry qui indique le délai d'attente, ici 2 heures, de l'esclave avant de reprendre contact après un échec.
- Expire qui indique le délai que l'esclave va attendre, ici 1 semaine, avant de considérer le maître comme retiré du service.
- Minimum, enfin, qui indique la durée de vie du cache.
Il est possible d'abréger les secondes avec M pour minute, H pour heure, D pour jour,et W pour semaine :
- 60 = 1M
- 1800 = 30M
- 3600 = 1H
- 10800 = 3H
- 21600 = 6H
- 43200 = 12H
- 86400 = 1D
- 259200 = 3D
- 604800 = 1W
$TTL 86400 @ IN SOA ns1.domaine.tld. root.domaine.tld. ( 2009010502 ;; numero de serie __8H__ ;; refresh __2H__ ;; retry __1W__ ;; expire __1D__ ;; minimum TTL )
Viennent ensuite les enregistrements de machines, ici deux serveurs de noms, ns1 et ns2. Puis deux serveurs de mail, mx1 et mx2. Les 10 et 20 devant les FQDN des serveurs de noms indiquent la priorité de chacun des serveurs. Plus la valeur est faible, plus la priorité est élevée.
Et pour finir, on trouve toutes les autres machines du réseau, voici un petite liste des principaux types d'enregistrements :
- NS : Déclare un serveur DNS pour la zone.
@ IN NS ns1.domaine.tld.
- MX : Déclare un serveur mail pour la zone.
@ IN MX 10 mx1.domaine.tld.
- A : Réalise le lien entre le nom d'une machine et son adresse IP.
www A 10.50.2.53
- AAAA : Comme A, mais pour IPv6
ns1 AAAA 2004:5d0:8fff:fffb::522f
- PTR : Réalise le lien entre l'IP d'une machine et son nom. Utilisé pour le fichier "reverse".
2 IN PTR www
- CNAME : C'est une espèce d'alias, permettant de définir un nom par rapport à un autre nom.
php IN CNAME www
- TXT : Permet d'insérer du texte. Utilisé par exemple pour les SPF Record.
wmin TXT "Interface Administration WebMin" domaine.tld. IN TXT "v=spf1 ip4:10.50.2.60 ~all"
- SRV : Très présent dans Active Directory, utilisé pour par exemple enregistrer un serveur Jabber.
_xmpp-server._tcp 18000 IN SRV 0 0 5269 domaine.tld. _xmpp-client._tcp 18000 IN SRV 0 0 5222 domaine.tld.
- RP : Champ facultatif, qui donne des informations sur le responsable de la zone.
@ RP Gaston.domaine.tld Admin-pour-Bind-domaine.tld.
Exemple d'un petit réseau local
Voici maintenant un exemple de configuration complet pour un petit serveur maison en charge de résoudre les noms sur un sous-domaine privé.
Le domaine d'exemple est ici "votre.domaine.tld", et la configuration utilise les fichiers "named.conf.local" et "named.conf.options" en plus de l'habituel "named.conf". Notez aussi l'utilisation d'une partie "logging" qui définie l'emplacement de certains types de logs. Pour la rendre utilisable sous Ubuntu server, il est nécessaire de modifier le fichier "/etc/apparmor.d/usr.sbin.named" pour y autoriser l'écriture dans le répertoire "/var/log/bind/".
La configuration du réseau utilisé pour cette exemple comprend :
- Un serveur à tout faire (Mail, HTTP, DNS et FTP), nommé srv, d'adresse IP 192.168.1.2
- Une box assurant la connexion à internet, nommé box, d'adresse 192.168.1.254
- Une machine nommé pc1, d'adresse IP 192.168.1.5
/etc/bin/named.conf
// Le fichier de configuration principal.
//
controls {
inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; };
};
zone "." {
type hint;
file "/etc/bind/db.root";
};
logging {
channel security_channel {
file "/var/log/bind/security.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
channel default_channel {
file "/var/log/bind/default.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
channel xfer-in_channel {
file "/var/log/bind/xfer-in.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
channel xfer-out_channel {
file "/var/log/bind/xfer-out.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
channel update_channel {
file "/var/log/bind/update.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
channel notify_channel {
file "/var/log/bind/notify.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category security { security_channel; };
category default { default_channel; };
category xfer-in { xfer-in_channel; };
category xfer-out { xfer-out_channel; };
category notify { notify_channel; };
category update { update_channel; };
category lame-servers { null; };
category delegation-only { "null" ; };
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
include "/etc/bind/named.conf.options";
include "/etc/bind/rndc.key";
include "/etc/bind/named.conf.local";
/etc/bind/named.conf.local
// Consider adding the 1918 zones here, if they
// are not used in your organization
//include "/etc/bind/zones.rfc1918";
zone "votre.domaine.home" {
type master;
file "/etc/bind/zone/votre.domaine.home";
allow-query {any; };
notify yes;
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.1";
allow-query {any; };
notify yes;
};
/etc/bind/named.conf.options
options {
directory "/var/cache/bind";
// query-source address * port 53;
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Nous passons maintenant aux deux fichiers de zones pour "votre.domaine.home", le fichier "/etc/bind/zone/votre.domaine.home" et sa zone inverse "db.1.168.192"
/etc/bind/zone/votre.domaine.home
$TTL 86400 @ IN SOA ns.votre.domaine.home. root.votre.domaine.home. ( 2008121801 ;; numero de serie 28800 ;; refresh 7200 ;; retry 604800 ;; expire 86400 ) ;; minimum TTL TXT "DNS de Votre Domaine" HINFO "Machine" "OS" IN NS ns.votre.domaine.home. IN MX 10 mail.votre.domaine.home. A 192.168.1.2 srv A 192.168.1.2 ns A 192.168.1.2 mail A 192.168.1.2 ftp A 192.168.1.2 www A 192.168.1.2 box A 192.168.1.254 pc1 A 192.168.1.5
/etc/bind/zone/db.1.168.192
$TTL 3h
@ IN SOA ns.votre.domaine.home. root.votre.domaine.home. (
2008121801 ;; serial
8H ;; refresh
2H ;; retry
1W ;; expire
1D ) ;; minimum TTL
TXT "DNS de Votre Domaine"
HINFO "Machine" "OS"
IN NS ns.votre.domaine.home.
IN MX 10 mail.votre.domaine.home.
$ORIGIN 1.168.192.in-addr.arpa.
254 IN PTR box.votre.domaine.home.
2 IN PTR srv.votre.domaine.home.
2 IN PTR ns.votre.domaine.home.
2 IN PTR mail.votre.domaine.home.
2 IN PTR www.votre.domaine.home.
2 IN PTR ftp.votre.domaine.home.
5 IN PTR pc1.votre.domaine.home.
Le fichier "reverse" est sensiblement identique au premier fichier de zone. Seule la ligne "$ORIGIN", qui indique la zone traitée change, tout comme la forme des enregistrements. Ces enregistrements sont de la forme :
dernier-bloc-de-l'adresse-IP IN PTR FQDN
Par exemple pour une machine d'IP 10.25.68.33 nommée taurus dans le domaine constellation.net:
33 IP PTR taurus.constellation.net.
Utilisation
Test du serveur
Plusieurs outils sont disponibles pour réaliser des tests de la configuration du serveur et de ses zones :
- named-checkconf : Pour chercher les erreurs de syntaxe dans les fichiers "named.conf*". "man named-checkconf" pour l'utilisation, très simple.
- named-checkzone : Similaire à checkconf, mais pour les fichiers de zones.
- nslookup et dig : Deux utilitaires en lignes de commande pour réaliser des requêtes entièrement paramétrables sur un serveur.
- Il existe des sites offrants de tester votre serveur, et sa bonne intégration, si celui ci est accessible depuis internet :
Les fichiers de logs
Comme on le voit dans l'exemple complet pour un petit sous-domaine maison, il est possible de spécifier où les différents enregistrement de logs seront placés, mais aussi de spécifier une rotation de fichiers, la sévérité à logger, etc. Tout ceci grâce aux canaux (channel in english).
Une fois les channel définit, on associe les catégories (category in english) aux channel pour orienter les différents types de logs vers les fichiers de son choix.
logging {
channel security_channel {
file "/var/log/bind/security.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
channel default_channel {
file "/var/log/bind/default.log" versions 4 size 10m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category security { security_channel; };
category default { default_channel; };
category lame-servers { null; };
category delegation-only { "null" ; };
};
Cette organisation en channel et category permet une gestion très fine des logs.
Voici la liste des channel disponibles:
- default
- general
- database
- security
- config
- resolver
- xfer-in
- xfer-out
- notify
- client
- unmatched
- queries
- network
- update
- dispatch
- dnssec
- lame-servers
Le channel "default" représente toutes les category qui n'ont pas de channel spécifié dans la configuration.
Et la liste des critères de gravité, nommés "severity" (par ordre d'importance) :
- critical
- error
- warning
- notice
- info
Les deux critères ci-dessous sont réservés aux debuggages. "debug" accepte un "level" allant de 1 (par défaut) à 3, et dynamic s'adapte au choix fait lors du lancement de bind si l'option -d est employée.
- debug level
- dynanic
Et enfin la liste des category :
- client
- config
- database
- default
- delegation-only
- dispatch
- dnssec
- general
- lame-servers
- network
- notify
- queries
- resolver
- security
- unmatched
- update
- update-security
- xfer-in
- xfer-out
Depuis quelques temps, il est possible de générer une page de statistiques de votre serveur grâce à xml2 sans passer par l'installation d'outil externe comme Cacti ou BindGraph par exemple. Pour cela il faut ajouter les lignes suivantes dans votre fichier named.conf :
statistics-channels {
inet 1.2.3.4 port 8053 allow { 3.2.1.0; };
};
1.2.3.4 doit être l'IP de votre serveur, 8053 le port TCP où la page sera accessible, et 3.2.1.0 l'IP d'une machine autorisée à venir consulter cette page.
Pour allez plus loin, voir ce lien (en anglais) pratiquement exhaustif sur le sujet des logs de Bind : zytrax.com/books/dns/ch7/logging.html
Configuration des clients
La méthode la plus simple pour indiquer aux machines du réseau d'utiliser notre serveur DNS consiste à modifier le fichier "/etc/resolv.conf" pour y indiquer les informations suivantes:
domain votre.domaine.home search votre.domaine.home nameserver 192.168.1.2
Mais quand le réseau devient trop étendu, il est beaucoup plus pratique de mettre en place un serveur DHCP qui ira enregistrer les machines dans la configuration de Bind.
DHCP dynamique
Il est très intéressant de faire en sorte que les enregistrements de machine auprès du serveur DHCPd local soient synchronisés directement avec le serveur de nom BIND du domaine.
Pour ce faire, il faut indiquer à DHCPd d'aller contacter le serveur BIND avec les lignes suivantes dans le fichier dhcpd.conf (Dans cet exemple, les serveurs DNS et DHCP sont sur la même machine):
dhcpd.conf
option domain-name "votre.domaine.net";
ddns-updates on;
ddns-update-style interim;
ignore client-updates;
zone votre.domaine.net. {
primary 127.0.0.1;
key updatekey;
}
zone 1.168.192.in-addr.arpa. {
primary 127.0.0.1;
key updatekey;
}
key updatekey {
algorithm hmac-md5;
secret "Gn85G07ITm5+LjnFretggHH==";
};
Puis indiquez que le clé rndckey a l'autorisation de mettre à jour les enregistrement DNS dans le fichier named.conf:
named.conf
zone "votre.domaine.net" IN {
type master;
file "votre.domaine.net";
allow-update { key updatekey; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "db.1.168.192";
allow-update { key updatekey; };
};
key updatekey {
algorithm hmac-md5;
secret "Gn85G07ITm5+LjnFretggHH==";
};
Grâce à cette modification, les machines qui vont obtenir une adresse via notre serveur DHCP seront automatiquement ajoutées dans les fichiers de zones de notre Bind, plus précisément dans deux nouveaux fichiers, un pour la zone standard et un pour la zone reverse, portant le même nom que les fichiers déjà présents, mais avec l'extension .jnl, donc ici :
- votre.domaine.net.jnl
- db.1.168.192.jnl
Attention, il est primordial de ne pas modifier ces fichiers jnl "à la main", sous peine de rendre la synchronisation entre DHCPd et bind inexacte...
La création de la clé est réalisée par la commande suivante :
dnssec-keygen -a HMAC-MD5 -b 128 -n USER mykey
Copiez ensuite cette clé dans le fichier "/etc/bin/rndc.key", ou directement dans les fichiers "named.conf" et "dhcpd.conf" comme dans l'exemple.
Chrooter Bind
Pour assurer plus de sécurité à notre installation de bind, il peut être intéressant d'emprisonner (chroot) bind dans un répertoire particulier. Si votre bind est accessible depuis internet, il est recommander de le faire, bind étant un service complexe et sensible.
Voilà la procédure à suivre.
Dans un premier temps, arrêtez bind:
/etc/init.d/bind9 stop
Ensuite il faut aller modifier le fichier "/etc/default/bind9" pour indiquer au daemon de se lancer dans la prison "/var/lib/named", en utilisant l'utilisateur "bind":
OPTIONS="-u bind -t /var/lib/named"
Notez que l'utilisateur "bind" est déjà en place par défaut sous Ubuntu.
Créez ensuite les répertoires:
mkdir -p /var/lib/named/etc mkdir /var/lib/named/dev mkdir -p /var/lib/named/var/cache/bind mkdir -p /var/lib/named/var/run/bind/run
Déplacez les fichiers de /etc/bind vers /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc
Faire un lien symbolique de "/etc/bind" vers "/var/lib/named/etc/bind", qui permet d'éviter les problèmes lors de mises à jour futures:
ln -s /var/lib/named/etc/bind /etc/bind
Créez les périphériques "/dev/null" et "/dev/random" dans la prison, avec les permissions adéquates:
mknod /var/lib/named/dev/null c 1 3 mknod /var/lib/named/dev/random c 1 8 chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random chown -R bind:bind /var/lib/named/var/* chown -R bind:bind /var/lib/named/etc/bind
Modifiez le comportement de Syslog pour continuer à avoir les messages importants dans les logs normaux en modifiant la ligne SYSLOGD="" du fichier "/etc/init.d/sysklogd" comme indiqué:
SYSLOGD="-u syslog -a /var/lib/named/dev/log"
Redémarrer syslog:
/etc/init.d/sysklogd restart
Allez modifier le fichier "/etc/apparmor.d/usr.sbin.named" pour y authoriser l'accès à "/var/lib/named":
# /etc/bind should be read-only for bind # /var/lib/bind is for dynamically updated zone (and journal) files. # /var/cache/bind is for slave/stub data, since we're not the origin of it. # See /usr/share/doc/bind9/README.Debian.gz /var/lib/named/** rw,
Redémarrer Bind :
/etc/init.d/bind9 start
Et vérifier que tout vas bien !






Commentaires
Je viens de voir ton tuto il est assez complet j'ai déjà réalisé cette mise en place et je suis tombé sur ta page pour pouvoir faire des recherches sur la signification de chaque ligne de code. En tout cas c'est du bon boulot.
Sauf que la seul différence c'est que moi j'avais mis un $ORIGIN . au début des fichiers de zone.
pitala