TUTOS.EU

Installer un serveur DNS sous Linux

Installer bind9 sous Linux


Vous voulez que votre serveur linux fasse serveur dns, pour accéder aux machines de votre réseau local avec un nom et pas avec une adresse Ip.
Votre serveur DNS hébergera donc votre propre zone.
Il devra également transmettre les requêtes DNS des zonnes qu'il ne gère pas à un autre serveur dns, celui de votre FAI par exemple.

On va commencer par installer le serveur DNS de référence, BIND (pour Berkeley Internet Name Domain) de l'Internet Software Consortium.
Pour cela taper

sudo apt-get install bind9
Lien vers le fichier : cliquez ici Copier le code

La configuration principale de BIND9 est effectuée dans les fichiers suivant :

/etc/bind/named.conf
/etc/bind/named.conf.options
/etc/bind/named.conf.local

On va configurer un forwarder, cad un serveur DNS qui saura répondre aux requêtes que votre serveur ne sait pas résoudre, cad en gros toutes sauf celles de la zone que l'on va héberger pour nos machines locales.

Pour cela on va modifier named.conf.options avec la commande

sudo nano /etc/bind/named.conf.options
Lien vers le fichier : cliquez ici Copier le code

Décommentez le bloc fowarders et indiquez par exemple l'ip du serveur dns qui est donné par le serveur dhcp de votre box. Chez free c'est 192.168.0.254
Vous pouvez aussi mettre l'ip d'un dns de google comme 8.8.8.8

forwarders {
		192.168.0.254;
		8.8.8.8;
	};
Lien vers le fichier : cliquez ici Copier le code

Pour héberger notre propre zone en tant que serveur maître, on va modifier le fichier named.conf.local avec la commande

nano /etc/bind/named.conf.local
Lien vers le fichier : cliquez ici Copier le code

On va déclarer une zone nommée local.lan
Pour cela entrer

zone "local.lan" IN {
		type master;
		file "/etc/bind/local.lan";
	};
Lien vers le fichier : cliquez ici Copier le code

Puis il faut créer le fichier /etc/bind/local.lan
qui va avec. Pour cela on va copier db.local qui sert de référence.
Taper

sudo cp /etc/bind/db.local /etc/bind/local.lan
Lien vers le fichier : cliquez ici Copier le code

Editer le fichier avec

nano /etc/bind/local.lan
Lien vers le fichier : cliquez ici Copier le code

Modifiez la zone.
Ici on définie le SOA (Start Of Authority). Pour cela on déclare ns (pour Name server). On déclare aussi un second nom, ici root.
Je ne sais pas à quoi il sert mais si on ne met pas ce second nom cela ne fonctionne pas.

Après avoir défini le SOA, toujours ns, on déclare aussi un ou plusieurs enregistrementq de type A.
Un enregistrement de type A permet de faire la correspondance entre un nom DNS et une adresse IP .

Dans cet exemple 2 enregistrements de type A pointent sur la même ip.
Vous remarquerez aussi que local.lan a été modifié en lan.
Aussi l'enregistrement domo répond à domo.lan

Pour éviter que vos tests soient faussés car ils passeront par le dns de l'ipv6, modifiez /etc/bind/named.conf.options
avec

nano /etc/bind/named.conf.options
Lien vers le fichier : cliquez ici Copier le code

Au niveau de listen-on-v6 passer { any; } à { ::1; };

Redémarrer le démon BIND9 avec

sudo service bind9 restart
Lien vers le fichier : cliquez ici Copier le code

De là, depuis une autre machine vous pouvez normalement tester la résolution de ns.local.lan
Par exemple, sur une machine windows, tapez dans une invite de commande

nslookup
Lien vers le fichier : cliquez ici Copier le code

Indiquez à nslookup qu'il doit utiliser votre serveur linux comme serveur dns.
Le mien à l'ip 192.168.0.23, donc je tape

server 192.168.0.23
Lien vers le fichier : cliquez ici Copier le code

Maintenant tentez de résoudre ns.local.lan

ns.local.lan
Lien vers le fichier : cliquez ici Copier le code

Ici on voit que l'ip associée à ns.local.lan a bien été trouvée et affichée

On peut tester le dns avec la commande dig qu'on peut obtenir avec

sudo apt-get install dnsutils
Lien vers le fichier : cliquez ici Copier le code

L'aide de la commande dig

On va chercher à résoudre ns.local.lan
avec

dig -q ns.local.lan
Lien vers le fichier : cliquez ici Copier le code

Dans la Answer section, on voit qu'on a trouvé l'ip


Pour que vos périphériques prennent en compte votre nouveau serveur DNS, il faut leur dire de l'utiliser. Pour cela il faut modifier l'ip des serveurs DNS fournies en option par votre DHCP.
Dans mon cas l'ip actuelle fournie pour le DNS par le DHCP est 192.168.0.254.
Mon server Linux qui fait serveur DNS a l'ip 192.168.0.23

Donc en premier lieu j'ai indiqué au serveur DHCP de ne plus utiliser 192.168.0.254 mais 192.168.0.23.
Chez Free cela ressemble à ceci :

A noter que tout fonctionnait bien sur mes ordinateurs pour la résolution, sauf sur mon tel Android.
J'ai dû installer Network Info II pour vérifier ce qu'il prenait en ip pour le DNS. Je n'ai pas vu de soucis.
Puis j'ai installé Ping & Net pour me rendre compte que ce con utilisait la second ip du server dns, cad celui de l'opérateur, qui ne connait pas mon dns local bien sûr.
Seul moyen trouvé actuellement : ne mettre que l'ip de mon DNS local, et là cela fonctionne.
Cela veut dire que dès qu'il est éteind, plus d'internet à la maison car plus de résolution de nom, et çà c'est pas cool.

Pages Web

Site WebDescription
doc.ubuntu-fr.orgBind9
Linux.developpez.comMonter un serveur DNS

2