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 : 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 d'hote

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 des résolveurs :

sudo nano /etc/resolv.conf

nameserver	192.168.0.1
domain	fresh.local

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 :



sudo cp /etc/bind/db.local /etc/bind/db.fresh.local
sudo nano /etc/bind/db.local /etc/bind/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 /etc/bind/db.127 db.fresh.local.inv
nano /etc/bind/ 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; };
};

5 - Démarrage du service et test

sudo service 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 nom 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 : http://webadonf.net/2011/03/configurer-un-serveur-dns-avec-bind9-sur-debian-squeeze/