DNS Configuration · 6 min read · Oct 03, 2025

[Debian Sarge] Installation d'un système DNS Master/Slave Bind9

[Debian Sarge] Installation d’un système DNS Master/Slave Bind9

Version : 1.0 - 23 août 2006

Bienvenue

Dans ce guide, nous allons installer 2 serveurs DNS bind, l’un en tant que maître et l’autre en tant que serveur esclave. Pour des raisons de sécurité, nous allons chrooter bind9 dans sa propre prison.

Utiliser deux serveurs pour un domaine est une configuration couramment utilisée et pour héberger votre propre domaine, vous devez avoir au moins 2 serveurs de domaine. Si l’un tombe en panne, l’autre peut continuer à servir votre domaine.

Notre configuration utilisera Debian Sarge 3.1 (stable) comme base. Une installation simple, propre et à jour suffira, car nous installerons les paquets requis avec ce guide.

Dans ce guide, j’utiliserai le domaine fictif “linux.lan”. Les serveurs de noms utiliseront 192.168.254.1 et 192.168.254.2 comme leurs adresses IP.

Quelques derniers mots avant de commencer : J’ai lu le guide de Joe (également sur ce site) et quelques autres tutoriels, mais aucun d’eux n’a fonctionné sans quelques ajustements. C’est pourquoi j’ai créé mon propre guide. Et cela devrait fonctionner du premier coup :)


Installation du logiciel

Tout d’abord, vous aurez besoin d’une installation propre de Debian Sarge. Assurez-vous qu’elle est à jour !

apt-get update; apt-get upgrade

Nous avons également besoin de quelques outils de construction Debian, car nous devons télécharger des paquets sources :

apt-get install devscripts

Ensuite, nous allons installer le logiciel nécessaire pour Bind. Afin d’utiliser le chiffrement pour le transfert du fichier de zone entre le maître et l’esclave, nous avons besoin d’une version plus récente de Bind9 (version >=9.3) que celle trouvée dans le dépôt Sarge. Nous utiliserons la source de la branche -testing. Assurez-vous donc d’avoir une ligne comme celle-ci dans votre

/etc/apt/sources.list :

deb-src http://---your.debian.mirror---/debian testing main contrib non-free

Bind9 de testing dépend de lsb-base de testing. Prenons-le :

(Explication de la syntaxe : le -y dit à apt de répondre oui à toutes les questions, build-dep installe tous les paquets requis pour -testing_packageX- à partir du dépôt Sarge et avec -b, la source est construite immédiatement.)

cd ~/a/dir/for/lsb-base/
apt-get -y build-dep lsb-base
apt-get source lsb-base -b
dpkg-i lsb-base*.deb

Ensuite, c’est Bind9 :

cd ~/a/dir/for/bind9
apt-get -y build-dep bind9
apt-get source bind9 -b
dpkg -i *.deb

Maintenant, tout notre logiciel est installé et prêt à être configuré.

Configurer le maître

Tout d’abord, nous devons arrêter bind9 :

/etc/init.d/bind9 stop

Pour chrooter bind, nous devons définir une option dans

/etc/default/bind9 :

De :

OPTIONS="-u bind"

À :

OPTIONS="-u bind -t /var/lib/named"

Il s’exécutera maintenant en tant qu’utilisateur ‘bind’ chrooté dans ‘/var/lib/named’.

Ensuite, nous modifions la ligne des forwarders dans

/etc/bind/named.conf.options pour correspondre aux DNS de notre FAI :

forwarders { 194.109.6.66; };

Ces étapes sont nécessaires pour la prison chroot :

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
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/
chown -R bind:bind /var/lib/named/var/

chown -R bind:bind /var/lib/named/etc/bind

Bind a maintenant son propre répertoire avec de l’espace pour les fichiers .pid et les fichiers de configuration. Afin de garder les choses claires, nous avons créé un lien symbolique vers /etc/.

Maintenant, modifiez /etc/init.d/sysklogd pour permettre l’enregistrement de l’activité de bind :
De :

SYSLOGD=""

À :

SYSLOGD="-a /var/lib/named/dev/log"

La dernière étape consiste à ajouter l’IP de ce serveur DNS nouvellement installé (le localhost) à votre

/etc/resolv.conf pour l’utiliser : echo “search linux.lan” > /etc/resolv.conf
echo “nameserver 127.0.0.1” >> /etc/resolv.conf

Maintenant, redémarrez sysklogd et bind9 :

/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

Et testez !

ping www.google.com

