Archives de catégorie : Dns

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