Explications sur le principe des DNS : Fonctionnement du service de noms

Le service de noms utilise une base de données répartie et le modèle client-serveur. Le protocole utilisé est décrit dans les documents RFC1034 DOMAIN NAMES - CONCEPTS AND FACILITIES, RFC1035 DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION et RFC1912 Common DNS Operational and Configuration Errors.

Installer un serveur de nom (DNS) avec Bind (Par www.sos-dedie.com inaccessible le 30/12/2006)

Gérer un serveur de nom sur son serveur dédié.

Nous allons voir ici l'installation d'un serveur de Nom (DNS). Même si un tel serveur n'est franchement pas utile pour gérer quelques noms de domaines. Pour rappel, on nomme aussi DNS l'ensemble du système qui permet de transformer un nom (www.domaine.com) en adresse I.P.. Dans ce cas, DNS signifie Domaine Name Service.

Nous allons nous intéresser au Domaine Name Server que nous allons installer via debian mais l'installation diffère peu entre toutes les versions de Linux.

Le principe de fonctionnement

Généralement les serveurs de noms marchent par deux. Un primaire et un secondaire (la copie du primaire). Ceci principalement pour l'intégrité des données et avoir une roue de secours en cas de panne du serveur primaire.

Les informations des DNS sont regroupées par Zone, une zone peut être primaire ou secondaire. Voyons un peu plus loin un fichier de configuration en installant Bind.

Nous allons installer la version 9 de Bind qui est la plus sécurisée

apt-get install bind9
cd /etc/bind/
vi named.conf

Le fichier named.conf contient les informations de toutes les zones. L'installeur nous a normalement configuré par défaut plusieurs zones de ce type

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

Le nom de la zone (ici localhost) doit être contenu entre guillemet, il s'agit du nom que l'on tape par exemple dans un navigateur. Par exemple votredomaine.com

Le type définit si la zone est primaire ou secondaire, dans ce cas le paramètre master définit une zone primaire.

Enfin le paramètre file indique un fichier contenant tous les autres paramètres de la zone.

Par conséquent, on ajoutera la gestion de notre nom de domaine en ajoutant une zone de ce type

zone "sos-dedie.com" {
        type master;
        file "/etc/bind/db.sos-dedie.com";
};

Donc c'est très simple.

On rajoute la gestion du serveur DNS primaire et secondaire, avec l'autoréplication de Bind

Note explicative :

La directive allow-transfer permet d'autoriser les transfers de zones à partir de telle ou telle adresse IP. D'une manière générale, il faut renseigner l'adresse Ip du Serveur Primaire lui même pour pouvoir tester le transfert de zones, notamment avec l'outil en ligne de commande Dig, ainsi que l'adresse Ip du/des Serveur(s) De Nom Secondaire(s) afin que celui-ci/ceux-ci puisse(nt) se mettre à jour à partir des données de zones du Serveur Primaire.

La directive notify yes quant à elle, permet au Serveur DNS Primaire de notifier au(x) Serveur(s) de Nom Secondaire(s) que sa configuration a changé et qu'il(s) doi(ven)t se mettre à jour en conséquence.

On obient donc une zone master copiable vers un esclave :

zone "sos-dedie.com" {
        type master;
        notify yes;
        allow-transfer { 195.162.49.130; }; 
        file "/etc/bind/db.sos-dedie.com";
};

Configuration d'une zone.

Maintenant que nous avons déclaré notre zone il faut donner les renseignements sur les services de cette zone dans le fichier db.sos-dedie.com

Tout d'abord commence une déclaration

$TTL 86400

Cette variable indique simplement la durée de vie de tout enregistrement (si une instruction contraire dans l'enregistrement n'est pas mentionnée)

@       IN      SOA     ns1.sos-dedie.com. postmaster.sos-dedie.com. (
					2005032101      ;Serial : Ymd+modificationN°x du jour
                       			604800          ;Refresh
                       			86400           ;Retry
                       			2419200         ;Expire
                       			604800          ;Cache TTL
                                        )

Cette partie indique des paramètres généraux. Le signe @ correspond au nom de la zone. Ensuite nous déclarons le nom de notre serveur DNS et l'adresse email du responsable. Veuillez noter que le nom du serveur se termine par un point et que l'adresse du responsable ne contient pas d'arobase, celui-ci est remplacé par un point.

Le serial est un nombre, par convention la date à l'envers permettant aux autres serveurs de reconnaître une nouvelle configuration. Si vous changez le fichier, n'oubliez pas de remettre ce serial à jour. Les autres champs : Refresh, Retry, Expire, et Cache TTL indique aux serveurs esclaves divers paramètres de rafraîchissement.

@       IN      NS      	ns1.sos-dedie.com.
 @       IN      NS             ns6.gandi.net.

Cette ligne indique que pour cette zone (pour rappel @ remplace sos-dedie.com) il existe un serveur de nom qui s'appelle ns1.sos-dedie.com. Et un autre nommé ns6.gandi.net. (registar connu) qui sert de serveur secondaire.

@	IN        A       84.244.3.78

Ensuite on indique l'adresse IP effective du nom de domaine sos-dedie.com, pour une adresse IPv6 (nouvelle version du protocole IP) vous devez remplacer A par AAAA

@	IN	MX      5 mail

Enfin, on indique que l'adresse du serveur de courrier sera mail.sos-dedie.com et que celui-ci a une priorité de 5. On pourrait rajouter d'autres adresses de serveurs de courrier en créant d'autre ligne identique et en changeant la priorité et l'adresse. Les priorités permettent d'essayer l'accès à plusieurs serveurs de courrier dans l'ordre de la priorité.

Enfin nous finissons en indiquant que mail et www ont une adresse IP

www     IN      A       84.244.3.78
 mail    IN  	 A       84.244.3.78

Remarquez que pour ces deux lignes on ne mentionne pas www.sos-dedie.com. Ou mail.sos-dedie.com. En effet, Bind rajoute automatiquement le nom de la zone si la mention de la colonne de gauche ne contient pas de . à la fin. Comme ici c'est le cas, bind interprete donc www comme étant www.sos-dedie.com.

Comme d'habitude on fait un restart du service

/etc/init.d/bind9 restart

On peut regarder ce que nous dit Bind dans le syslog

tail /var/log/syslog

Et enfin on peut tester la résolution des noms avec la commande host

apt-get install bind9-host
host www.yahoo.fr ns1.sos-dedie.com

Normalement, la commande nous renvoi quelquechose de ce genre

Using domain server:
Name: ns1.sos-dedie.com
Address: 84.001.2.8#53
Aliases:
 
www.yahoo.fr is an alias for www.euro.yahoo.akadns.net.
www.euro.yahoo.akadns.net has address 217.12.3.11

qui indique bien que le nom www.yahoo.fr a été résolu grâce à notre serveur de nom dont l'adresse est ns1.sos-dedie.com

Dernière étape

Il ne reste plus qu'à indiquer à notre registrar nos nouveaux serveurs de noms. Nous lui indiquons donc que le DNS primaire est maintenant ns1.sos-dedie.com. Comme il ne connaît pas du tout ce serveur de nom, il y a de forte chance qu'il vous demande également son adresse IP. Pensez également à utiliser et définir un DNS secondaire.

Faire des stats graphiques

Exercices :

D'autres ressources à propos du DNS géré par BIND