Accueil

Configuration DNS, 2ème partie : serveur de Zone

Par Serge.

Configuration avancé d'un serveur named : gestion des zones masters et slaves.

Ce document est sous licence Licence pour Documents Libres de la guilde des doctorants.

Sommaire

Préface

Pour cet article, je considère que vous avez lu la 1ère partie, Configuration DNS, serveur cache, qui permet déjà de comprendre les fichiers de zones et donne la configuration minimale d'un serveur DNS. Sans cette configuration minimale votre serveur DNS ne fonctionnera pas.

J'explique dans cet article comment configurer une zone personnelle pour un serveur primaire et secondaire. Je n'explique pas les zones inverses, ni la sécurité que l'on peut ajouter sur les zones que notre serveur va contenir. Ces parties seront vu dans un 3ème article “configuration avancée”.

Un serveur DNS pour mon domaine.

Nous prenons ici un exemple de configuration pour le domaine slackware-fr.org. Remplacez bien sûr avec votre propre domaine.

Votre serveur DNS doit, pour pouvoir fonctionner, avoir une adresse IP fixe sur l'Internet. De plus votre domaine doit être enregistré chez un registar (Gandi, Namebay, ou tout autre registar) et lors de l'enregistrement du domaine vous devez fournir l'IP du serveur de nom en serveur primaire ainsi que l'IP d'un serveur secondaire. La plupart des registars propose un serveur secondaire gratuitement à parti du moment où vous déposez votre domaine chez eux.

Nous détaillons tout d'abord la configuration du serveur primaire, celle du secondaire étant triviale (voir plus bas dans l'article).

Le fichier /etc/named

On reprend le fichier déjà créé dans l'article “DNS cache”.

Pour rappel, voici ce qu'il doit donc déjà contenir:

options {
       directory "/var/named";
       /*
       * If there is a firewall between you and nameservers you want
       * to talk to, you might need to uncomment the query-source
       * directive below. Previous versions of BIND always asked
       * questions using port 53, but BIND 8.1 uses an unprivileged
       * port by default.
       */
       // query-source address * port 53;
 };
 
 //
 // a caching only nameserver config
 //
 zone "." IN {
       type hint;
       file "caching-example/named.ca";
 };
 
 zone "localhost" IN {
       type master;
       file "caching-example/localhost.zone";
       allow-update { none; };
 };
 
 zone "0.0.127.in-addr.arpa" IN {
       type master;
       file "caching-example/named.local";
       allow-update { none; };
 };

On ajoute alors dans ce fichier l'entrée pour notre fichier de zone slackware-fr.org:

 zone "slackware-fr.org"
    { 
    type master 
    file "zone/slackware-fr.org"
    } 

L'ajout de zone est très simple comme vous pouvez le voir. Il suffit de dire quelle zone ce serveur va “servir”, le mot clef zone. Indiquer si nous si sommes le serveur d'autorité pour cette zone, le mot clef type master. Et d'indiquer le fichier contenant les informations de la zone, le mot clef file.

Voyons maintenant ce que doit contenir ce fichier de zone.

Le fichier de zone de mon domaine.

Nous devons donc créer le fichier de zone de notre domaine slackware-fr.org.

Voyons le fichier, puis expliquons le:

 $TTL 3D 
@         IN     SOA     ns1.slackware-fr.org. serge.slackware-fr.org. ( 
                         2008091801; serial 
                         86400 ; refresh 
                         3600 ; retry 
                         3600000 ; expire 
                         604800 ; default_ttl 
                         ) 
 
@                       IN      NS          ns1.slackware-fr.org. 
@                       IN      NS          ns6.gandi.net.
@                       IN      MX    50    mail.slackware-fr.org.
@                       IN      MX    100   mail2.slackware-fr.org.


                300     IN      A          213.186.60.118
mail2           300     IN      A          213.186.67.212
mail            300     IN      CNAME      ema.slackfr.org.

www             300     IN      CNAME      ema.slackfr.org.
svn             300     IN      CNAME      ema.slackfr.org.
forum           300     IN      CNAME      ema.slackfr.org.
wiki            300     IN      CNAME      ema.slackfr.org.

Cela peut vous paraitre très “barbare” mais en fait rien n'est très compliqué. On peut découper ce fichier en deux parties :

  1. L'en-tête : qui commence au début du fichier $TTL et se finit à la ).
  2. Les enregistrements de la zone : le reste du fichier.

Détail de l'en-tête.

Nous l'avons déjà vu dans l'article précédent mais voici ce qu'elle doit contenir obligatoirement:

Le bloc suivant défini tous les autres paramètres "techniques et administratifs” de la zone, de la forme :

@         IN     SOA     dns_primaire. adresse_mail. ( 
                         xxxxxxxx; serial 
                         xxxxx; refresh 
                         xxxxx; retry 
                         xxxxx; expire 
                         xxxxx; default_ttl 
                         ) 

Ce chiffre est particulièrement important. A chaque fois que vous modifiez quoi que ce soit dans un fichier de zone, vous devez impérativement incrémenter ce numéro, autrement les changements ne seront pas pris en compte par le reste du monde et particulièrement par le serveur secondaire. C'est ce numéro, s'il est incrémenté, qui indique au reste du monde que votre zone a subit un changement et que donc les autres serveurs DNS doivent redemander la zone à votre serveur pour prendre en compte ces changements.

