Vous êtes sur la page 1sur 10

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

1 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

Installation dun serveur DNS Bind 9 sur Debian


mar, 19/06/2007 - 14:40 Tony

But de ce document
Ce document me sert de mmo pour installer un serveur Bind 9 sur une Debian. Ce document a t test sur Debian Etch et Debian Sarge. Je le diffuse en esprant quil puisse servir dautres personnes.

Pr-requis
Avoir install une Debian de Base : cf mon autre document sur ce sujet : http://www.coagul.org/article.php3 ?id_article=158

Prsentation rapide dun systme DNS


Larchitecture de rseau TCP/IP sur lequel est bas Internet et la plupart des rseaux locaux actuels, utilisent des adresses IP numriques du type 192.168.0.1. Mais pour faciliter la lecture de ces adresses par lhomme, un systme permet de transformer ces adresses en adresses plus lisibles comme www.coagul.org Pour effectuer cette opration, il est ncessaire dutiliser des serveurs DNS. Un serveur DNS fera donc la correspondance entre les adresses IP et les noms des domaines. Un serveur DNS soccupe en gnral dun domaine limit et soccupe de transmettre les questions dautres serveurs sil ne connat pas la rponse.

Principe de fonctionnement de la recherche de noms


Lorsque quune demande de rsolution de nom est demande, Linux commence par regarder le fichier /etc/hosts.conf :
order hosts,bind multi on

La premire ligne de ce fichier indique quil faut commencer la recherche en regardant la table hosts locale et ensuite il faut interroger le serveur DNS. La table hosts locale est enregistre dans le fichier /etc/hosts elle contient une table de correspondance entre des adresses IP et des noms, elle ressemble :
127.0.0.1 192.168.0.6 localhost.localdomain debian1.mondomaine.com localhost debian1

La premire ligne est obligatoire pour que le systme fonctionne mme quand le rseau est dsactiv. Ladresse IP 127.0.0.1 est toujours associe au nom localhost. Les lignes suivantes peuvent tre ajoutes manuellement pour faire la correspondance entre des adresses IP et des noms. Cest ce qui est fait en labsence de serveur DNS. Si le rsultat nest pas trouv dans la table hosts,le systme recherche le serveur DNS indiqu dans le fichier /etc/resolv.conf :
search mondomaine.com nameserver 192.168.0.1 nameserver 194.2.0.50

La premire ligne indique quel domaine il faut ajouter au noms si celui-ci nest pas indiqu lors dune demande de rsolution de nom. Exemple : ping monserveur.mondomaine.com -> Aucun domaine ne sera ajout lors de la rsolution du nom, car le domaine est fourni.

2 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

ping monserveur -> Le domaine mondomaine.com, sera ajout avant deffectuer la demande de rsolution du nom (La recherche du nom, portera donc sur monserveur.mondomaine.com) La deuxime ligne indique le serveur DNS principal. Et cest donc le serveur DNS qui sera charg de donner le rsultat sil connat la rponse ou de transmettre la question un autre serveur DNS. Si le serveur principal nest pas disponible, le serveur DNS indiqu sur la ligne suivante sera utilis.

Pourquoi installer un serveur DNS


Pour au moins deux raisons : viter de tenir jour la table hosts de chaque poste client dun rseau. Avoir un cache DNS qui acclre la recherche des noms. Sur un rseau locale, un serveur DNS permet dacclrer le trafic sur le rseau car de nombreux services ont besoins dun serveur DNS bien configur pour fonctionner correctement (WEB, POP, SMTP,..)

Installation de Bind 9
Sous Debian, il faut installer le paquet suivant :
# aptitude install bind9

Fichier de Configuration Principal (/etc/bind/named.conf)


Le fichier de Configuration principal /etc/bind/named.conf contient la liste des zones (ou domaines) que le serveur DNS doit prendre en charge. Voici un exemple de description de zone :
zone "mondomaine.com" { type master; file "/etc/bind/db.mondomaine.com"; forwarders{}; };