Si vous obtenez une réponse, alors votre serveur DNS maître fonctionne et est prêt à être utilisé. Nous allons maintenant remplir et utiliser le domaine linux.lan avec notre nouveau serveur maître.


Configuration du domaine linux.lan

Le serveur DNS maître ne fait actuellement que transférer les requêtes au serveur de votre FAI. Donc, nous allons maintenant installer et configurer notre propre domaine et laisser notre nouveau serveur gérer toutes les requêtes concernant ce domaine.

Commençons par créer le répertoire où nous allons stocker le fichier de zone. Ce fichier contient toutes les informations sur le domaine.

mkdir /etc/bind/zones/

Ensuite, nous allons créer le fichier de zones,

/etc/bind/zones/master_linux.lan :

$TTL 3D  

@       IN      SOA     ns1.linux.lan. hostmaster.linux.lan. (
                        199802151       ; numéro de série, date d'aujourd'hui + numéro de série d'aujourd'hui
                        8H              ; rafraîchir, secondes
                        2H              ; réessayer, secondes
                        4W              ; expirer, secondes
                        1D )            ; minimum, secondes
;
                TXT     "Linux.LAN, servant VOTRE domaine :)"
                NS      ns1             ; Adresse Inet du serveur de noms
        NS    ns2
                MX      10 mail        ; Échangeur de mail principal
localhost    A    127.0.0.1
ns1        A    192.168.254.1
ns2        A    192.168.254.2
www        CNAME    ns1

Ici, nous avons créé un fichier de zone simple avec les deux serveurs de noms et un alias www pour ns1. Juste au cas où nous aurions un apache en cours d’exécution sur ns1 ;)

Maintenant, modifiez /etc/bind/named.conf.local et ajoutez :

zone "linux.lan" {
        type master;
        file "/etc/bind/zones/master_linux.lan";
};

C’est tout, nous pouvons maintenant redémarrer bind et vérifier si cela fonctionne :

/etc/init.d/bind9 restart
ping ns1.linux.lan

À ce stade, vous devriez avoir un serveur DNS fonctionnel et utilisable :)

S’il dit qu’il ne peut pas trouver le domaine, peut-être que dhclient a changé votre entrée de serveur de noms… Alors tuez-le.


Installation de l’esclave

Fondamentalement, l’esclave utilise le même système de base que nous avons construit dans la première partie (juste avant d’ajouter le fichier de zone). Nous allons ajouter quelques petits changements à la fois au maître et à l’esclave pour les faire fonctionner ensemble. Le fichier de zones sera transféré sur le net en utilisant le chiffrement.

À moins d’indication contraire, ces commandes sont uniquement pour l’esclave.

Créez le répertoire des zones :

mkdir /etc/bind/zones

Pour le maître ET l’esclave, modifiez

/etc/bind/named.conf.options et ajoutez :

dnssec-enable yes;

Maintenant, nous avons besoin d’une clé sécurisée. Cela générera un fichier .private et un fichier .key. La ligne ‘key=’ dans le fichier .private représente la clé de hachage.

dnssec-keygen -a hmac-md5 -b 128 -n host linux.lan

Ajoutez ceci dans votre

/etc/bind/named.conf sur le maître ET l’esclave :

key "TRANSFER" {
        algorithm hmac-md5;
        secret "---HASHKEY---";
};

Sur le maître, nous ajoutons l’IP de l’esclave à

/etc/bind/named.conf :

server 192.168.254.2 {
        keys {
        TRANSFER;
    };
};

Et sur l’esclave, nous ajoutons l’IP du maître à

/etc/bind/named.conf :

server 192.168.254.1 {
        keys {
        TRANSFER;
    };
};

Ajoutez à

/etc/bind/named.conf.local :

zone "linux.lan" {
        type slave;
        file "/etc/bind/zones/slave_linux.lan";
        masters { 192.168.254.1; };
        allow-notify { 192.168.254.1; };
};

La dernière chose nécessaire sur LES DEUX hôtes est d’ajouter ceci à

/etc/bind/named.conf :

include "/etc/bind/rndc.key";

Pour avoir un transfert de zone réussi, les deux systèmes doivent avoir une horloge synchronisée, donc :

apt-get -y install ntpdate

Redémarrez bind sur les deux machines et remarquez le nouveau fichier de zone sur l’esclave :)

Si vous vous demandez pourquoi les mises à jour du fichier de zone sur votre maître semblent échouer, vérifiez les paramètres d’expiration, etc. à l’intérieur du fichier de zone.

Bonne chance avec votre nouvelle configuration DNS maître/esclave !

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.