On a l'habitude de suivre une règle simple pour être sûr d'incrémenter ce numéro de version, on le compose par la suite des chiffres de l'année en cours, mois, jour et le nombre de changements effectués ce jour-là :

AAAAMMJJNN

Donc par exemple si je modifie la zone le 10 juillet 2008, je vais mettre 2008071001. Si le même jour je fais une autre modification alors j'incrémente seulement la partie NN, c'est à dire 2008071002.

Cette règle d'incrémentation n'est pas du tout obligatoire mais a été largement adoptées à travers le monde et je vous encourage vivement de faire de même.

Enregistrement de la zone.

Tout les enregistrements d'une zone suivent cette syntaxe:

 hôte_ou_wildcard     (ttl)     classe     type     (priorité_si_besoin)    valeur

Voici les explications de ces champs, puis en-dessous quelques exemples pour mieux comprendre. Par défaut nous n'utilisons pas de TTL pour les enregistrements (voir la remarque au-dessus pour le TTL dans l'en-tête de zone).

Détaillons alors les exemples de notre zone pour mieux comprendre:

@      IN      NS      ns1.slackware-fr.org. 
@      IN      NS      ns6.gandi.net. 

Nous indiquons ici que les deux serveurs DNS (type NS) de la zone (wildcard @) slackware-fr.org sont ns1.slackware-fr.org et ns6.gandi.net.

@     IN      MX      50       mail.slackware-fr.org. 
@     IN      MX      100      mail2.slackware-fr.org. 

Nous indiquons ici que les deux serveurs de Mail (type MX) de la zone (wildcard @) slackware-fr.org sont : mail.slackware-fr.org avec la priorité 50 et mail2.slackware-fr.org avec la priorité 100.

Cela veut dire que tout mail du type xxxxxx@slackware-fr.org doit être envoyé en priorité sur mail.slackware-fr.org et que si ce serveur ne répond pas on l'envoie alors sur le serveur mail2.slackware-fr.org.

Faites bien attention, c'est la priorité la plus basse qui indique le premier serveur à contacter.

 mail2      IN      A      213.186.60.118

Nous indiquons ici que l'hôte mail2.slackware-fr.org correspond à l'adresse IP 213.185.60.118.

 www      IN      CNAME     ema.slackfr.org 

Nous indiquons ici que l'hôte www.slackware-fr.org correspond à l'hôte ema.slackfr.org.

On aurait pu aussi le définir en type A et mettre l'adresse IP correspondant à ema.slackfr.org comme valeur. Mais dans ce cas, si la machine ema.slackfr.org change d'adresse IP on doit modifier la valeur de www pour la zone slackware-fr.org. Il est plus simple de modifier à un seul endroit plutôt qu'à plusieurs endroits.

       IN      A      213.186.60.118

Vous remarquerez que le 1er champ est vide. Cela indique tout simplement que si l'on demande slackware-fr.org directement (sans spécifier d'hôte) on aura l'IP 213.186.60.118. Ce qui permet de taper dans votre navigateur http://slackware-fr.org sans le "www"..

Voici un autre exemple qui n'est pas dans notre zone mais qui définit le type TXT :

 info      IN      TXT      Zone du site du portail francophone Slackware 

Indique que info a comme valeur “Zone du site du portail francophone Slackware”. Aucune application n'a besoin de ce type d'enregistrement, mais il peut être utile pour donner des informations sur une zone, etc...

Il existe d'autres types d'enregistrements que ceux vu ci-dessus, mais ils sont très rarement utilisés sur l'Internet. Consultez les RFC sur les DNS si vous souhaitez les connaitre.

Serveur secondaire.

Tout ce que nous avons vu au dessus concerne la configuration du serveur primaire de votre zone. Il faut généralement déclarer lors de l'enregistrement de votre domaine chez un registar un serveur secondaire (et parfois des tertiaires etc... mais la configuration est exactement identique à celle d'un serveur secondaire, et seul le secondaire est obligatoire). Il faut donc, vous vous en doutez, le configurer lui aussi.

Le serveur secondaire sert tout simplement à répondre aux requêtes à la place du primaire pour ne pas surcharger le serveur primaire ou si le serveur primaire est hors service temporairement.

Il doit contenir tout d'abord la configuration de base vue dans l'article “serveur cache” comme n'importe quel serveur DNS qu'il soit primaire ou secondaire. Et il doit aussi contenir dans son fichier named.conf les zones pour lesquelles il est serveur secondaire sous la forme :

 zone "slackware-fr.org"
      { 
      type slave 
      file "zone/slackware-fr.org"
      masters {ip_serveur_primaire;} 
      } 

Et rien d'autre. Pas de fichier de zone, ni rien. Les fichiers de zones seront créés automatiquement en interrogeant le serveur primaire directement via la directive masters.

Et si ça marche pas?

Vous pouvez alors faire exactement les mêmes vérifications que celles données dans l'article "serveur cache". La seule différence est que si vous faites les tests nslookup sur le serveur primaire vous ne devez pas avoir de réponse “Non-authoritative”.

Thèmes : #articles #logiciels #reseau #serge

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.