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.
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”.
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).
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.
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 :
$TTL
et se finit à la )
.Nous l'avons déjà vu dans l'article précédent mais voici ce qu'elle doit contenir obligatoirement:
$TTL
: l'indication du TTL (Time To Live), ou la durée de vie de la zone, exprimée en secondes par défaut, ou dans une autre unité si on la spécifie comme dans l'exemple, ici le D
spécifiant que l'unité est en jours, donc 3 jours pour notre exemple.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 )
dns_primaire
: mettre ici le nom du serveur faisant autorité pour la zone.adresse email
: email du responsable technique de la zone en remplaçant le “@” de l'email par un “.”serial
: le numéro de version de la zone. 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.
Refresh
: Temps en secondes d'attente du serveur secondaire avant de contrôler si le serveur primaire a subi une modification au niveau de sa zone. Sur 8 chiffres max.Retry
: Temps d'attente du serveur secondaire avant de faire à nouveau une demande si le serveur primaire n'a pas répondu à une requête. Sur 8 chiffres maximum.Expire
: Temps pendant lequel le serveur secondaire va conserver les données en cache. Si ce délai est dépassé et que le serveur secondaire n'a pas pu contacter le serveur primaire, il va alors considérer que les données qu'il a en cache ne sont plus fiable et ne pourra plus servir de serveur secondaire pour la zone tant qu'il n'aura pas réussi à contacter le serveur primaire. Sur 8 chiffres maximum.default_ttl
: Valeur par défaut de TTL
des enregistrements, c'est à dire le temps pendant lequel un serveur DNS
cache va conserver l'enregistrement. On peut spécifier les ttl
s au niveau de chaque enregistrement, mais d'une manière générale on définit ici un TTL
qui vaut pour tous les enregistrements qui n'ont pas de TTL
spécifique.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).
Hôte ou wildcard
: indique si on défini une machine ou un ensemble de machine.Classe
: type de classe, a comme valeur IN
pour l'Internet. Nous ne détaillerons pas ce champ, vous utiliserez toujours la classe IN
pour vos besoins.Type
: Indique quel type d'enregistrement nous sommes en train de définir. Les types les plus utilisés sont A
pour une adresse, CNAME
pour un alias de nom, NS
pour un serveur de nom, MX
pour un serveur de Mail, TXT
pour des commentaires.Priorité
: Si le type à besoin d'une priorité, nous l'indiquons ici.Valeur
: la valeur ou la donnée de l'enregistrement que nous définissons.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.
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
.
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.