====== Prérequis ====== Avant toute tentative de gestion DNS de votre nom de domaine, il vous est nécessaire d'avoir un contrôle total sur ce dernier. Un serveur DNS exige une machine sous Linux avec accès root. Ce document décrit la marche à suivre sous distribution **Debian Squeeze**, de légères modifications devront, peut-être, être faites sous d'autres distributions. ====== Installation ====== **BIND9** (pour [[http://en.wikipedia.org/wiki/BIND|Berkeley Internet Name Daemon]]) reste le standard en terme de serveur et de gestion DNS. La version 10 étant toujours en cours de développement, nous nous pencherons exclusivement sur la 9. __Exécuter la commande suivante dans le terminal de votre session__ (sous **root**, rappelons-le): aptitude install bind9 dnsutils Le paquet **dnsutils** est optionnel mais est fortement recommandé pour la suite. Acceptez l'installation des diverses dépendances qui pourraient apparaitre et passez à l'étape suivante: la __configuration__. ====== Configuration ====== La configuration du serveur DNS passe par plusieurs fichiers, détaillés ci-dessous: ^ Fichier ^ Localisation ^ Description ^ | **resolv.conf** | /etc/resolv.conf | Contient l'adresse IP de votre serveur et des DNS secondaires. | | **named.conf** | /etc/bind/named.conf | contient les configurations principales de votre serveur DNS. | | **named.conf.local** | /etc/bind/named.conf.local | Permet de définir les zones relatives à vos domaines assurant leurs résolutions par votre serveur DNS. | | **named.conf.options** | /etc/bind/named.conf.options | Permet de définir de nombreuses options sur votre serveur DNS. | | **db..ext** | /etc/bind/zones/db..ext | Fichier de configuration principal d'un domaine (NS, SOA, CNAME etc.) | | **x.x.x.x.in-addr.arpa** | /etc/bind/zones/x.x.x.x.in-addr.arpa | Fichier définissant la zone de reverse de l'adresse IP de votre machine. | === resolv.conf === FIXME\\ **resolv.conf** permet de définir des adresses de serveurs de noms nécessaires à la résolution des adresses IP.\\ Son contenu est généralement déjà généré à l'installation de votre distribution par la société hébergeant votre machine. L'édition de ce fichier est destinée aux utilisateurs avancés ! N'effacez ou n'éditez pas son contenu sans en avoir fait une copie au préalable ! __Ouvrez le fichier avec la commande__: nano /etc/resolv.conf __Par défaut, son contenu est le suivant__: nameserver 127.0.0.1 nameserver x.x.x.x La __deuxième ligne__ correspond, fréquemment, à l'adresse **reverse** d'un DNS secondaire de votre société d'hébergement, il n'est pas conseillé de la supprimer.\\ __Ajoutez à la fin du fichier__: search nameserver nameserver __Exemple__: search exampledomain.com nameserver 91.121.28.186 nameserver 213.186.33.199 Le **DNS secondaire** (ici 213.186.33.199) est généralement fournit par la société hébergeant votre domaine. //Pour une aide plus complète sur la gestion de ce fichier, veuillez vous référer à cet [[http://linux.die.net/man/5/resolv.conf|article]].// === named.conf === **named.conf** contient les configurations principales de votre serveur DNS. __Ouvrez le fichier avec la commande__: nano /etc/bind/named.conf **Avant toute modification, prenez compte du commentaire d'avertissement**: If you are just adding zones, please do that in /etc/bind/named.conf.local Passez donc à la configuration du fichier **named.conf.local** //Pour une aide plus complète sur la gestion de ce fichier, veuillez vous référer à cet [[http://wiki.debian.org/Bind9#named.conf_File|article]].// === named.conf.local === **named.conf.local** permet de définir les zones relatives à vos domaines assurant leurs résolutions par votre serveur DNS.\\ __Ouvrez le fichier avec la commande__: nano /etc/bind/named.conf.local __Puis ajouter une zone correspondant à votre nom de domaine__: zone ".ext" { type master; file "/etc/bind/zones/db..ext"; allow-transfer {"none";}; }; __Exemple__: zone "exampledomain.com" { type master; file "/etc/bind/zones/db.exampledomain.com"; allow-transfer {"none";}; }; * **zone** définit votre nom de domaine complet. * **type master** définit le type de votre domaine. * **file** définit le chemin du fichier contenant toutes les informations relatives à votre domaine. * **allow-transfer** définit si votre domaine peut être transféré par une adresse ou un domaine spécifique ("none" indique qu'il ne peut pas être tranférable). //Pour une aide plus complète sur la gestion de ce fichier, veuillez vous référer à cet [[http://wiki.debian.org/Bind9#named.conf.local_File|article]].// === named.conf.options === **named.conf.options** permet de définir de nombreuses options sur votre serveur DNS. //Voir [[http://wiki.debian.org/Bind9#File_named.conf.options|cet article]]//\\ === db..ext === **db..ext** correspond au fichier de configuration principal de votre domaine. Si votre domaine est __exampledomain.com__ alors le fichier sera __db.exampledomain.com__. __Créez et ouvrez le fichier avec les commandes__ (//en prenant comme exemple le domaine **exampledomain.com**//): touch /etc/bind/zones/db.exampledomain.com nano /etc/bind/zones/db.exampledomain.com __Un contenu typique se présente comme ceci__: $TTL 12H $ORIGIN exampledomain.com. @ IN SOA servername.com. webmaster.exampledomain.com. ( 2012021401 ; Serial (yyyy mm dd rev) 6H ; Refresh 10M ; Retry 2W ; Expire 8H ; Minimum TTL ) IN NS servername.com. IN NS ns.hoster.com. IN MX 10 mail.exampledomain.com. exampledomain.com. IN A 91.121.28.186 ns IN A 91.121.28.186 mail IN A 91.121.28.186 www IN CNAME exampledomain.com. ftp IN CNAME exampledomain.com. * **$TTL** (Time To Live) : Définit la durée pendant laquelle l'enregistrement sera conversé en cache par les DNS. * **$ORIGIN** : Nom de domaine complet. * **servername.com.** : Nom pleinement qualifié du serveur de nom. * **webmaster.exampledomain.com.** : Adresse mail de l’administrateur du domaine (l'arobase doit être remplacer par un point). * **Serial** : Numero de série permettant au serveur secondaire de savoir quand l'enregistrement doit être mis à jour. Il s'écrit par convention de la façon suivante **AnnéeMoisJourRevision**, ce qui donne par exemple **2012021401** (14 février 2012 révision 1). Le numéro de révision doit être incrémenté A CHAQUE modification du fichier. * **Refresh** : Fréquence à laquelle le serveur secondaire vient consulter de nouveau le serveur primaire (rafraichissement) (ici 6 heures). * **Retry** : Délai au bout duquel le serveur secondaire tente de reconsulter le serveur primaire si la dernière tentative à échouer (ici 10 minutes). * **Expire** : Durée après laquelle il considérera que le serveur primaire a expiré (retiré du service) (ici 2 semaines). * **Minimum TTL** : Durée de vie minimum du cache (ici 8 heures). * **NS** : Noms des serveurs de nom gérant le domaine. Le premier étant la machine elle-même, le deuxième est le host secondaire (DNS) fourni par l'hébergeur de votre domaine. * **MX** : Adresse des relais pour les emails. * **A** : Enregistrement associant un nom à une adresse IP. * **CNAME** : Alias renvoyant au nom de domaine principal (utilisé pour créer des sous-domaines et configuré via un Virtual Host). __Exemple__:\\ Pour le domaine **inyourface.net** ayant pour serveur de nom **ks25090.kimsufi.com** (IP: 91.121.28.186), le host secondaire **ns.kimsufi.com** fournit par la société d'hébergement du domaine et une adresse email d'administration en **owner@inyourface.net**: $TTL 12H $ORIGIN inyourface.net. @ IN SOA ks25090.kimsufi.com. owner.inyourface.net. ( 2012021405 ; Serial (yyyy mm dd rev) - Revision 5 6H ; Refresh 10M ; Retry 2W ; Expire 8H ; Minimum TTL ) IN NS ks25090.kimsufi.com. ; Host primaire IN NS ns.kimsufi.com. ; Host (DNS) secondaire IN MX 10 mail.inyourface.net. ; Relais email inyourface.net. IN A 91.121.28.186 ; Définition du domaine par l'adresse IP ns IN A 91.121.28.186 ; Définition du ns.inyourface.net par l'adresse IP mail IN A 91.121.28.186 ; Définition du mail.inyourface.net par l'adresse IP www IN CNAME inyourface.net. ; Définition de l'alias www.inyourface.net ftp IN CNAME inyourface.net. ; Définition de l'alias ftp.inyourface.net (accès ftp) forum IN CNAME inyourface.net. ; Définition de l'alias forum.inyourface.net (espace communautaire) www.inyourface.net. CNAME inyourface.net. ; Sous-domaine www pleinement déclaré (parfois nécessaire à son bon fonctionnement) === x.x.x.x.in-addr.arpa === **x.x.x.x.in-addr.arpa** correspond au fichier définissant la zone de reverse de l'adresse IP de votre machine. Si l'adresse IP de votre machine est __91.121.28.186__ alors le reverse est __186.28.121.91__ (l'inverse), le fichier de configuration sera donc __186.28.121.91.in-addr.arpa__. __Créez et ouvrez le fichier avec les commandes__ (//en partant du principe que le reverse est **186.28.121.91**//): touch /etc/bind/zones/186.28.121.91.in-addr.arpa nano /etc/bind/zones/186.28.121.91.in-addr.arpa __Un contenu typique se présente comme ceci__ (//reprenant l'exemple du domaine **inyourface.net**//): $TTL 12H @ IN SOA ks25090.kimsufi.com. owner.inyourface.net. ( 2012021401 ; Serial (yyyy mm dd rev) - Revision 1 8H ; Refresh 30M ; Retry 4W ; Expire 8H ; Minimum TTL ) IN NS ks25090.kimsufi.com. ; Host primaire IN NS ns.kimsufi.com. ; Host (DNS) secondaire IN PTR inyourface.net. ; Zone(s) gérée(s) * **PTR** : Précise les zones (domaines) gérées par cette IP. ====== Tests des configurations ====== Avant d'indiquer à BIND9 de prendre en compte nos nouvelles zones, quelques tests s'imposent. === named.conf.local === __Vérifiez la configuration du fichier **named.conf.local** via la commande__: named-checkconf /etc/bind/named.conf.local **Si aucun message d'erreur n'apparait c'est que la configuration est correcte.** Si le fichier **named.conf** à été modifié, vous pouvez réitérez la commande afin de le vérifier également === db..ext === __Vérifiez la configuration du fichier de votre domaine via la commande__: named-checkzone domaine fichier_zone_domaine __Exemple__: named-checkzone exampledomain.com db.exampledomain.com __Execution de la commande__: zone domaine/IN: load serial XXXXXXXX OK **Si un message de ce type apparait alors la configuration du fichier est correcte.** === x.x.x.x.in-addr.arpa === Même procédé que __précédemment__. === Relancement de BIND9 === **__Lorsque tous les fichiers de configurations ont été validés, nous pouvons forcer BIND9 a les prendre en compte via la commande__**: /etc/init.d/bind9 reload ====== Tests du serveur DNS ===== Il est nécessaire de vérifier à présent que le serveur DNS répond correctement aux demandes extérieures. __Testez la résolution de domaine via la commande__: nslookup exampledomain.com. servername.com __Exemple__: nslookup inyourface.net. ks25090.kimsufi.com __Execution de la commande__: Server: ks25090.kimsufi.com Address: 91.121.28.186#53 Name: inyourface.net Address: 91.121.28.186 **Si un message de ce type apparait alors la résolution est correcte.** __Testez la résolution inverse (reverse)__: nslookup 91.121.28.186 ks25090.kimsufi.com **nslookup** nécessite que le paquet **dnsutils** soit installé. __On interroge le serveur secondaire afin de s'assurer qu'il a bien pris en compte le fichier de résolution du domaine__: dig inyourface.net +nssearch __Execution de la commande__: SOA ks25090.kimsufi.com owner.inyourface.net. XXXXXXXXXX [...] from server ks25090.kimsufi.com in 31 ms. SOA ks25090.kimsufi.com owner.inyourface.net. XXXXXXXXXX [...] from server ns.kimsufi.com in 22 ms. **Si un message de ce type apparait alors la résolution est correcte.** Le serveur secondaire peut mettre jusqu'à plusieurs jours pour prendre en compte le fichier de résolution de votre domaine. ====== Conclusion ===== FIXME\\ boring mode: on