Configuration d’un serveur DNS Bind9 sur un serveur dédié

Après maintes essai sur deux serveurs dédiés : un kimsufi et une dedibox pro xl, j’ai enfin saisi le fonctionnement de la configuration de bind9. Il existe pas mal de tutos traitant de la façon de construire ces fichiers configurations, mais aucune ne se ressemble. Ce petit tutoriel va d’une part m’aider à garder une trace de mon expérience et d’autre part de peut être vous aider 🙂

Chez dedibox il existe une interface de gestion des dns très simple qui vous permettra de configurer vos enregistrements très simplement, mais vous pouvez tout de même créer votre propre serveur DNS.

Tout d’abord, la plate forme utilisée sur ses deux serveurs était Ubuntu 9.04 server (x86_64). Il m’a donc fallut installer bind9 :

sudo aptitude install bind9

.

Un fois installé le paquet .deb aura mis en place les fichiers de configuration de bind9 dans /etc/bind9/. Dans ce dossier nous trouverons 3 fichiers nommés :

  • /etc/bind/named.conf : ce fichier stocke la configuration basique de bind comme quelque zone de local forward et les reverses zones.
  • /etc/bind/named.conf.local : ce fichier contiendra vos propres zones
  • /etc/bind/named.conf.options : ce fichier contient en autres les options par lesquelles vous allez pouvoir changer la façon dont votre serveur DNS réagit.

Configurons donc /etc/bind/named.conf.options nous allons ici dire à bind d’écouter par toutes les adresses ipv4 et v6 qui se trouvent sur votre serveur. Voici le contenu de mon fichier :

options {
directory "/var/cache/bind";

// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.

forwarders {
213.186.33.99;
};

auth-nxdomain no;    # conform to RFC1035
listen-on-v6 { any; };
listen-on { any; };
// Les adresses autorisées à interroger de façon récursive le serveur DNS
allow-recursion
{
127.0.0.1;
ip.de.votre.serveur;
};

// Autorise le transfert de zone uniquement pour ns.kimsufi.com pour notre cas
allow-transfer { 213.186.33.199; };

};

Ici pour votre configuration vous pouvez changer l’adresse ip du DNS secondaire dans la clause forwarders. Les autres options tel que listen-on-v6 et listen-on vous respectivement définir le fait que le serveur DNS doit écouter les requètes DNS sur toutes les adresses possibles quelles soit ipv6 ou ipv4. Ce qui est d’ailleurs une condition impérative afin d’établir un serveur DNS internet, sinon celui-ci restera par défaut un serveur dns contrôlant des zones locales.

Ensuite passons à la configuration d’une zone. Editons le fichier /etc/bind/named.conf.local afin d’y renseigner nos zones.

zone "mon-site.tld" {
type master;
// Autorise le transfert de zone uniquement pour ns.kimsufi.com pour notre cas
allow-transfer { 213.186.33.199; };
file "/etc/bind/mon-site.tld.hosts";
notify yes;
};

Naturellement vous allez remplacer mon-site.tld par le site voulu, la clause file va indiquer ou es ce que l’on stockera la configuration de notre zone. Attention apparemment (c’est à vérifier) pour les domaines en .fr il faut absolument spécifier allow-transfer et spécifier le dns qui s’occupera des transferts. notify yes accélère la mise à jour.

Puis nous allons renseigner le fichier de notre zone : /etc/bind/mon-site.tld.hosts de cette façon :

$ttl 3H
mon-site.tld.    IN    SOA    ksxxxx.kimsufi.com. emailvalide.domaine.tld. (
2009051501  ;serial (version)
3600          ;refresh period
900           ;retry refresh this often
604800        ;expiration period
3600          ;minimum TTL
)

mon-site.tld.        IN    NS    ksxxxx.kimsufi.com.
mon-site.tld.        IN    NS    ns.kimsufi.com.
IN    A    123.234.1.2
mail                 IN    A    123.234.1.2
svn                  IN    A    123.234.1.2
www                  IN    CNAME    mon-site.tld.
mon-site.tld.        IN    MX      10    mail.mon-site.tld.

