1.6. Configuration des transferts de zone entre serveurs DNS BIND
Les transferts de zone garantissent que tous les serveurs DNS disposant d'une copie de la zone utilisent des données actualisées.
Conditions préalables
- Sur le futur serveur primaire, la zone pour laquelle vous souhaitez mettre en place des transferts de zone est déjà configurée.
- Sur le futur serveur secondaire, BIND est déjà configuré, par exemple en tant que serveur de noms de cache.
-
Sur les deux serveurs, le service
named
ounamed-chroot
est en cours d'exécution.
Procédure
Sur le serveur primaire existant :
Créez une clé partagée et ajoutez-la au fichier
/etc/named.conf
:# tsig-keygen example-transfer-key | tee -a /etc/named.conf key "example-transfer-key" { algorithm hmac-sha256; secret "q7ANbnyliDMuvWgnKOxMLi313JGcTZB5ydMW5CyUGXQ="; };
Cette commande affiche la sortie de la commande
tsig-keygen
et l'ajoute automatiquement à/etc/named.conf
.Vous aurez besoin de la sortie de la commande ultérieurement sur le serveur secondaire également.
Modifiez la définition de la zone dans le fichier
/etc/named.conf
:Dans la déclaration
allow-transfer
, définissez que les serveurs doivent fournir la clé spécifiée dans la déclarationexample-transfer-key
pour transférer une zone :zone "example.com" { ... allow-transfer { key example-transfer-key; }; };
Il est également possible d'utiliser les surnoms de la liste de contrôle d'accès (ACL) de BIND dans l'instruction
allow-transfer
.Par défaut, après la mise à jour d'une zone, BIND notifie tous les serveurs de noms qui ont un enregistrement de serveur de noms (
NS
) dans cette zone. Si vous n'avez pas l'intention d'ajouter un enregistrementNS
pour le serveur secondaire dans la zone, vous pouvez configurer BIND pour qu'il notifie quand même ce serveur. Pour ce faire, ajoutez la déclarationalso-notify
avec les adresses IP de ce serveur secondaire dans la zone :zone "example.com" { ... also-notify { 192.0.2.2; 2001:db8:1::2; }; };
Vérifier la syntaxe du fichier
/etc/named.conf
:# named-checkconf
Si la commande n'affiche aucune sortie, la syntaxe est correcte.
Recharger BIND :
# systemctl reload named
Si vous exécutez BIND dans un environnement change-root, utilisez la commande
systemctl reload named-chroot
pour recharger le service.
Sur le futur serveur secondaire :
Modifiez le fichier
/etc/named.conf
comme suit :Ajoutez la même définition de clé que sur le serveur primaire :
key "example-transfer-key" { algorithm hmac-sha256; secret "q7ANbnyliDMuvWgnKOxMLi313JGcTZB5ydMW5CyUGXQ="; };
Ajouter la définition de la zone au fichier
/etc/named.conf
:zone "example.com" { type slave; file "slaves/example.com.zone"; allow-query { any; }; allow-transfer { none; }; masters { 192.0.2.1 key example-transfer-key; 2001:db8:1::1 key example-transfer-key; }; };
Ces paramètres sont les suivants :
-
Ce serveur est un serveur secondaire (
type slave
) pour la zoneexample.com
. -
Le fichier
/var/named/slaves/example.com.zone
est le fichier de zone. Si vous définissez un chemin d'accès relatif, comme dans cet exemple, ce chemin d'accès est relatif au répertoire que vous avez défini dansdirectory
dans l'instructionoptions
. Pour séparer les fichiers de zone pour lesquels ce serveur est secondaire des fichiers primaires, vous pouvez les stocker, par exemple, dans le répertoire/var/named/slaves/
. - Tout hôte peut interroger cette zone. Vous pouvez également spécifier des plages d'adresses IP ou des pseudonymes ACL pour limiter l'accès.
- Aucun hôte ne peut transférer la zone à partir de ce serveur.
-
Les adresses IP du serveur primaire de cette zone sont
192.0.2.1
et2001:db8:1::2
. Vous pouvez également spécifier des surnoms ACL. Ce serveur secondaire utilisera la clé nomméeexample-transfer-key
pour s'authentifier auprès du serveur primaire.
-
Ce serveur est un serveur secondaire (
Vérifier la syntaxe du fichier
/etc/named.conf
:# named-checkconf
Recharger BIND :
# systemctl reload named
Si vous exécutez BIND dans un environnement change-root, utilisez la commande
systemctl reload named-chroot
pour recharger le service.
-
Facultatif : Modifiez le fichier de zone sur le serveur primaire et ajoutez un enregistrement
NS
pour le nouveau serveur secondaire.
Vérification
Sur le serveur secondaire :
Afficher les écritures du journal
systemd
du servicenamed
:# journalctl -u named ... Jul 06 15:08:51 ns2.example.com named[2024]: zone example.com/IN: Transfer started. Jul 06 15:08:51 ns2.example.com named[2024]: transfer of 'example.com/IN' from 192.0.2.1#53: connected using 192.0.2.2#45803 Jul 06 15:08:51 ns2.example.com named[2024]: zone example.com/IN: transferred serial 2022070101 Jul 06 15:08:51 ns2.example.com named[2024]: transfer of 'example.com/IN' from 192.0.2.1#53: Transfer status: success Jul 06 15:08:51 ns2.example.com named[2024]: transfer of 'example.com/IN' from 192.0.2.1#53: Transfer completed: 1 messages, 29 records, 2002 bytes, 0.003 secs (667333 bytes/sec)
Si vous exécutez BIND dans un environnement change-root, utilisez la commande
journalctl -u named-chroot
pour afficher les entrées du journal.Vérifiez que BIND a créé le fichier de zone :
# ls -l /var/named/slaves/ total 4 -rw-r--r--. 1 named named 2736 Jul 6 15:08 example.com.zone
Notez que, par défaut, les serveurs secondaires stockent les fichiers de zone dans un format binaire brut.
Interroger un enregistrement de la zone transférée à partir du serveur secondaire :
# dig +short @192.0.2.2 AAAA www.example.com 2001:db8:1::30
Cet exemple suppose que le serveur secondaire que vous avez configuré dans cette procédure écoute sur l'adresse IP
192.0.2.2
.