Utiliser un serveur DNS local

Pour comprendre facilement le fonctionnement d'un résolveur DNS, imaginons que notre réseau local est constitué d'un serveur de noms (192.168.1.101) et d'un serveur web ( 192.168.1.102) qui héberge plusieurs sites Internet : nagios.local.net et www.local.net.

  • Depuis le serveur

Connectons-nous à la machine qui fera office de serveur DNS et commençons par installer ce dont nous avons besoin :

apt-get install bind9

Configurer une zone

Rendons-nous dans le dossier où se trouve les fichiers de configurations :

cd /etc/bind/

Copions le fichier d’exemple pour ajouter les informations qui nous intéresse :

cp db.empty db.local.net
nano db.local.net

Inclure les paramètres suivants :

$TTL    604800
@       IN      SOA     local.net. root.local.net. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.local.net.
@       IN      A       192.168.1.102

ns      IN      A       192.168.1.101
www     IN      CNAME   local.net.
nagios  IN      CNAME   local.net.

Vérifier que la zone ci-dessus est correcte :

named-checkzone local.net /etc/bind/db.local.net

On déclare la zone

nano named.conf.local
zone "local.net" {
        type master;
        file "/etc/bind/db.local.net";
};

On configure le forwarding qui va permettre de rediriger les requêtes non résolus vers un autre serveur :

nano named.conf.options
options {
      forwarders {
             8.8.8.8;
      };
};

On active les logs (optionnel)

nano /etc/bind/named.conf

Puis on peut ajouter ces directives :

logging {
channel "requetes" {
file "/var/log/bind/queries.log" size 10m;
print-time yes;
print-category yes;
};
category queries { "requetes"; };
channel "securite" {
file "/var/log/bind/securite.log" size 5m;
print-category yes;
print-severity yes;
print-time yes;
};
category security { "securite"; };
channel "global" {
file "/var/log/bind/global.log" size 5m;
print-category yes;
print-severity yes;
print-time yes;
};
category general { "global"; };
channel "configuration" {
file "/var/log/bind/config.log" size 5m;
print-category yes;
print-severity yes;
print-time yes;
};
category config { "configuration"; };
};

On définit leur emplacement :

mkdir /var/log/bind
chown bind.adm /var/log/bind/

Depuis un pc client

Pour terminer on renseigne le serveur à la machine cliente :

nano /etc/resolv.conf

On ajoute cette ligne :

nameserver     192.168.1.101

Pour conserver cette configuration à chaque redémarrage, on peut le signaler au près du client DHCP déjà installé :

nano /etc/dhcp/dhclient.conf
prepend domain-name-servers 192.168.1.101;