mondomaine.com : Nom du domaine prendre en charge type master : Cette ligne indique que le serveur est le serveur principal de ce domaine. file "/etc/bind/db.mondomaine.com" ; :Cette ligne donne le chemin du fichier qui contiendra la correspondance entre les noms et les adresses IP pour ce domaine.

Fichier de configuration secondaire


Pour chaque domaine grer, il faut crer le fichier indiqu dans named.conf . Dans lexemple prcdent, il faudra crer le fichier /etc/bind/db.mondomaine.com Voici le contenu de ce fichier :
$TTL 604800 (

@ IN SOA pgdebian.mondomaine.com. root.mondomaine.com. 20041122 ; Serial ; ; ; ; 604800 ;Refresh -> ; ; ; ;

-> N de srie incrmenter chaque modif de ce fichier. Ce N est utilis par les serveurs esclaves pour lui indiquer qu'il doit mettre jour sa base. Par commodit ce n est une date l'envers. A l'expiration du dlai Refresh exprim en secondes, le serveur excalve va entrer en communication avec le maitre et si il ne le trouve pas, il fera une nouvelle tentative au bout du dlai Retry et si au

3 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

; ; 86400 2419200 604800 ) ; Retry ; Expire

bout du dlai Expire il considerera que le serveur n'est plus disponible.

; Minimum -> Dure de vie minimum du cache en secondes

;** Les 3 lignes suivantes permettent au serveur de se retrouver lui mme NS pgdebian pgdebian complmentaire ;** Les lignes suivantes dfinissent la table entre les noms et les IP pglinux pg-cao plgmao cpi prod pgcie A A A A A A 192.168.0.1 192.168.0.2 192.168.0.9 192.168.0.10 192.168.0.100 10.2.2.1 A HINFO pgdebian.mondomaine.com. 192.168.0.3 "PII 233 :-)" "Debian Testing" ;Nom du serveur ;Adresse IP du ;serveur de noms ;Info

;** Les lignes suivantes sont des alias entre des noms et des autres noms pop smtp www ldap CNAME CNAME CNAME CNAME pglinux pglinux pglinux pgdebian

La premire partie est utilise pour la gestion matre-esclave des serveurs DNS. La deuxime partie permet au serveur DNS de se retrouver lui-mme. La troisime partie contient la table de correspondance entre les noms et les adresses IP. La dernire partie donne les alias possibles pour un mme nom de serveur.

Rsolution Inverse
De nombreux services rseaux utilisent la rsolution inverse (Trouver ladresse IP partir du nom) pour vrifier que le nom est valide. Il est donc ncessaire de configurer le serveur pour quil prenne galement en charge la rsolution inverse. Le principe est quasiment le mme que pour la rsolution classique. il faut dj dfinir le domaine inverse dans le fichier named.conf comme dans lexemple suivant :
zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.mondomaine.com.inv"; forwarders{}; };

Ladresse IP doit tre indique lenvers et il faut ajouter .in-addr.arpa. Il faut galement dfinir un nouveau fichier qui ressemblera ceci :
$TTL @ 604800 IN SOA ( 20041122 604800 86400 2419200 604800 ) pgdebian.mondomaine.com.

root.mondomaine.com.

4 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

NS 1 2 3 9 10 100 PTR PTR PTR PTR PTR PTR

pgdebian.mondomaine.com. pglinux.mondomaine.com. pg-cao.mondomaine.com. pgdebian.mondomaine.com. plgmao.mondomaine.com. cpi.mondomaine.com. prod.mondomaine.com.

La premire partie est utilise pour la gestion matre-esclave des serveurs DNS. La deuxime partie donne le nom du serveur DNS (NS = Name Server). La troisime partie contient la correspondance entre la fin de ladresse IP et le nom du serveur. Pour finir, il est conseill (mais pas obligatoire) dindiquer les adresses IP des serveurs DNS de son fournisseur daccs Internet. Pour cela, il faut dcommenter et renseigner la section suivante du fichier /etc/bind/named.conf.options :
forwarders { 194.2.0.50; 194.2.0.20; };

