Installation et Paramétrage d'un résolveur DNS avec BIND 9 sur Debian 7

Mise en place d'un serveur DNS type résolveur sur Linux Debian avec Bind.

Publié le 15/05/2014

1 - Paramétrage d'une IP statique

On part du principe que la machine qui hébergera aura la configuration réseau suivante :


IP fixe : 192.168.0.1
Masque de sous-réseau : 255.255.255.0
Passerelle : 192.168.0.254
Hostname : ns
Domaine : fresh.local

Editer le fichier /etc/network/interfaces comme suit :


auto lo
iface lo inet loopback
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.254

2 - Paramétrage du nom de l'hote et de sa conf


sudo nano /etc/hostname
ns.fresh.local

Démarrage du service


sudo /etc/init.d/hostname.sh start
sudo nano /etc/hosts


127.0.0.1 localhost.fresh.local localhost
192.168.0.1 ns.fresh.local ns


sudo nano /etc/hosts.conf


order hosts, bind
multi on

Modification du résolveur :


sudo nano /etc/resolv.conf

domain fresh.local search fresh.local nameserver 192.168.0.1

3 - Installation de Bind 9 et les outils dnsutils

sudo apt-get install bind9 dnsutils 

4. Création de la zone

4.1 - Création de la zone de recherche directe fresh.local

On va copier le modèle de zone db.local en le renommant en db.fresh.local puis l'éditer comme suit :


cp db.local db.fresh.local


;
; BIND data file for eth0 interface
;
$TTL    604800
@       IN      SOA     ns.fresh.local. root.fresh.local. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.fresh.local.
ns      IN      A       192.168.0.1
@       IN      AAAA    ::1
dev     IN      A       192.168.0.112
inte    IN      A       192.168.0.103
preprod IN      A       192.168.0.172

4.2 - Création de la zone de recherche inversée fresh.local

On va copier le modèle de zone db.local en le renommant en db.fresh.local puis l'éditer comme suit :


cp db.127 db.fresh.local.inv


;
; BIND reverse data file for eth0 interface
;
$TTL    604800
@       IN      SOA     ns.fresh.local. root.fresh.local. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
1       IN      PTR     ns.fresh.local.
112     IN      PTR     dev.fresh.local.
103     IN      PTR     inte.fresh.local.
172     IN      PTR     preprod.fresh.local

4.3 - Paramétrage de named.conf.local

sudo nano /etc/bind/named.conf.local

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "fresh.local" {
        type master;
        file "/etc/bind/db.fresh.local";
        forwarders{};
};

zone "0.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.fresh.local.inv";
        forwarders{};
};

4.4 - Paramétrage des forwarders

sudo nano /etc/bind/named.conf.options

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // 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 first;
        forwarders {
                192.168.0.254;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        //dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

J'ai du désactiver la directive dnssec ce qui laisse entendre de possibles vulnérabilités dans une tel configuration. Si cette directive est activée il est alors impossible de résoudre certains domaines.

5 - Démarrage du service et test

sudo /etc/init.d/bind9 restart 

Depuis une autre machine du lan, renseigner 192.168.0.1 comme dns dans votre config TCP/IP.

Effectuer un ping sur un de nos FQDN existant dans la zone :

ping inte.fresh.local 

On résout le noms présent dans la zone.

Effectuer un ping sur google.fr

On résout bien les domaines extérieurs par le dns dans nos forwarders.

Source :

webadonf.net/2011/03/configurer-un-serveur-dns-avec-bind9-sur-debian-squeeze