Serveur DNS
BIND9 sous Debian
version : 1.0.1 Le 30/03/2018
Éditeur : Ribeiro Romain version de Debian : 9.4 version de bind : bind9
Installation et configuration du service DNS
Bind9 en ligne de commande
SOMMAIRE
1. Mise à jour des outils debian 3
2. Téléchargement de bind9 3
3. Changement du nom du serveur DNS 3
4. Le fichier /etc/hosts 4
5. Le fichier /etc/host.conf 4
6. Le fichier /etc/resolv.conf 5
8. Le fichier de zone inverse 7
9. Le fichier /etc/bind/named.conf 8
10. Le fichier /etc/bind/named.conf.options 9
12. Vérifier le fonctionnement du serveur DNS 11
13. Indiquer notre serveur comme serveur DNS préféré à un poste 11
1. Mise à jour des outils debian
Premièrement, on met à jour les outils debian avec deux commandes :
root@debianDNS-DHCP:~# apt-get update root@debianDNS-DHCP:~# apt-get upgrade
2. Téléchargement de bind9
Pour installer bind9, il faut avoir internet et un miroir de spécifié dans
Debian lors de l’installation, on télécharge comme ceci : root@debianDNS-DHCP:~# apt-get install bind9
On entre “o” pour continuer le téléchargement.
Souhaitez-vous continuer ? (O/n) o
3. Changement du nom du serveur DNS
Afin de changer le nom du serveur, on accède au fichier hostname avec nano. Dans ce fichier, une seule ligne est écrite, il s’agit du nom du serveur. On va changer ce nom en remplaçant par dns.rarr.fr.
root@debianDNS-DHCP:~# nano /etc/hostname
Pour que le changement prenne effet, on reboot le serveur : root@debianDNS-DHCP:~# reboot now
Et on obtient donc ce résultat :
Debian GNU/Linux 9 dns.rarr.fr tty1 dns login: root
Password:
Last login : Sun Mar 18 14:36:58 CET 2018 on tty1 Linux dns.rarr.fr 4.9.0-6-amd64 #1 SMP Debian 4.9
4. Le fichier /etc/hosts
On va modifier le fichier hosts, qui contient la correspondance adresse IP nom d’hôte.
root@debianDNS-DHCP:~# nano /etc/hosts
On remarque l’ancien nom d’hôte, qu’on modifie avec le nouveau.
127.0.0.1 localhost 127.0.0.1 debianDNS-DHCP
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes ff02::2 ip6-allrouters
127.0.0.1 localhost 127.0.0.1 dns.rarr.fr
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes ff02::2 ip6-allrouters
5. Le fichier /etc/host.conf
On va donc agir sur host.conf, afin de spécifier l’ordre de recherche de nom du serveur : root@dns:~# nano /etc/host.conf
Il faut rajouter l’entrée order hosts, bind puis multi on, ce qui donne : order hosts, bind
multi on
On peut ensuite sauvegarder les modifications (CTRL +X, O, ENTRÉE)
6. Le fichier /etc/resolv.conf
On modifie le fichier resolv.conf afin d’indiquer au serveur quel DNS il utilisera pour la résolution de nom, on veut que ce soit le DNS qu’on configure, et pas un autre, alors on y entre 127.0.0.1 , l’adresse de boucle locale.
root@dns:~# nano /etc/resolv.conf
Il ne faut pas oublier d’y spécifier le domaine créé, ici rarr.fr.
On ne laisse qu’une ligne dans nameserver, qui sera donc 127.0.0.1.
domain rarr.fr search home rarr.fr nameserver 127.0.0.1 7. Le fichier de zone directe
Le fichier de zone directe va servir à identifier les noms en adresses IP par exemple DiiSteR-PC.rarr.fr se traduirait en 192.168.1.26
Pour faciliter la tâche, on copie le fichier de zone directe exemple, /etc/bind/db.local et on le copie sous le nom que l’on souhaite, il faudra impérativement le retenir, il sera utile plus tard. Ici, le fichier s'appellera db.rarr.fr.
root@dns:~# cp /etc/bind/db.local /etc/bind/db.rarr.fr root@dns:~# nano /etc/bind/db.rarr.fr
On accède à ce fichier, et on peut commencer à modifier.
Le fichier se présente sous cette forme, premièrement pour gagner en clarté on supprime les trois premières lignes. ensuite, on va modifier la ligne @ IN SOA localhost. root.localhost. (
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2491200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1
On obtient donc un fichier comme ceci, avec quelques entrées indiquées.
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA dns.rarr.fr. root.rarr.fr. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2491200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.rarr.fr.
dns IN A 127.0.0.1
DiiSteR-PC IN A 192.168.1.26
DSR IN CNAME DiiSteR-PC
Légende :
-
La zone orange correspond au nom du serveur, ainsi que son domaine. le serveur s’appelle dns, son domaine est rarr.fr. (ne surtout pas oublier le “.” à la fin).-
La zone verte correspond au compte administrateur dans le domaine créé, de base le compte est root alors on écrit root.rarr.fr.-
La zone rouge correspond au NS, Name-Server, le serveur dans son domaine va s'appeler dns.rarr.fr, lors d’un ping, il faudra donc écrire ping dns.rarr.fr..-
La zone bleue correspond au CNAME, le surnom.Pour surnommer un poste, il faut d’abord l’avoir inclus dans une entrée A (Alias), on peut remarquer qu’au dessus de cette entrée CNAME se situe une entrée A pour le poste DiiSteR-PC qui a pour adresse IP 192.168.1.26, alors pour créer un CNAME, on entre premièrement le surnom que l’on souhaite, et ensuite le nom entré dans l’Alias (A) précédent, ce qui donne :
DiiSteR-PC IN A 192.168.1.26
DSR IN CNAME DiiSteR-PC
Ne pas oublier d’inclure une entrée A pour le serveur lui-même, comme précédemment (dns IN A 127.0.0.1).
8. Le fichier de zone inverse
Le fichier de zone inverse, va lui servir à identifier une adresse IP en nom, par exemple dans le cas de DiiSteR-PC, si l’on envoie une requête inverse nslookup : nslookup 192.168.1.26, le serveur retournera DiiSteR-PC.rarr.fr.
Comme pour le fichier de zone directe, le fichier de zone inverse peut être copié avec un fichier exemple.
root@dns:~# cp /etc/bind/db.127 /etc/bind/db.inv.rarr.fr root@dns:~# nano /etc/bind/db.inv.rarr.fr
Comme pour le fichier de zone directe, on va supprimer les 3 premières lignes, et modifier la ligne @ IN SOA et @ IN NS, avec les mêmes
attributs que pour la zone directe.
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA dns.rarr.fr. root.rarr.fr. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2491200 ; Expire
604800 ) ; Negative Cache TTL
Cette fois-ci, les entrées sont différentes, mis à part le NS.
Il s’agit des entrées PTR, on remarque que l’adresse IP indiquée à gauche du PTR n’est pas “complète”, elle car il ne faut indiquer que la partie hôte de l’adresse IP, pour un masque /24, on aura 26. Pour un masque /8, on aura 1.0.0.
@ IN NS dns.rarr.fr.
1.0.0 IN PTR dns.rarr.fr.
26. IN PTR DiiSteR-PC.rarr.fr
9. Le fichier /etc/bind/named.conf
Ce fichier va nous servir à indiquer au service DNS, quels sont les fichiers de zone à charger.Ici, les fichiers s’appellent db.rarr.fr et db.inv.rarr.fr.
root@dns:~# nano /etc/bind/named.conf
Logiquement, on va donc indiquer deux zones, la directe et l’inverse, comme ceci :
include “/etc/bind/named.conf.options”;
include “/etc/bind/named.conf.local”;
include “/etc/bind/named.conf.default-zones”;
zone rarr.fr” {
type master ;
file “/etc/bind/db.rarr.fr” ; }
;
zone “58.16.172.in-addr.arpa” { type master ;
file “/etc/bind/db.inv.rarr.fr” ; }
;
la ligne type master ; indique que le serveur est maître de cette zone, si l’on configurait un serveur esclave (secondaire), on indiquerait type slave.
Remarque : la zone inverse, n’est pas appelée de la même manière que la zone directe, il faut y entrer la partie réseau de l’adresse IP du poste (ici 172.16.58) et ce à l’envers ce qui nous donne 58.16.172, il faut également y inclure “.in-addr.arpa” ce qui nous donne :
58.16.172.in-addr.arpa
10. Le fichier /etc/bind/named.conf.options
Le fichier named.conf.options va servir à indiquer un forwarder (redirecteur), un forwarder est un serveur DNS distant, qui contient une base importante d’entrées dans ses fichiers de zone, il va servir à éviter à notre serveur DNS d’avoir à effectuer de très grandes requêtes pour trouver un nom de domaine sur internet par exemple, pour trouver www.google.com, notre serveur ne connaît pas son adresse, alors il sera obligé de demander au forwarder pour gagner du temps, ou de perdre du temps en interrogeant le serveur racine . puis le domaine .com. puis le domaine google.com. pour enfin accéder à l’hôte www.google.com. .
Pour ce faire, rien de plus simple :
root@dns:~# nano /etc/bind/named.conf.options
On retire les // comme ci-dessous, et on y entre l’adresse IP d’un serveur
DNS référencé, tel que celui de Google 8.8.8.8; il existe bien d’autres serveurs DNS comme celui des FAI par exemple.
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 wa nt to use them as // forwards. Uncomment the following block, and insert // the addresses replacing the all-0’s placeholder.
forwarders {
8.8.8.8;
};
Une fois toutes ces étapes effectuées, on enregistre tout et on redémarre le service DNS bind9 avec la commande suivante :
root@dns:~# /etc/init.d/bind9 restart
Si le service a bien été redémarré, on obtient la ligne suivante : [ ok ] Restarting bind9 (via systemctl): bind9.service.
11. Attribuer une adresse IP fixe au serveur
Afin de pouvoir l’utiliser, le serveur DNS doit impérativement avoir une adresse IP fixe, alors on va modifier le fichier /etc/network/interfaces Comme ci-dessous, il faudra remplacer la ligne iface eth0 inet dhcp par iface eth0 inet static, notons que sous ubuntu 16.04, l’interface s’appelle enp0s3 et non eth0 ou ens32 sur Debian 9.3.
On entre donc l’adresse voulue au serveur, le masque et la passerelle :
auto eth0
iface eth0 inet static address 192.168.1.253 netmask 255.255.255.0 gateway 192.0.2.254
Une fois cette modification faite, on redémarre le serveur avec la commande reboot.
12. Vérifier le fonctionnement du serveur DNS
Pour vérifier le fonctionnement du serveur, on procède par étapes:
1. nslookup un poste avec le nom indiqué dans la zone directe : nslookup DiiSteR-PC.rarr.fr par exemple. si le résultat renvoie l’adresse IP de notre serveur DNS ainsi que l’adresse IP de DiiSteR-PC, cela signifie que le fichier de zone est correctement configuré, ainsi que le fichier resolv.conf.
2. Ping un poste via son CNAME :
ping DSR.rarr.frSi l’on obtient une réponse positive, alors l’entrée CNAME est correctement écrite.
3. Ping un serveur web distant :
On ping par exemple www.google.com, si l’on reçoit une réponse, alors le serveur DNS fonctionne totalement au niveau de la recherche directe.
4. Effectuer une recherche inverse
On va par exemple utiliser nslookup sur le poste DiiSteR-PC, car il a été entré dans notre fichier de zone inverse.
nslookup 192.168.1.26 Si l’on récupère le nom du poste, tout est bon.
13. Indiquer notre serveur comme serveur DNS préféré à un poste
Pour ce faire, c’est très simple, on accède au centre réseau et partage du poste en question, puis au paramètre Ethernet au wifi de la carte active, aux propriétés IPv4, et on modifie la ligne suivante :
L’adresse IP correspond au serveur DNS que l’on a créé.