Installation du serveur
Le service DNS est délivré par le logiciel bind. Le logiciel dnsutils
permet d’avoir des outils de tests et de diagnostic comme nslookup ou
dig.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo apt install bind9 bind9utils dnsutils #Installation des logiciels
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IPv4
On peut configurer le serveur de sorte à ce qu’il ignore les requêtes IPv6
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo nano /etc/default/named
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Remplacer la ligne
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OPTIONS="-u bind"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Par
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OPTIONS="-u bind -4"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Création de zone DNS
La création de zones DNS se fait dans le fichier
/etc/bind/named.conf.local
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
zone "grenoble.fr" {
type master;
file "/etc/bind/zones/db.grenoble.fr"; #fichier de configuration de la zone
};
#Partie pour le résolution inversée
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.0.168.192"; #fichier de configuration de la zone reverse
};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Création des fichiers de zone DNS
Dans un premier temps on va créer le dossier qui va contenir les fichiers de
zone.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo mkdir /etc/bind/zones
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ensuite, on va créer le premier fichier de zone à partir d’un fichier existant
pour éviter de tout réécrire
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo cp /etc/bind/db.local /etc/bind/zones/db.grenoble.fr
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
À noter : il faut bien reprendre les chemins et noms de fichiers qui ont été
renseignés dans /etc/bind/named.conf.local
Idem pour la résolution inversée
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo cp /etc/bind/db.127 /etc/bind/zones/db.0.168.192
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Configuration du premier fichier de zone DNS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo nano /etc/bind/zones/db.grenoble.fr
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Première partie du fichier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TTL 604800 #temps de conservation de la requête par le client
@ IN SOA ns.grenoble.fr. admin.grenoble.fr. (
20190328 ;Numéro de série
604800 ;Rafraîchissement
86400 ;Nouvel essai
2419200 ;Expiration
604800 ) ;Cache TTL négatif
;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sur la seconde ligne du fichier, on retrouve un « @ » qui indique le serveur
lui-même On retrouve le « SOA » qui indique le début d’autorité du
serveur.
Ensuite on a le nom complet du serveur et son domaine
« ns.exemple.com. ». le serveur est ainsi nommé « ns » dans le domaine
exemple.com.
Configuration du premier fichier de zone DNS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo nano /etc/bind/zones/db.grenoble.fr
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Première partie du fichier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TTL 604800 #temps de conservation de la requête par le client
@ IN SOA ns.grenoble.fr. admin.grenoble.fr. (
20190328 ;Numéro de série
604800 ;Rafraîchissement
86400 ;Nouvel essai
2419200 ;Expiration
604800 ) ;Cache TTL négatif
;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On a « admin.grenoble.fr. » qui représente l’adresse e-mail permettant de
contacter de l’administrateur qui gère le serveur. Cet élément est obligatoire. Le
« @ » est remplacé par un point.
À noter : pour écrire « nom.prenom@grenoble.fr » on écrira
« nom\.prenom.exemple.com ». Le point doit être précédé du caractère « \ »
Numéro de série : c’est une information indicative pour l’administrateur. Par
convention on y écrit la date de dernière mise à jour du fichier.
Rafraîchissement : nombre de secondes avant que le serveur DNS secondaire
demande une mise à jour de configuration.
Nouvel essai : nombre de secondes avant que le serveur DNS secondaire tente une
nouvelle demande de mise à jour s’il n’y est pas parvenu précédemment.
Expiration : nombre de secondes avant que le serveur DNS secondaire ne répondra
plus aux requêtes si le serveur DNS primaire ne répond plus.
Cache TTL négatif : correspond au temps de conservation des requêtes, même
celles qui ont un résultat négatif.
On termine cette dernière partie en fermant la parenthèse et en mettant un « ; ».
À noter : le point-virgule sert aussi pour écrire des commentaires
Deuxième partie du fichier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ IN NS localhost.
grenoble.fr. IN A 192.168.0.110 #IP du domaine si besoin mais pas obligatoire
Ns IN A 192.168.0.111 #IP du serveur DNS primaire
Pc1 IN A 192.168.0.112
Pc2 IN A 192.168.0.113
Etc...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fichier complet fichier zone :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TTL 604800 #temps de conservation de la requête par le client
@ IN SOA ns.grenoble.fr. admin.grenoble.fr. (
20190328 ;Numéro de série
604800 ;Rafraîchissement
86400 ;Nouvel essai
2419200 ;Expiration
604800 ) ;Cache TTL négatif
;
@ IN NS localhost.
grenoble.fr. IN A 192.168.0.110 #IP du domaine si besoin mais pas obligatoire
Ns IN A 192.168.0.111 #IP du serveur DNS primaire
Pc1 IN A 192.168.0.112
Pc2 IN A 192.168.0.113
Etc...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fichier complet reverse :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TTL 604800 #temps de conservation de la requête par le client
@ IN SOA ns.grenoble.fr. admin.grenoble.fr. (
20190328 ;Numéro de série
604800 ;Rafraîchissement
86400 ;Nouvel essai
2419200 ;Expiration
604800 ) ;Cache TTL négatif
;
@ IN NS localhost.
110 IN PTR grenoble.fr.
111 IN PTR ns
112 IN PTR pc1
113 IN PTR pc2
Etc...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avant de démarrer le service, on indique au serveur qu’il doit s’interroger
lui-même et non un serveur DNS tiers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo nano /etc/resolv.conf
:
search grenoble.fr #zone de recherche, cela évite d’écrire le suffixe à chaque fois. Par
exemple, on peut interroger le serveur pour pc1 au lieu d’écrire pc1.exemple.com
Nameserver 127.0.0.1 #interrogation localhost
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
demmarer le service :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo systemctl restart bind9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
verifier son fonctionnement :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> sudo systemctl status bind9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Le serveur est prêt. On peut désormais le tester
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User> nslookup pc1
Server : 127.0.0.1
Address : 127.0.0.1#53
Name : pc1.grenoble.fr
Address : 192.168.0.112
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~