Quelques petites explications : tout d’abord les points après les noms de domaines ne sont pas là pour faire jolie, si vous savez comment marche DNS vous savez pourquoi, personnellement je crois me rappeler que ça correspond à la douzaine de serveurs DNS principaux répartis sur la surface du globe qui sont les pères de tous les dns existants sur la toile.
Bon sinon pour la configuration nous avons « mon-site.tld. IN SOA ksxxxx.kimsufi.com. emailvalide.domaine.tld. » :

  • IN : signifie internet, c’est à dire que la zone suivante est destiné à la toile 🙂
  • SOA : Star Of Authority indiquant que le prochain paramètre sera le serveur de nom faisant autorité c’est à dire votre DNS principal.
  • ksxxxx.kimsufi.com. : DNS principal de votre domaine, si vous êtes chez un autre hébergeur vous pouvez utiliser le fqdn de votre serveur, par exemple chez dedibox : sd-xxxxx.dedibox.fr
  • emailvalide.domaine.tld. : ici on renseigne une adresse email en remplaçant le @ par un point et on termine par un point bien sûr.

Les paramètres peuvent ne pas être touchés sauf le serial : « 2009051501 ;serial (version) » par defaut on établit ce serial en concatenant une date et une nombres de changement du fichier en cours (2009 05 15 01 correspond au 15 mai 2009 et le fichier a été modifié 1 fois), mais vous pouvez mettre une numéro que vous voulez.

Ensuite les choses se corsent :

  • mon-site.tld. IN NS ksxxxx.kimsufi.com.
    • mon-site.tld : le nom de votre site a définir dans le serveur de noms.
    • IN : toujours internet.
    • NS : Signifie que le prochain paramètre sera le sera de nom dans lequel on renseigne le site.
    • ksxxxx.kimsufi.com. : le seveur de noms
  • IN A 123.234.1.2
    • Il n’y a rien avant IN, c’est normal cette enregistrement va nous servir à accéder au site grace à son fqdn ici mon-site.tld
    • A : fait correspondre un nom d’hôte à une adresse IPv4 de 32 bits distribués sur quatre octets
    • 123.234.1.2 : adresse ip surlaquel le site sera utilisé.
  • mail IN A 123.234.1.2
    • mail : on définit ici un sous domaine
    • comme dans l’enregistrement précédent
  • www IN CNAME mon-site.tld.
    • CNAME : canonical name record qui permet de faire d’un domaine un alias vers un autre. Cet alias hérite de tous les sous-domaines de l’original. Ici on a créé un alias de www.mon-site.tld ver mon-site.tld
  • mon-site.tld. IN MX 10 mail.mon-site.tld.
    • MX 10 : Serveur de type mail exchange record qui définit les serveurs de courriel pour ce domaine, suivit de sa priorité plus le chiffre est bas plus le serveur est prioritaire.

Si vous voulez d’autres précisions sur les autres types d’enregistrements lisez l’article de wikipedia sur DNS qui vous décrira les types comme AAAA destinés à IPv6, TXT pour un enregistrement de type commentaire, ou encore PTR qui est le contraire de A.

Voilà vous savez le minimum pour configurer ce type de fichiers. Un fois que vous avez terminer l’édition de ces fichiers n’oubliez pas de reloadé bind9 et de vérifier les logs :

sudo invoke-rc.d bind9 reload
sudo tail -f -n 30 /var/log/daemon.log

ou plus simplement :

named-checkconf -z

Pour vérifier que votre serveur est bien comme il faut :

nslookup mon-site.tld
nslookup www.mon-site.tld
nslookup mail.mon-site.tld

Et la même chose sur le DNS secondaire de votre provider :

nslookup mon-site.tld ns.kimsufi.com
nslookup www.mon-site.tld ns.kimsufi.com
nslookup mail.mon-site.tld ns.kimsufi.com

A noter que la configuration des dns sur votre serveur peux prendre plusieurs heures voir jours à arriver jusqu’aux serveurs DNS de votre FAI de votre domicile.

N’hésitez pas à faire part de vos soucis ou remarques dans les commentaires, cette article n’est pas immuable et évoluera en fonction des expériences de chacun d’entre nous 🙂

Liste complète des options disponible pour les fichiers de conf de BIND9 :
http://ftp.isc.org/www/bind/arm95/Bv9ARM.ch06.html

