Ce billet à pour but de détailler l’installation d’un serveur DNS secondaire(slave) pour Bind 9 (sur debian), il est donc nécessaire que vous ayez déjà un serveur primaire(master) qui fonctionne correctement.
On utilisera pour l’exemple le domaine « benjaminperrin.fr », l’IP du serveur primaire sera: 1.2.3.4 et le serveur secondaire aura l’IP 5.6.7.8.
Il faut bien entendu paramétrer votre firewall pour autoriser la communication entre ces deux serveurs en TCP et UDP sur le port 53.
Introduction
Dans /etc/bind/ vous avez les fichiers suivants:
- named.conf.options : contient les options de base de bind
- named.conf.local : contient la déclaration des zones
- db.benjaminperrin.fr: contient les entrées de la zone benjaminperrin.fr
Important: pour que la réplication de zone fonctionne il faut que vos serveur soit à la même heure (voir NTP) et que vous incrémentiez le numéro de série de la zone à chaque modification (dans le fichier db.benjaminperrin.fr) champs « serial », sinon votre slave ne verra pas de différence et la synchro ne se fera pas.
Point sur la sécurité de votre bind
Dans vos fichiers (primaire et secondaire) /etc/bind/named.conf.options ajoutez/modifiez les options comme ci-dessous:
options {
allow-query { any; };
allow-recursion { localnets; };
allow-query-cache { localnets; };
allow-transfer{ none; };
version none;
};
Petite explication des paramètres ci-dessus:
ACLs de base:
- any: tous les réseaux/IPs
- localhost: les réseaux/IPs local (127.0.0.1)
- localnets: les réseaux/IPs local (réseaux/IPs des interfaces du serveur)
- none: aucun réseaux/IPs
Détails des paramètres:
- allow-query { any; }; //Tout le monde peut interroger le serveur (necessaire pour serveur publique)
- allow-recursion { localnets;}; //Autorise les requetes recursive (vers d’autre domaine)
- allow-query-cache {localnets;};//Autorise les requetes dans le cache
- allow-transfer{ none; };//Interdit le transfert de zone, peut être modifier dans une zone (nécessaire pour l’ajout d’un serveur secondaire)
- version none; //Defini la version a de bind a afficher, on met « none » pour ne pas donner cette information
Configuration du serveur primaire
Fichier /etc/bind/named.conf.local ajouter les paramètres suivants à la zone benjaminperrin.fr :
zone « benjaminperrin.fr » {
type master;
file « /etc/bind/db.benjaminperrin.fr »;
allow-transfer{5.6.7.8;};
notify yes;
};
Détails des paramètres:
- type master; : déclare que ce serveur est le maitre de la zone (serveur primaire)
- file « /etc/bind/db.benjaminperrin.fr »; spécifie ou se trouve les fichiers de la zone
- allow-transfer{5.6.7.8;}; autorise le serveur primaire à transférer la zone vers le serveur secondaire
- notify yes; notifie le serveur secondaire lorsqu’il y a des modifications
Fichier /etc/bind/db.benjaminperrin.fr : il faut indiquer un second enregistrement NS à la zone:
@ IN NS ns2.benjaminperrin.fr.
ns2 IN A 5.6.7.8; //ip du serveur dns secondaire
Configuration du serveur secondaire
Fichier /etc/bind/named.conf.options ajouter le paramètre suivants aux options :
options {
allow-notify { 1.2.3.4.5; }; // Autorise les notifications du serveur primaire
};
Fichier /etc/bind/named.conf.local ajouter les paramètres suivants à la zone benjaminperrin.fr :
zone « benjaminperrin.fr » {
type slave;
file « /etc/bind/db.hodei.net »;
masters {1.2.3.4;};
};
Détails des paramètres:
- type slave; : déclare que ce serveur est un esclave (serveur secondaire)
- file « /etc/bind/db.benjaminperrin.fr »; spécifie ou se trouve les fichiers de la zone
- masters {1.2.3.4;}; Specifie l’adresse du serveur primaire
Droits sur les fichiers
Bind doit pouvoir accéder en lecture et écriture sur les dossiers suivants:
- /etc/bind/
- /var/cache/bind/
utilisez chown et chmod pour régler tout cela.
Et regarder dans vos logs vous devriez voir passé la mise à jour de votre zone:
tail -f /var/log/bind/bind.log
Si votre fichier avec vos entrées DNS contient des commentaires sur le serveur primaire, ils ne seront pas répliqués sur le serveur secondaire.
Bonjour,
J’ai configuré comme vous avez indiqué. Le fichier db.cloud.lan a été transféré depuis le primaire mais je pense qu’il n’a pas été transféré comme il faut. Quand j’essaie avec la commande: named-checkzone ns2.cloud.lan, je reçois cette erreur:
dns-master-load: /etc/bind/db.cloud.lan:1: syntax error
/etc/bind/db.cloud.lan: find does not end with newline
zone ns2.cloud.lan/IN: loading from master file /etc/bind/db.cloud.lan failed: syntax error
zone ns2.cloud.lan/IN: not loaded due to error
Pourriez-vous m’aider à résoudre ce probème, svp?
Merci infiniment
Bonjour,
Un peu tardivement, mais il semblerait que vous ayez oublié un « ; » a la fin d’une ligne de configuration.
Bien à vous.