Stay tuned
Distribution DEBIAN « Tutoriaux dédiés aux distributions Debian «
Debian Tutorial - Configuration DNS - Bind 9
Posted by M. declercq on Oct. 3 2006, page edited by M. declercq on Jul. 11, (popular)
Ce tutorial aborde l'installation et la configuration de serveurs de noms ( Bind9 ) de façon à ce que vous puissiez gérer vous même les zones de vos domaines.
Avant propos
Ce tutorial traite de l'installlation et la configuration de serveurs DNS primaire et secondaire ainsi que la configuration d'un serveur de cache sur les distributions Debian et Ubuntu. Il peut, avec quelques adaptations, être mise en oeuvre sur les autres distributions, notamment : Red hat, Gentoo, Suze, Fedora....Note : Nous vous rappelons que toutes les commandes évoquées dans ce tutorial doivent être exécutées avec les privilèges de l'utilisateur root.
I. Installation de Bind 9
Sur la majorité des distributions GNU-Linux, c'est le démon named qui joue le rôle de serveur DNS. Sous les distributions Debian et dérivées, il est intégré dans le paquet Bind9.Sous les distributions Debian et Ubuntu, l'installation du démon named est relativement simple. Il suffit en effet d'exécuter la commande suivante dans un terminal :
$ apt-get install bind9Note : Si vous le désirez, vous pouvez aussi installer la documentation de Bind9 en installant le paquet bind9-doc.
Par ailleurs, il convient de s'assurer que le paquet suivant : dnsutils est installé sur votre système en exécutant la commande suivante :
$ dpkg -l dnsutilsCe qui doit retourné comme résultat :
ii dnsutils 9.3.4-2etch1 Clients provided with BINDSi vous n'obtenez pas ce résultat, c'est à dire que les deux premières lettres ne correspondent pas au résultat donné en exemple, vous devez installer ce paquet.
Note : Bien entendu, la version du paquet peut être différentes sur votre système.
II. Configuration d'un serveur de noms
1. En tant que serveur DNS primaire : Cette configuration permet de mettre en place un serveur DNS primaire ayant autorité sur une ou plusieurs zones et qui peut répondre à des requêtes.2. En tant que serveur DNS secondaire : Cette configuration permet de mettre en place un serveur DNS secondaire qui prendra le relais en cas de défaillance du serveur DNS primaire. Il peut lui aussi répondre à des requêtes.
3. En tant que serveur de cache : Un serveur de cache permet d'accélérer la connexion Internet. Il ne peut pas répondre directement à des requêtes et doit en conséquence les transmettre à un autre serveur DNS pour pouvoir ensuite répondre au client. La réponse que reçois le serveur est mise en cache ce qui permet un temp de réponse beaucoup plus rapide lors de prochaines requêtes identiques.
Comme pour le serveur Web Apache, Bind possède un fichier de configuration général nommé named.conf. Sur les distributions Debian et dérivées, ce fichier est situé dans le répertoire /etc/bind.
A. Les sections :
Le fichier de configuration named.conf est composé de plusieurs sections qui sont de la forme suivante :section {
variable valeur;
autre_variable autre_valeur;
};
Il existe plusieurs sortes de sections, les plus utilisées étant les sections options et zone, la première permettant de définir la configuration générale du serveur DNS et la seconde permettant de définir les zones d'un domaine.Exemple concret d'une section option :
options {
directory "/var/named";
};
D'une manière générale, cette section permet de définir l'emplacement de travail du démon named. Dans l'exemple ci-dessus, il s'agit du répertoire /var/named.Exemple concret d'une section zone :
zone "france-hosting.fr" IN {
type master;
file "france-hosting.fr.db";
};
Note : Comme vous avez pu le remarquer, nous avons rajouté la classe IN qui indique que la zone déclarée est une zone Internet. Si vous omettez cette classe, named considérera qu'il s'agit d'une zone Internet par défaut.Il existe d'autres classes, notamment HS et CH qui ne sont pas abordées dans le cadre de ce tutorial. En effet, ces classes ne sont que rarement utilisées.
D'autres types de sections peuvent être intégrées à la configuration de named. Ce faisant, dans la majorité des cas, les sections options et zone suffisent amplement à faire fonctionner correctement les serveurs DNS primaires et secondaires, et/ou encore, les serveurs de cache. Vous pouvez vous reporter à la documentation pour obtenir plus de précisions concernant les sections existantes et leur utilités.
B. Les directives :
Les sections zone contiennent plusieurs directives, notamment :master : qui permet d'indiquer à named qu'il s'agit d'un serveur DNS primaire ayant autorité sur la zone déclarée ;
slave : qui permet d'indiquer à named qu'il s'agit d'une zone esclave qui n'est autre qu'une replication d'une zone maître.
stub : Cette directive est quasi identique à la directive slave. Sa différence réside dans le fait que seuls les enregistrements de type NS sont mis à jour ;
forward : Une zone dans laquelle cette directive est incluse n'a qu'une fonction : re-diriger toutes les requêtes pour cette zone vers d'autres serveurs DNS ;
hint : Cette directive définie la zone racine. Cette zone est utilisée par named pour récupérer la liste la plus récente des serveurs DNS racine ;
Allow-transfer : Cette directive permet d'autoriser les transfers de zones à partir de telle ou telle adresse IP ;
notify yes : Cette directive permet au serveur DNS primaire de notifier au(x) serveur(s) de noms secondaire(s) que sa configuration a changé et qu'il(s) doi(ven)t donc se mettre jour ;
file : Cette directive permet d'indiquer à named l'emplacement d'un fichier d'enregistrement DNS. C'est ce fichier qui contiendra toutes les correspondances Noms --> Adresse Ip, Adresse Ip --> Noms. Le fichier d'enregistrement DNS contiendra aussi la définition des serveurs de noms et mail pour la zone concernée. Le chemin du fichier d'enregistrement DNS peut être absolu ou relatif par rapport au répertoire défini par la directive directory située dans la section options.
Note : Les directives présentées ci-dessus sont celles de base. Si vous désirez obtenir plus d'informations concernant les directives utilisables avec named, vous pouvez vous reporter à la documentation ( man named.conf ).
C. Les fichiers d'enregistrements DNS :
A chaque nom de domaine correspondent deux fichiers d'enregistrements DNS. Le premier correspond à la résolution de nom (Nom --> Adresse Ip). Le second correspond quand à lui à la résolution inverse (Adresse Ip --->; Nom). Ce dernier fichier fait usage d'une syntaxe assez particulière, il s'agit de l'adresse Ip (partie réseau inversée et qui se termine par le suffixe .in-addr.arpa.Exemple concret : Nous avons un réseau local composé de 5 machines. Ces machines possèdent chacune une adresse Ip de classe C :
- La machine www d'adresse Ip privée : 192.168.1.1 ;
- La machine mail d'adresse Ip privée : 192.168.1.2 ;
- La machine ftp d'adresse Ip privée : 192.168.1.3 ;
- La machine ns1 d'adresse Ip privée : 192.168.1.4 ;
- La machine desktop d'adresse Ip privée : 192.168.1.5.
Le nom inverse de la zone locale sera donc : 1.168.192.in-addr.arpa .
Note : Il n'est pas forcement utile de renseigner la zone inverse. C'est notamment le cas lorsque vous installez bind9 sur une machine ne disposant pas d'une adresse Ip fixe.
Dans le cadre de ce tutorial, nous définissons deux fichiers d'enregistrement DNS pour un domaine france-hosting.fr. Ces deux fichiers portent les noms suivants :
- france-hostinf.fr.db (fichier correspondant à la résolution de nom (Nom --> Adresse Ip) ;
- france-hosting.fr.dbrev (fichier correspondant à la résolution inverse (Adresse Ip --> Nom).
a. Le contenu des fichiers d'enregistrements DNS :
Les fichiers d'enregistrements DNS sont composés de plusieurs enregistrements qui sont de la forme :[nom] [TTL] classe type donnée
nom : correspond au nom DNS. S'il est absent, cet enregistrement prendra le nom du précédent ;
TTL : correspond à la durée de vie ( time to live ) en cache de cet enregistrement. En l'absence de cet enregistrement c'est la valeur de la première ligne ( $TTL ) du fichier d'enregistrement qui est prise en compte ;
classe : correspond au réseau de transport utilisé. Pour les réseau de type TCP/IP, il s'agit de la classe IN (Internet) ;
type : correspond au type d'enregistrement DNS qui peut être : - SOA : ( Start Of Authority ) que l'on trouve au début du fichier d'enregistrement et qui contient certaines informations générales concernant la zone ;
- NS : qui correspond à un serveur de noms ;
- A : qui correspond à la résolution de nom (Nom -->; Adresse Ip) ;
- PTR : ( PointeR ) qui correspond à la résolution inverse (Adresse Ip ---> Nom) ;
- MX : ( Mail eXchange ) qui correspond à un serveur de mail ;
- CNAME : ( Canonical NAME ) qui correspond à un alias d'une machine ;
- HINFO : qui permet de donner des renseignements matériels et logiciels sur la machine.
donnée : correspond à une donnée. Ce peut être notamment l'adresse Ip pour un enregistrement de type A ou le nom de la machine pour un enregistrement de type PTR.
1. La première entrée d'un fichier d'enregistrement DNS :
Chaque fichier d'enregistrement DNS doit obligatoirement commencer par une ligne de la forme :$TTL duréeCette ligne permet d'indiquer aux autres serveurs DNS la durée pendant laquelle il doivent conserver en cache les enregistrements de la zone concernée. La valeur durée peut être un nombre représentant la durée en secondes ou une chaîne de caractères composée de nombres suivies du de la lettre w pour semaine, d pour jour, h pour heure, m pour minute et enfin, s pour secondes.
Exemple concret :
Valeur définie en secondes :
$TTL 36000La même chose définie avec une chaîne de caractères :
$TTL 10hNote : Si cette ligne est absente, named utilisera la valeur TTL minimale spécifiée dans l'enregistrement SOA ( cf. paragraphe suivant ).
2. La deuxième entrée d'un fichier d'enregistrement DNS :
La deuxième entrée d'un fichier d'enregistrement DNS est l'enregistrement SOA. Cet enregistrement et très important et doit donc faire l'objet d'une attention particulière. Il est de la forme suivante :zone IN SOA nom_du_serveur_primaire adresse_mail_du_hostmaster (Avant de définir les correspondances, il convient d'attirer votre attention sur un point essentiel. Il ne faut surtout pas oublier de rajouter un point à la fin du nom de la machine et de l'adresse mail du hostmaster.
Numéro de série
Rafraîchissement
Nouvelle tentative
Expiration
TTL minimum
)
Pour exemple, si vous spécifiez : ns1.france-hosting.fr comme nom de machine sans le point à la fin, ce dernier ne sera pas FQND et sera donc automatiquement complété de la manière suivante :
ns1.france-hosting.fr.france-hosting.fr.Il en va de même pour l'adresse E-mail. Correspondances :
zone : valeur qui doit correspondre au nom de la zone décrite par le fichier d'enregistrement. zone peut être aisément remplacé par le caractère arobase (@) qui représente le nom de la zone décrite par le fichier d'enregistrement ;
IN : permet d'indiquer qu'il s'agit d'une zone Internet ;
Numéro de Série : Il s'agit d'une valeur numérique qui doit être incrémentée manuellement à chaque modification du fichier d'enregistrement. C'est notamment grâce à cette valeur qu'un serveur DNS secondaire saura qu'il y a eu une modification opérée sur le fichier d'enregistrement et qu'il doit donc se mettre à jour. Cette valeur numérique se compose de la manière suivante : YYYYmmddaa soit :
- YYYY : qui correspond à l'année ;
- mm : qui correspond au mois ;
- dd : qui correspond au jour ;
- aa : qui correspond au numéro de la modification. ( En effet, le fichier d'enregistrement peut être modifié plus d'une fois par jour).
Exemple concret :
Si nous sommes le 5 octobre 2006 et que nous avons modifié trois fois notre fichier d'enregistrements, la valeur numérique du numéro de série sera :
2006100503
Rafraîchissement : correspond à la durée en secondes au bout de laquelle un serveur DNS secondaire va vérifier si le numéro de série a été modifié. Si c'est le cas, le serveur DNS secondaire téléchargera le fichier de zone correspondant à partir du serveur DNS primaire ;
Nouvelle tentative : correspond au temps en secondes au bout duquel le serveur DNS secondaire essaiera une nouvelle mise à jour en cas d'échec du premier rafraîchissement ;
Expiration : correspond au temps minimum en secondes durant lequel les serveurs de noms doivent conserver en cache les réponses négatives à leurs requêtes provenant du serveur de noms ayant autorité sur cette zone. Une valeur de 3600 à 10800 secondes ( 1 à 3 heures ) est vivement recommandée. Une valeur supérieur à un jour peut causer des problèmes.
3. La troisième entrée d'un fichier d'enregistrement DNS :
Après l'enregistrement SOA se trouve un ou plusieurs enregistrement(s) NS qui désignent le ou les serveur(s) de nom de la zone. Ces enregistrements sont de la forme suivante :zone IN NS nom_du_serveur_de_nom
Correspondances :
zone : correspond au nom de la zone décrite dans le fichier d'enregistrement. Ce nom peut aussi être remplacé par le caractère arobase (@), comme au pour l'enregistrement SOA. Il peut aussi être omis. Dans ce dernier cas, sa valeur sera alors celle du champs zone de l'enregistrement précédent ( l'enregistrement SOA ou un enregistrement NS ) ;
IN : correspond à une zone Internet ;
nom_du_serveur_de_nom : permet de définir le serveur de noms. Sa valeur peut être simplement le nom d'un hôte ( ex : ns1 ) auquel sera automatiquement ajouté le nom de la zone ( ex : france-hosting.fr. ), ou un nom de serveur pleinement qualifié ( ex : ns1.france-hosting.fr. ). Dans ce dernier cas, il faudra là encore faire attention au point qui doit se trouver à la fin du nom FQND.
Exemple concret d'un enregistrement NS :
france-hosting.fr IN NS ns1.france-hosting.fr.qui est équivalent à :
@ IN NS ns1.france-hosting.fr.qui est équivalent à :
IN NS ns1.france-hosting.fr.Voilà pour ce qui est des enregistrements devant obligatoirement figurer dans nos deux fichiers d'enregistrements DNS.
Pour ce qui concerne la suite du contenu de ces deux fichiers, celui-ci diffère selon qu'il s'agisse du fichier france-hosting.db ou france-hostinf.fr.dbrev.
4. L'enregistrement MX :
L'enregistrement MX, comme mentionné ci-avant, correspond à un serveur de mail. Cet enregistrement apparaît seulement dans le fichier france-hosting.db. Il se situe juste après les enregistrements NS et se présente sous la forme suivante :zone IN MX priorité nom_du_serveur_de_mail
Correspondances :
zone : Suit les mêmes remarques que pour l'enregistrement NS vu précédement ;
priorité : permet d'indiquer la priorité du serveur. Il peut y avoir plusieurs enregistrement MX, chacun ayant une priorité différente. Le premier serveur de mail utilisé sera celui qui à la valeur la plus petite. S'il n'est pas opérationnel, ce sera le suivant...
nom_du_serveur_de_mail : permet de définir le nom du serveur de mail. Sa valeur peut être un nom d'hôte ou un nom pleinement qualifié ( cf. voir enregistrement NS ).
Exemple concret d'un enregistrement MX :
france-hosting.fr IN MX 10 smtp.france-hosting.fr.
5. Les enregistrements A et CNAME :
Comme l'enregistrement MX, les enregistrement A et CNAME concernent seulement le fichier france-hosting.db. Il ne doivent pas êtres présents dans un fichier d'enregistrement définissant la résolution inverse ( Adresse Ip --> Nom ).Les enregistrements A et CNAME permettent la résolution de nom ( Nom --> Adresse Ip ).
Exemple concret d'enregistrements A et CNAME :
ns1 IN A 82.216.188.XXXUn enregistrement A fait correspondre un nom canonique à une adresse IP. Ce nom peut être un nom d'hôte auquel sera automatiquement rajouté le nom de la zone, c'est le cas pour le premier enregistrement, ou un nom pleinement qualifié terminé par un point comme c'est le cas pour les autres enregistrements. Un enregistrement CNAME permet de définir un alias sur un nom canonique précédemment défini à l'aide d'un enregistrement A.
ns0.xname.org. IN A 195.234.42.1
ns1.xname.org. IN A 193.218.105.149
france-hosting.fr. IN A 82.216.188.XXX
mail.france-hosting.fr. IN A 82.216.188.XXX
ftp.france-hosting.fr. IN CNAME france-hosting.fr.
www.france-hosting.fr. IN CNAME france-hosting.fr.
Attention, pour tous ces enregistrements, vous devez suivre la règle suivante pour leur écriture : vous ne devez jamais placer un alias dans la partie droite d'un enregistrement, quel qu'il soit.
Exemple d'une mauvaise configuration :
france-hosting.fr. IN A 82.216.188.XXXDans cet exemple, le dernier enregistrement définit un alias ftp.france-hosting.fr. à l'aide d'un autre alias www.france-hosting.fr. . Cet enregistrement n'est pas bon.
www.france-hosting.fr. IN CNAME france-hosting.fr.
ftp.france-hosting.fr. IN CNAME www.france-hosting.fr.
Un autre exemple d'une mauvaise configuration :
@ IN NS ns1.france-hosting.frDans cet exemple, l'enregistrement NS défini un serveur de noms nommé ns1.france-hosting.fr. . Or, ce dernier est un alias sur le serveur nommé france-hosting.fr. . Vous ne devez jamais trouver un alias en partie droite d'un enregistrement comme c'est ici le cas pour l'enregistrement NS.
france-hosting.fr. IN A 82.216.188.XXX
ns1.france-hosting.fr. IN CNAME france-hosting.fr
6. Le fichier de résolution inverse :
A la suite d'un ou des enregistrement(s) NS dans un fichier de résolution inverse, dans le cadre de ce tutorial, il s'agit du fichier france-hosting.dbrev, nous devons ajouter des enregistrements PTR.Un enregistrement PTR correspond à la résolution inverse ( Adresse IP --> Nom ). Il est de la forme :
XXX IN PTR votredomaine.fr
Correspondances :
XXX : correspond à la partie réseau se trouvant après le dernier point de l'adresse Ip de la machine ;
IN : indique qu'il s'agit d'une zone Internet ;
PTR ( PointeR ) : correspond à la résolution inverse ( Adresse Ip ---> Nom );
Exemple concret : Nous avons un réseau local composé de 5 machines. Ces machines possèdent chacune une adresse Ip de classe C bien distincte:
- La machine www d'adresse Ip privée : 192.168.1.1 ;
- La machine mail d'adresse Ip privée : 192.168.1.2 ;
- La machine ftp d'adresse Ip privée : 192.168.1.3 ;
- La machine ns1 d'adresse Ip privée : 192.168.1.4 ;
- La machine desktop d'adresse Ip privée : 192.168.1.5.
Les enregistrements PTR que nous devons donc inclure dans notre fichier sont :
1 IN PTR www.france-hosting.fr.FIN DU TUTORIAL
2 IN PTR mail.france-hosting.fr.
3 IN PTR ftp.france-hosting.fr.
4 IN PTR ns1.france-hosting.fr.
5 IN PTR desktop.france-hosting.fr.
Une erreur, une incompréhension concernant ce tutorial ? N'hésitez pas à utiliser la fonction commentaire de notre portail et/ou à nous joindre directement en utilisant notre formulaire contact : Nous contacter
Adapté et Rédigé par M. Laurent DECLERCQ
v1.1 build 10072008.2009
Merci pour cette tentative d'explication, qui me paraît être la plus lisible pour moi jusqu'à maintenant. Et pourtant je cherche; forum, net etc ...
Ce listage complet avec commentaires est ce qu'il y a de plus pédagogique, même si je vais devoir relire, compte-tenu de mon incompétence dans le domaine informatique-réseau.
De plus c'est vraiment généreux de s'attaquer à l'explication pratique de Bind, qui demande de vrais prérequis dans le domaine réseau.
Merci encore et bonne continuation
(Je reviendrai, avec des questions ! lol !) Eric.
Bonjour,
Personnellement, je trouve ce tutoriel constructif, même si tous les points ne sont pas très clairs dans mon esprit (je ne suis pas non plus un pro de la config Bind). Encore bravo.
Je l'ai appliqué sur mon serveur que je viens de migrer en Ubuntu 7.10 et cela fonctionne très bien.
Cependant, j'ai quelques questions concernant les interractions entre BIND et DHCP. En effet, j'ai mis en place le serveur DNS et le serveur DHCP de manière à gérer les DNS Dynamiques (DHCP met à jour BIND lors de l'attribution d'une nouvelle IP). Cela semble fonctionner, j'ai suivi un tas de tutos que j'ai trouvé sur la toile mais j'ai un message bizarre comme quoi il ne parviens pas à créer les fichier journaux (*.jnl).
Je vais me repencher dessus et je reviendrais si j'y arrive pas
A bientôt
Re,
Je reviens avec certains commentaires concernant les informations sur la définition d'Alias au niveau du fichier de configuration DNS :
Après avoir fait mes tests, il s'avère qu'écrire :
pour la zone domlegacy.local
serveur A 192.168.3.1
www CNAME domlegacy.local.
ne fonctionne pas. En fait, l'alias doit pointer sur le nom donné à la machine et déclaré en enregistrement A :
serveur A 192.168.3.1
www CNAME serveur
En espérant que cela peut en aider quelques uns.
Bonjour,
Grand merci également pour ce tuto --> en un mot comme en cent : "super !" Merci pour l'implication et la volonté de partager vos connaissances. Cela en aidera (et en a déjà aidé visiblement) plus d'un (dont moi).
Une petite question toute bête : peut-on ajouter des lignes de commentaire dans un fichier db. ? J'ai tenté le "commentairage" (ça se dit ça ? Commentation ? Commentaire tout simplement ?) par les caractères # ; / ;[TAB] TXT en début de ligne, mais mon serveur DNS ne rédemarre pas correctement après chacun de ces essais.
D'avance mercu + encore bravo !
L. Grimonprez
Bonjour ;
Pour ajouter un commentaire, il vous suffit de le faire précéder d'un point virgule --> ;
Et super réactif en plus. Grand merci (une fois de plus). J'essaie ça demain, ce qui tombera parfaitement pour finir la semaine en beauté !