Installation d’un serveur DNS (Bind9)

Samuel Chevalley
15 février 2015

Installation des packages nécessaires

apt-get install bind9

Configuration de Bind9

Définir tout d’abord notre domaine dans named.conf.local (nous l’appellerons exemple.local pour l’exemple, de plus, notre serveur DNS à pour IP 192.168.5.150/24)

vi /etc/bind/named.conf.local

Ajouter :

zone "exemple.local" {
type master;
file "/etc/bind/exemple.local";
};
zone "5.168.192.in-addr.arpa" { #ici mettre l'IP du serveur dans l'ordre inverse en supprimant la partie nécessaire en fonction du masque réseau puis ajouter ''in-addr.arpa'' (exemple ici, le serveur a pour IP 192.168.5.150 avec comme masque 255.255.255.0, donc on enlève la dernière partie ce qui donne 192.168.5, puis on inverse et ajoute ''in-addr.arpa''=> 5.168.192.in-addr.arpa)
type master;
notify no;
file "/etc/bind/exemple.local.inv";
};

zone « exemple.local » permet la résolution nom => IP
zone « 5.168.192.in-addr.arpa » permet la résolution inverse (IP => nom)
Il faut maintenant créer les 2 fichiers renseignés ci-dessus (exemple.local et exemple.local.inv), pour cela nous allons copier/coller un fichier déjà présent et le modifier (afin d’avoir un code d’exemple).
 
Donc pour exemple.local :

cp /etc/bind/db.local /etc/bind/exemple.local
vi exemple.local

On obtient le fichier suivant:

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1

On remplace les localhost par le FQDN du serveur (c-a-d sont nom netbios suivit de son domaine) puis on ajoute le nombre de ligne nécessaire pour résoudre les noms du réseau.
 
Par exemple ici nous associons le nom netbios du serveur (serveur1) et de 2 pc du réseau(client1 et client2) aux IP correspondantes :

; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA serveur1.exemple.local. root.serveur1.exemple.local. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS serveur1.exemple.local.serveur1 IN A 192.168.5.150
client1 IN A 192.168.5.163
client2 IN A 192.168.5.86

 

Même procédure pour le fichier exemple.local.inv :

cp /etc/bind/db.127 /etc/bind/exemple.local.inv
vi exemple.local.inv

 

Puis on modifie le fichier comme ci-dessous :

;
; BIND reverse data file for local loopback interface
;
$TTL 604800 @ IN SOA serveur1.exemple.local. root.serveur1.exemple.local. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS serveur1.
150 IN PTR serveur1.exemple.local.
163 IN PTR client1.exemple.local.
86 IN PTR client2.exemple.local.

 

Il reste ensuite à modifier le fichier named.conf.options :

vi /etc/bind/named.conf.options
options
{
directory "/var/cache/bind";
forwarders { 8.8.8.8; 213.244.0.16; }; #permet d'utiliser des DNS
extérieur au réseau afin de résoudre les nom extérieur et ainsi, pouvoir sortir sur le net
auth-nxdomain no;
listen-on port 53 {127.0.0.1; 192.168.5.150; };#indiquer au serveur d'écouter sur le port 53
allow-query {127.0.0.1; 192.168.5.150; any; };#autoriser à tous les hôtes du réseau d'envoyer des requêtes au serveur
};

 

Relancer ensuite le service :

service bind9 restart