Dmarrer le dmon
Aprs chaque modification des fichiers de configuration, il faut redmarrer le dmon :
/etc/init.d/bind9 restart

ATTENTION : Il est vivement conseill de regarder les logs pour vrifier que le dmarrage du dmon sest correctement effectu :
tail -30 /var/log/syslog

Installer un serveur secondaire esclave (slave)


Installation du serveur esclave
La mise en place dun serveur secondaire sur un rseau important est vivement recommand pour viter toute panne de rsolutions de noms en cas de dysfonctionnement du serveur principale. Sur le deuxime serveur, il faut galement installer bind :
# aptitude install bind9

Configuration du serveur matre


Sur le serveur principal, il faut modifier les zones du fichier /etc/bind/named.conf , pour ajouter la ligne notify yes . Exemple :
zone "mondomaine.com" { type master; notify yes; file "/etc/bind/db.mondomaine.com"; forwarders{}; };

Sur le serveur principal, il faut ajouter dans chaque zone exporter une ligne NS pour chaque serveur esclave. Exemple :
NS NS ServeurEsclave1.mondomaine.com. ServeurEsclave2.mondomaine.com. ;Nom du serveur esclave N1 ;Nom du serveur esclave N2

Sur le serveur principal, il faut autoriser Bind transfrer les donnes vers le serveur secondaire en ajoutant cette ligne dans /etc/bind/named.conf.options :

5 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

allow-transfer { 192.168.0.1; };

Remarque : Il faut remplacer ladresse IP par celle de votre serveur esclave.

Configuration du serveur esclave


Sur le serveur esclave, il faut ajouter dans le fichier /etc/bind/named.conf.local , les zones importer du serveur principal. Voici un exemple :
zone "mondomaine.com" { type slave; file "db.mondomaine.com "; masters {192.168.0.4; }; }; zone "0.168.192.in-addr.arpa" { type slave; file "db.mondomaine.com.inv"; masters {192.168.0.4; }; };

Le nom des zones doit correspondre exactement aux zones dfinies sur le serveur principal. Ladresse IP du serveur principal est indiqu la ligne masters Sur le serveur esclave, il faut lautoriser senvoyer des notifications pour viter davoir des messages derreurs dans les logs. Pour cela, il faut ajouter cette ligne dans le fichier /etc/bind /named.conf.options :
allow-notify { 192.168.0.1; };

Remarque : Il faut remplacer ladresse IP par celle de votre serveur esclave.

Test du serveur esclave


La mise jour des donnes du serveur esclave, se fera au moment du redmarrage du serveur matre si le champ Serial de la zone concerne est suprieur sur le matre par rapport lesclave. Pour vrifier que tout fonctionne correctement, il faut regarder les logs au niveau du serveur esclave et au niveau du serveur matre. Lors du dmarrage du serveur, les fichiers contenant la rsolution des noms, seront imports dans /var/cache/bind Remarque : Il est possible de supprimer les fichiers enregistrs dans /var/cache/bind car ils seront recrs au prochain dmarrage du serveur matre.

Tester la rsolution des noms


Il existe plusieurs outils pour tester le bon fonctionnement de la rsolution des noms :

ping
La commande ping est la plus simple (mais la plus limit). Elle permet de tester la rsolution du nom, mais pas la rsolution inverse :
$ ping NomDuServeur

host
La commande host , permet de tester la rsolution du nom et la rsolution inverse :
$ host NomDuServeur

ou :
$ host AdresseIPduServeur

nslookup

6 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

La commande nslookup du paquet dnsutils , permet galement de tester la rsolution du nom et la rsolution inverse :
$ nslookup NomDuServeur

ou :
$ nslookup AdresseIPduServeur

