Installation et configuration d'un serveur Bind9 secondaire (Slave)

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Lorsque vous voulez vous monter vous même votre serveur DNS, vous devez obligatoirement posséder un serveur secondaire. Si vous n'avez pas d'autres machines, utilisez Gandi, sinon suivez cette doc ;-).

N'oubliez pas de rensigner sur le serveur primaire le serveur secondaire.

2 Installation

Sur le serveur secondaire :

Command apt-get
apt-get install bind9

Pour OpenBSD, rien à faire, c'est installé de base.

3 Configuration

Avant de commencer, déclarez dans vos enregistrements de vos noms de domaine les seveurs secondaires (resignez les champs NS + ACL named.conf), sinon les notifications ne se feront pas.

3.1 Configuration des droits

Si vous voulez un environnement chrooté, procédez comme ceci, sinon passez cette étape :

Command
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/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Editez ensuite le fichier /etc/default/bind9 afin de lui indiquer de chrooter au boot du service :

Configuration File /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named"
...

3.2 host.conf

Voici comment configurer le fichier /etc/host.conf :

Configuration File /etc/host.conf
order hosts,bind
multi on

Nous venons donc dire ici qu'il faut d'abord regarder dans le fichier host et ensuite dans Bind quand des requêtes son effectuées depuis le serveur.

3.3 named.conf

Ce fichier doit contenir les mêmes informations au niveau RNDC et au niveau zone externe (à répliquer) :

include "/etc/bind/named.conf.options";

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

// TSIG Security | RNDC Key

key "rndc-key" {
      algorithm hmac-md5;
      secret "a4fGtm0fB4zO+4KfqH/zNZ3nPq+ThM5yUCEE7AqzEVI=";
};

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};

zone "127.in-addr.arpa" {
        type master;
        notify no;
        file "/etc/bind/db.127";
};

// Starting secondary transfert zones
view "externe" {
        match-clients {
                any;
        };
        // Recursion not permited for World Wide Web
        recursion no;

        zone "deimos.fr" {
                type slave;
                file "/etc/bind/db.deimos.fr";
                notify yes;
                masters {
                        88.162.130.192;
                };
        };

        zone "mavro.fr" {
                type slave;
                file "/etc/bind/db.mavro.fr";
                notify yes;
                masters {
                      88.162.130.192;
                };
        };

        zone "0.168.192.in-addr.arpa" {
                type slave;
                file "/etc/bind/db.0.168.192.inv.local";
                notify yes;
                masters {
                        88.162.130.192;
                };
        };
};

3.4 named.conf.options

Même fichier que pour le serveur primaire :

options {
        directory "/var/cache/bind";
        pid-file "/var/run/bind/run/named.pid";
 
        // 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;
 
        // If your ISP provided one or more IP addresses for stable 
        // nameservers, you probably want to use them as forwarders.  
        // Uncomment the following block, and insert the addresses replacing 
        // the all-0's placeholder.
 
        // forwarders {
        //      0.0.0.0;
        // };
 
        // For dial up connections
        dialup yes;
 
        allow-query {
                any;
        };  
 
        // Security version
        version "Microsoft 2000 DNS Server";
 
        auth-nxdomain no;    # conform to RFC1035
};

3.5 rndc.conf

On reprends exactement le même fichier encore une fois que le serveur primaire :

 key "rndc-key" {
         algorithm hmac-md5;
         secret "a4fGtm0fB4zO+4KfqH/zNZ3nPq+ThM5yUCEE7AqzEVI=";
 };
 
 options {
         default-key "rndc-key";
         default-server 127.0.0.1;
         default-port 953;
 };

Et n'oubliez pas de copier la clef rndc.key du serveur primaire dans le dossier /etc/bind et de lui affecter les bons droits.

4 Vérification

Il ne reste plus qu'à redémarrer le serveur bind et les fichiers de configuration des noms de domaines apparaitrons automatiquement dans /etc/bind :

/etc/init.d/bind9 restart

5 FAQ

5.1 Aucuns fichiers n'apparait et dans les logs ça dit qu'il n'y a pas les droits

La solution est simple :

chown -Rf root:bind /etc/bind

5.2 Pourquoi j'ai ce message dans mes logs : refused notify from non-master

Voici le genre de messages sur lequel on peut tomber quand on a pas de chance :

Oct  2 16:43:50 tasmania named[7978]: zone deimos.local/IN/internalview: refused notify from non-master: 192.168.0.27#37097

Ceci est due à une mise à jour de Bind (9.3). Il faut donc simplement autoriser dans son named.conf le serveur à se notifier lui même en rajoutant allow-notify :

Configuration File /etc/bind/named.conf
...
        zone "deimos.local" {
               type slave;
               file "/etc/bind/db.deimos.local";
               notify yes;
               masters { 192.168.0.69; };
               allow-notify { 192.168.0.27; };
       };
...

5.3 refresh: failure trying master 53 (source 0.0.0.0#0): operation canceled

Ceci est certainement du à un problème de firewalling, vérifiez bien que voter port 53 est ouvert en TCP et UDP des 2 côtés.

5.4 could not open entropy source /dev/random: file not found

Si vous rencontrez ce problème, c'est que vous travaillez certainement dans un vserver. Pour palier au problème, ajoutez une bcapabilities :

Command echo
echo CAP_MKNOD >> /etc/vservers/ed/bcapabilities

Ce qui vous évitera les problèmes comme ceux ci dans les logs :

24530 Oct  4 21:12:27 ed named[8642]: could not open entropy source /dev/random: file not found
24531 Oct  4 21:12:27 ed named[8642]: using pre-chroot entropy source /dev/random

6 Ressources

http://fr.wikibooks.org/wiki/Linux_VServer