Configurer un DNS (avec bind 9.2.x)

Dernière mise à jour : 22/02/2005

    Voici ici un petit guide rapide pour vous permettre d'installer un DNS fonctionnel en tr√®s peu de temps. Certains dirons que des alternatives telles que djbdns sont plus ad√©quates mais j'aime relativement Bind car je me suis fait la main dessus depuis d√©j√† quelques ann√©es et toutes les entreprises par lesquelles je suis pass√© s'en servent. Cette seconde √©dition r√©actualis√©e un an plus tard √† un mois pr√®s vous permettra de rajouter une r√©solution IPv6. Je vous conseille donc la lecture de la configuration de l'IPv6 sous Linux avant de mettre en place la partie DNS. Si vous √™tes pr√™t, c'est par l√† !

    Cet exemple prends en compte l'installation de bind 9 sous Debian, mais je ne pense pas que vous aurez trop de difficult√© √† adapter cela √† une autre distribution, d'autant plus que c'est ici la configuration que nous allons aborder et pas la compilation. Donc commencez par un petit : apt-get install bind9. Editez ensuite votre /etc/bind/named.conf. Assurez-vous d'avoir une section √† la fin du fichier comme ceci :

    C'est pr√©cisemment dans ce fichier que tout va se jouer. Cr√©ez donc le fichier /etc/bind/named.conf.local dans lequel vous pouvez rentrer votre premier domaine (nous prendrons ici en exemple internal.frlinux.net qui est un domaine interne dans une DMZ, donc totalement innaccessible de l'ext√©rieur). Dans notre exemple, la plage d'adresse 192.168.0.0 sera utilis√©e (masque de sous r√©seau 255.255.255.0) :

    Dans ce que vous avez copi√© ci-dessus, la premi√®re section d√©clare un domaine nomm√© internal.frlinux.net dont le fichier de configuration porte le m√™me nom. Un DNS marche √©galement avec une r√©solution inverse, sans ce second fichier, il vous sera impossible de r√©soudre une adresse IP vers un nom. Il vous faut donc √† pr√©sent populer le fichier /etc/bind/internal.frlinux.net, vous pouvez alors copier ce qui suit :

    Dans notre exemple ci-dessus, nous avons donc d√©clar√© une zone du nom de internal.frlinux.net avec un SOA (Start Of Authority) g√©r√© par ns.internal.frlinux.net. (le nom du DNS, n'oubliez pas le point √† la fin des noms, il est crucial pour assurer une bonne r√©solution) et le contact mail est postmaster.internal.frlinux.net. (assurez-vous d'avoir cet alias dans votre /etc/aliases). Nous cr√©ons ensuite un num√©ro de s√©rie, indispensable pour que votre DNS puisse communiquer avec les autres, et notifier ceux-ci d'un changement dans sa configuration. C'est pour cela qu'il est maintenu sous la forme de la date courante suivie de deux chiffres indiquant la mise √† jour (dans notre exemple 01 car premi√®re mise √† jour). Les autres valeurs (exprim√©es en secondes pour la plupart) n'ont pas besoin d'√™tre modifi√©es. Notez bien la ligne commencant par IN NS qui doit obligatoirement contenir le nom du serveur DNS de votre domaine (dans mon cas router). Le @ d√©fini que n'importe quelle requ√™te pour le domaine sera r√©solue vers 192.168.0.254 dans mon exemple. La variable IN CNAME vous permet de sp√©cifier une machine pour r√©soudre plusieurs noms (dans notre cas, mon router porte √©galement le nom de ns car je n'ai pas besoin de plusieurs machines).

    Il faut √† pr√©sent renseigner le fichier /etc/bind/rev-internal.frlinux.net sans lequel vous ne pourrez par r√©soudre des adresses IP vers des noms. Pour ceci, copiez l'exemple ci-dessous :

    Dans le fichier ci-dessus, vous noterez des similitudes de syntaxe avec le premier fichier, ce qui est normal vu qu'il s'agit de la syntaxe de bind. La principale diff√©rence concerne la configuration apr√®s le @, en effet, il faut ici donner l'IP elle-m√™me mais juste le num√©ro unique de cette IP, cela permettra alors au DNS de savoir r√©soudre dans les deux sens (c'est-√†-dire r√©soudre le nom ou bien l'adresse IP).

    Voil√†, votre configuration DNS de base est pr√™te, vous pouvez alors lancer le DNS par la commande /etc/init.d/bind9 start. Si tout va bien, vous devriez lire dans le fichier /var/log/daemon.log (ou dans messages pour les autres Linux) :

    C'est bon signe, tout semble avoir d√©marr√© sans erreur. Vous pouvez √† pr√©sent interroger votre DNS, faisons un petit test pour interroger titanux.internal.frlinux.net puis sont adresse IP 192.168.0.68

    C'est gagn√©, le serveur est param√©tr√© normalement. Il ne reste alors qu'√† configurer votre DNS pour √™tre son propre DNS, √©ditez /etc/resolv.conf et placez :

    Les postes clients devront alors √™tre param√©tr√©s comme le serveur sauf que vous placerez 192.168.0.254 (dans mon exemple) √† la place de 127.0.0.1

Configuration IPv6

    Il est important de savoir que ce guide est principalement fait pour les versions 9.2.x de Bind. Bind 9.3.x apporte de nouvelles fonctionnalit√©s pour l'ipv6 et le g√®re diff√©remment. Dans cet article nous consid√®rerons que notre zone IPv6 est la suivante : 2001:130:20e:10::/64. Cette zone sert d√©j√† des adresses IPv6 directement par l'intervention de radvd (consultez l'article entier sur l'IPv6 si vous ne voyez pas de quoi je parle). Imaginons que votre serveur IPv6 aie l'adresse suivante : 2001:130:20e:10::1. Gardez-la bien sous la main pour les tests qui suivent.

    La bonne (ou mauvaise, √† vous de d√©cider) chose √† propos de radvd est qu'il assigne tout seul comme un grand une adresse √† toute carte r√©seau se connectant vers le routeur. Dans mon cas, j'ai l'adresse suivante d'un client : 2001:130:20e:10:20e:cff:fe90:e863/64 (cette commande est trouv√©e √† partir de la commande ifconfig, bien qu'il est conseill√© d'utiliser ip). Suivant le mod√®le plus haut, voici en gras les lignes ajout√©es :

    Il va falloir √† pr√©sent cr√©er une zone inverse pour pouvoir r√©soudre les adresses IPv6 vers des noms. Je vous conseille pour cela le site suivant : http://tools.fpsn.net/ipv6-inaddr qui vous aidera √† cr√©er votre zone √† la vol√©e, tr√®s pratique si vous ne savez pas trop comment faire. Si vous v√©rifiez ce site, vous remarquerez qu'il vous propose de cr√©er une zone inverse selon le nouveau standard (ARPA) ou l'ancien (INT). Il est conseill√© de migrer vers la nouvelle zone seulement et laisser l'ancienne de c√īt√©.

    Donc dans notre exemple, une zone de 2001:130:20e:10::/64 donnera une r√©solution inverse (en arpa) de : 0.1.0.0.e.0.2.0.0.3.1.0.1.0.0.2.ip6.arpa. Donc en utilisant le g√©n√©rateur du site ci-dessus, j'obtiens un fichier que j'appellerais : /etc/bind/rev-2001-130-20e-10_64.IP6.ARPA.


    Il vous faut √©galement modifier /etc/bind/named.conf pour int√©grer votre configuration IPv6, voici les parties √† rajouter :

    Il vous suffit √† pr√©sent de recharger bind et vous devriez voir quelque chose de similaire dans les logs :


    Un petit test pour vous dire que tout fonctionne bien :

    Voil√† qui conlu ce guide de configuration sur bind. Le web rec√®le de guides d'installation, de configurations et de r√©solution de probl√®mes en tous genres, je pense que vous n'aurez pas de mal √† trouver une solution si quelque chose se passe mal, dans le pire des cas, il reste mon email. La partie IPv6 est je le conc√®de un peu plus complexe mais reste n√©anmoins abordable, bon courage !