dig
La commande dig du paquet dnsutils , permet galement de tester la rsolution du nom et la rsolution inverse. Mais la commande dig permet surtout dinterroger directement le serveur bind et obtenir de nombreuses autres informations :
$ dig NomDuServeur.NomDuDomaine

Remarque : Le nom du domaine est obligatoire pour obtenir une rponse (ANSWER SECTION) ou :
$ dig -x AdresseIPduServeur

Remarque : Le paramtre -x est obligatoire pour obtenir une rponse (ANSWER SECTION)

Remarques sur les fichiers de configuration


Dans ce document, nous avons ajout dans /etc/bind/named.conf.options la ligne suivante pour autoriser Bind transfrer les donnes vers le serveur secondaire :
allow-transfer { 192.168.0.1; };

Nous aurions pu crire cette ligne sous cette forme :


allow-transfer { 192.168.0.1; }; # Il est mme possible d'ajouter un commentaire

Nous pouvons galement autoriser plusieurs serveurs comme cela :


allow-transfer { 192.168.0.1; 192.168.0.2; }; # Serveur N1 # Serveur N2

Nous pouvons aussi utiliser cette syntaxe :


allow-transfer { 192.168.0/24; }; # Autorise tous les postes du rseau locale

Pour autoriser tout le monde, nous pouvons utiliser cette syntaxe :


allow-transfer { any; };

Ou celle-ci :
allow-transfer { 0/0; };

Pour finir, il est possible de crer une ACL la fin ou au dbut du fichier qui ressemble cela :
acl MesServeurs { 192.168.0.1; 192.168.0.2; }; # Serveur N1 # Serveur N2

Et dutiliser cette ACL comme ceci :

7 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

allow-transfer { MesServeurs; };

Historique des modifications


Version 0.1 0.2 0.3 0.31 0.4 0.5 0.6 Date Commentaire 29/11/04 Cration par Tony GALMICHE 03/12/04 Mise jour 06/01/05 Mise jour suite installation serveur Pentium Pro 200 14/01/05 Suppression du Sommaire 09/02/05 Mise jour du chapitre Principe de fonctionnement de la recherche de noms 25/07/06 Ajout chapitre Tester la rsolution des noms Mise jour du chapitre Installer un serveur secondaire esclave et ajout 19/06/07 chapitre Remarques sur les fichiers de configuration

Commentaires
MERCI
Amaury (non vrifi) - 07/09/2011 - 14:55

Ton petit tuto est simple et concis. D'une efficacit redoutable. J'ai pu mettre en place un petit serveur de nom dans mon rseau local en l'espace de 10 minutes (montre en main) Merci encore.

J'en profite pour signaler ce que j'ai pris pour coquille : dans la section "Fichier de configuration secondaire" -> tu as tap excalve au lieu de esclave, dans le "Refresh" de ta zone.

Bonne continuation, et je te rassure, ton petit pense bete est utilis par beaucoup beaucoup beaucoup de monde ! A une prochaine.

BIND QUI SORT DE SUITE


Visiteur (non vrifi) - 30/06/2011 - 12:32

Hello, Tout d'abord merci pour cet article. Claire et facile comprendre et lire J'ai donc mis en place cela. J'avais un Debian qui me sert de FW et mon serveur interne. Un ping www.google.fr depuis l'interne ne passe pas car la rsolution DNS n'est pas oprationnelle. Par contre juste aprs le aptitude install bind9 la rsolution fonctionne. Pourtant j'ai pas cre de zone ou de forwarders. Mes fichiers du serveur ne font rfrence aucun DNS externe. Du coup je ne comprends pas comment Bind fait pour sortir en direct. Grrrrrrrrrr Auriez-vous une ide ? D'avance merci

PROBLEM DE PING

8 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

trace (non vrifi) - 20/06/2011 - 13:26