24 réflexions sur « Configuration d’un serveur DNS Bind9 sur un serveur dédié »

  1. Salut,
    Ton tutoriel est sympa mais j’ai l’impression qu’il manque un truc. Tu ne devrais pas spécifier l’adresse du dns secondaire dans le fichier /etc/bind/mon-site.tld.hosts ? En mettant par exemple une ligne comme ça :

    domaine.ltd. IN NS ns.kimsufi.com.

    dans le cas d’un serveur chez kimsufi.
    Il me semble que cela fait un avertissement ou un fatal sur zonecheck.

  2. Bonjour,

    La commande « nslookup » à été remplacé par la commande « dig » … mais bon on peut toujours utiliser nslookup …

  3. escuse moi mais tu met certaine IP.
    genre
    forwarders {
    213.186.33.99;
    };
    a quoi corespond cette ip c’est l’ip de ton site? doit ton le changer?

    et aussi emailvalide je comprend pas a quoi ca sert?
    genre je met mon email perso hotmail?

    je commence j’ai un kimsufi + nom de domaine ovh .Fr c’est un vrai delire a regler (mon probleme principal etant que goole voi meme pas mes metatag si je fait une redirection).
    donc je set un server dns sur le kimsufit pourais tu commenter un peu plus stp.

  4. Alors pour commencer :

    forwarders {
    213.186.33.99;
    };

    est l’adresse ip du serveur prenant les requêtes DNS pour les diriger vers d’autres serveurs DNS. Chez OVH il est spécifié dans leur guide que cette IP soit inscrite comme forwarder. Si tu ne met pas cette directive ton serveur DNS ne sera pas pris en compte (à vérifier).

    Deuxièmement, pourquoi parle tu de google. Es ce que ton domaine est bien configuré déjà ? Commence par bien vérifier que ton domaine soit reconnu par tous les serveurs DNS de la planète (là y a déjà du taff), après on parlera d’html, d’http-redirect et ensuite de référencement.

  5. Je veut dire que j’utiliserais bien une simple redirection plutot que de faire tous ca mais helas par redirection les moteurs de recherche on du mal a acceder a mon contenue.
    sino peu tu expliquer ceci?
    emailvalide.domaine.tld.
    est que j’invente l’email ou j’utilise un email existent type hotmail?
    genre
    toto.hotmail.com.tld (mon mail perso)
    ou
    Support.mon-site.tld (qui n’existe nul par pour l’instant).

  6. En fait pour le cas d’un .fr il te faut une adresse valide car toute opération entre l’afnic et ton domaine passerons par cette adresse et c’est aussi une condition de validation de ta zone DNS. Par contre attends toi à te faire spammer sur cette adresse email…

  7. Pour une migration de domaines .fr et .com hébergés chez OVH vers un serveur kimsufi récemment souscrit : faire au préalable la déclaration des DNS secondaire sur l’interface dans le menu « services », et c’est du tout bon !
    le seul problème que j’ai rencontré a été que le domaine.tld ne se résolvait pas… ping domaine.tld ne donnait rien !
    la ligne IN A ip_du_serveur dans le fichier domaine.tld.hosts ne suffit pas, j’ai du ajouter domaine.tld. IN A ip_du_serveur et là nikel 😉

  8. Bonjour,

    Tout d’abord merci pour cet article qui m’a beaucoup aidé. J’ai un zone d’ombre par contre, au niveau de allow-recursion. C’est la liste des adresses IP à qui on autorise d’interroger de facon recursive notre serveur, et tu mets donc l’adresse local ( 127.0.0.1 ) et l’IP du serveur… Ce que je comprends pas c’est pourquoi mettre l’adresse du serveur alors qu’on a mis l’adresse local, sachant que le serveur doit se trouver sur cette machine. J’ai surement du mal comprendre cette ligne…
    A quoi correspond « ip.de.votre.serveur; »

    Merci d’avance pour la réponse.

  9. @Nashdu49
    Celons la doc : allow-recursion
    Specifies which hosts are allowed to make recursive queries through this server. If allow-recursion is not set then allow-query-cache is used if set, otherwise allow-query is used if set, otherwise the default (localnets; localhost;) is used.

    Donc la boucle local est inutile si l’on ne met pas de directive allow-recursion, mais de mettre l’ip du serveur en plus doit pallier à certains cas bien particulier ou l’ip de provenance n’est pas 127.0.0.1 mais l’ip WAN du serveur.

    J’avoue que je n’ai pas cherché à comprendre pourquoi il fallait mettre l’ip de son serveur en plus de localhost pour cette directive. Tu peux donc tester de ne pas mettre l’ip WAN de ton serveur dans cette directive, logiquement il ne devrais pas y avoir d’impact, mais je préfère prévenir que guérir en gardant cette option tel quel.

    @Arcadio
    Bizarre que ça ne marchais pas, j’ai cette configuration sur un kimsufi(KS) avec des .com, .fr, .org, et .net et je n’ai pas eu à touché le IN A. Es tu sûr que ce n’étais pas à cause du temps de propagation DNS ? Le ping ne te parmet pas de dire qu’un domaine est bien cablé, un dig te donnera plus d’information si tu lui dit d’interroger directement ton serveur DNS.

  10. bon tuto!!! Ma question sera un peu banale, mais enfin… au fait j’aimerais savoir au cas ou quelqu’un n’a pas un site et veoulais juste configurer un serveur dns alor que ferait-il?

  11. bn tuto en tout cas!!! je me demande où trouver cette adresse IP? j’ai une livebox est-ce l’adresse IP du serveur lui-meme ou de la livebox? question banale non?

  12. @elk : tu trouveras ton ip WAN en allant dans l’interface de ta box ou en tapant « mon adresse ip » sur google par exemple. Mais avant il faudra savoir si tu possèdes une ip fixe ou pas, si elle n’est pas fixe des solutions existent tel que le service dyndns qui permet d’obtenir des adresses tel que cequejeveux.dynhost.org. Ensuite OVH permet de rajouter un enregistrement de type DynHost dans une zone DNS lorsque le domaine est géré dans son manager. Donc la seul chose que tu aurais à faire c’est acheter un nom de domaine sans hébergement chez OVH et d’ajouter dans la zone DNS ton DynHost ainsi tu pourras héberger ton ou tes sites directement chez toi…

  13. Super tuto, super clair!
    Je me suis fait une montagne de configurer des noms de domaines pour les sites que j’héberge, finalement, le premier s’est passé tout seul.
    Même pas besoin d’attendre quelques heures comme tu l’indiques dans ton tuto, nslookup à partir de mon laptop me renvoie automatiquement la bonne ip pour mon nom de domaine.

    La résolution inverse n’a pas été traitée par contre. Moins important vu que de toute façon tout mes sites auront la même IP.

    Merci beaucoup!

  14. Bonjour,

    Je ne suis ni chez ovh ni kimsuffi, par-contre j’ai mon propre AD sous Win 2008 R2, DynDNS chez NO-IP, mon domaine local est
    « mondomaine.local », et de l’exterieur « mondomaine.noip.me », les joie d’une IP dynamique externe… comme vous le savez surement, mon AD a son propre DNS, je voudrais cependant créer un DNS secondaire avec un QNAP TS-110 Turbo, ou Bind sera installé dessus via optware QPKG, quelqu’un aurait-il des info dessus ? Ce tuto est il adapté à mes besoin ?
    Merci pour vos réponses… et bravo pour le tuto, c’est vrai qu’avec tout ceux que j’ai lu, c’est pour le moment le meilleur… même vu la date du poste… 😉

    A+
    cco86260

  15. Bonsoir !
    Je n’arrive toujours pas à transférer mon ndd de ma kimsufi actuelle à ma nouvelle.
    Je pense que ce tuto m’a au moins confirmer que mon souci vient de mon nouveau serveur qui doit être mal configuré quelque part…après 1000 tentatives infructueuses ! Je crois que je vais laisser la main à plus compétent que moi 🙁

    Merci quand même !

  16. @Symphozlk

    Il se peut que depuis 2009 l’IP à mettre dans allow transfer ait changée.
    Par contre s’il ne s’agit que d’un changement d’IP, c’est à dire que vous passez d’un serveur à un autre sans changer vos serveurs DNS primaire et secondaire, il aurait fallu au préalable déclaré chez OVH un Glue registry. Ceci sert dans votre cas à simplement informé en quelques secondes que primary_dns.monn_domaine.tld pointe sur tel nouvelle IP

  17. @cco86260

    La config de bind devrait être similaire, j’ai un NAS Synology avec DPKG et les fichiers semple être les même car la version de bind est aussi la version 9.

  18. Hé bien en fait…ce n’était apparemment qu’une question de patience ! Tout fonctionnait le lendemain. J’aurais pensé qu’une modif serveur se répercuterait tout de suite…en fait non. Honte à moi ! En tout cas, ce tutoriel fonctionne, je vous remercie donc encore !

Laisser un commentaire