bonjour , j'ai instal debian sur une machine virtuelBox , j'ai suivi le tuto jusqua la fin je relance bind9 j'ai pas d'erreur , mais quand je ping par exemple "pglinux" j'ai un message d'erreur "unknow host pglinux" mais j'arrive a ping google donc je vois pas d'ou sa peut venir le probleme

merci d'avance..

PROBLEM DE PING
trace (non vrifi) - 20/06/2011 - 13:25

bonjour , j'ai instal debian sur une machine virtuelBox , j'ai suivi le tuto jusqua la fin je relance bind9 j'ai pas d'erreur , mais quand je ping par exemple "pglinux" j'ai un message d'erreur "unknow host pglinux" mais j'arrive a ping google donc je vois pas d'ou sa peut venir le probleme

merci d'avance..

EXCELLENT.. MERCI
quenenni - 03/12/2009 - 05:22

Que de choses qui sclairent pour moi sur la comprhension du DNS. Je me suis lanc dedans, et aprs avoir corrig quelques erreurs que javais faites en recopiant, cela fonctionne comme un charme. Excellent davoir son nom de domaine interne. Merci et merci. Ps : faire attention quand on fait un copier coller pour le fichier db.mondomaine.inv du site vers lordi. La ligne : @ IN SOA pgdebian.mondomaine.com. root.mondomaine.com. ( se met sur 2 lignes et cre un problme au dmarrage de bind : "dns_rdata_fromtext : /etc/bind/db.mondomaine.inv:2 : near eol : unexpected end of input" La remettre sur une ligne et le problme sera parti.

PROBLEM DE PING
trace (non vrifi) - 20/06/2011 - 13:24

bonjour , j'ai instal debian sur une machine virtuelBox , j'ai suivi le tuto jusqua la fin je relance bind9 j'ai pas d'erreur , mais quand je ping par exemple "pglinux" j'ai un message d'erreur "unknow host pglinux" mais j'arrive a ping google donc je vois pas d'ou sa peut venir le probleme

merci d'avance..

9 sur 10

26/07/2013 21:51

Installation dun serveur DNS Bind 9 sur Debian | COAGUL

http://coagul.org/drupal/article/installation-d-serveur-dns-bind-9-sur-d...

INSTALLATION DUN SERVEUR DNS BIND 9 SUR DEBIAN


antichoc (non vrifi) - 24/01/2009 - 13:45

Bonjour, merci pour ce tuto ! Jai suivi la lettre ce dernier mais les commands hosts ne fonctionne pas malgr le syslog correct : Pour lIP : Host 99.2.168.192.in-addr.arpa not found : 3(NXDOMAIN) Pour le nom : Host esteban not found : 3(NXDOMAIN) Que dois-je faire ? Merci

MERCI !
Tony - 21/01/2009 - 21:03

De rien, ce fut un plaisir :-)

MERCI !
calamax - 21/01/2009 - 13:17

Aaaaaaaaahhhh MERCI MERCI MERCI MERCI MERCI MERCI !!! Jai galr avec loutil webmin qui ma mit un merd*er absolu dans ma config serveur DNS, jai tout remis 0, il men avait mis partout et en suivant votre topic a fonctionne merveille !!! Un grand merci vous pour votre excellent site et ce que vous fates pour la communaut qui dbute ! :-) Que le matre pingouin vous bnisse

INSTALLATION DUN SERVEUR DNS BIND 9 SUR DEBIAN


frederic (non vrifi) - 07/11/2008 - 00:43

Bonjour, il peut tre judicieux de ne pas toucher au fichier de configuration principal de bind9, savoir /etc/bind/named.conf et de faire sa configuration plutt dans le fichier /etc/bind /named.conf.local, ceci afin dviter de perdre les modifications lors dune mise niveau de lOS comme lors du passage de Ecth Lenny. PS : je viens de mettre un petit serveur dns local en place et a fonctionne, merci pour ce tutoriel limpide.

suivant

dernier

10 sur 10

26/07/2013 21:51