Configurer tinydns (djbdns) – HowTo

dnsNous connaissons
déjà les avantages de l’utilisation de djbdns
au lieu de bind. Seulement, même si le système de configuration de tinydns (le module « serveur de noms » de djbdns),
est assez intéréssant pour envisager des automatisations, il demeure que son fichier de configuration
reste un peu « flou » pour les personnes qui désirent quitter bind et passer à djbdns.

C’est pour quoi, pour faire suite au précédent guide sur djbdns, nous allons vous expliquer maintenant comment
configurer tinydns.

N’hésitez pas à nous communiquer toute erreur, remarque,
suggestion et complément
via la page contact, merci.

Si vous désirez faire appel à nos services pour configurer et/ou installer djbdns/tinydns sur votre serveur, merci
de nous contacter.

Prérequis

Pour commencer, vous devez déjà avoir installé djbdns et avoir mis en place le serveur de noms (tinydns).

Si ce n’est pas le cas, vous trouverez, en suivant le lien ci-dessous, un guide qui vous permettra de mettre tout ça en place :
Howto installer djbdns

Comprendre tinydns

Nous allons tout simplement transformer un fichier de zone provenant de bind, pour qu’il soit utilisable par tinydns.

Pour commencer il faut savoir que tinydns lit sa configuration dans le fichier /etc/tinydns/root/data.cdb qui est un fichier généré par
le programme tinydns-data depuis un fichier texte nommé data, se trouvant dans le même répertoire.

Donc, vous allez travailler avec le fichier /etc/tinydns/root/data, et, à chaque modification, vous allez devoir regénerer le fichier data.cdb
de la manière suivante:

cd /etc/tinydns/root
/usr/local/bin/tinydns-data

Pour faciliter la tâche, on va créer le fichier /etc/tinydns/root/Makefile qui aura ce contenu :

all: data.cdb
data.cdb:
     /usr/local/bin/tinydns-data

(Notez que la dernière ligne de ce fichier commence par une tabulation, il se peut que le copier/coller le transforme
en plusieurs espaces, assurez-vous que ce soit une tabulation, sinon, cela risque de ne pas fonctionner)

Il vous suffira dorénavant de taper les commandes suivantes pour valider les modifications dans le fichier data
(vous ne voyez pas encore l’intêret de ce fichier Makefile, vous comprendrez plus bas) :

cd /etc/tinydns/root
make

Faire un découpage par zone

Au cas où vous ne l’auriez pas compris, l’ensemble des informations dont tinydns a besoin pour publier vos zones sont
rassemblées dans un seul et même fichier.

Ceci peut être handicapant pour des interventions régulières à la main, pour cela, je vous propose
une solution qui vous permettra d’avoir un fichier pour chaque zone.

Pour commencer on va créer un répertoire « zones » dans lequel nous mettrons nos zones DNS :

cd /etc/tinydns
mkdir zones

Maintenant nous allons modifier notre fichier /etc/tinydns/root/Makefile pour qu’il génère un fichier data
à partir de nos zones se trouvant dans /etc/tinydns/zones
Bien sûr, pour des questions de sécurité, on va prendre en compte uniquement les fichiers qui
appartiennent à root :

all: clean data.cdb
clean:
     rm -f data
     rm -rf ../datas
data:
     ./Makedatas
     sort -u ../datas/* >data
     rm -rf ../datas
data.cdb: data
     /usr/local/bin/tinydns-data

Pour commencer, prenez soin de mettre des tabulations là où il le faut, ensuite, vous aurez remarqué
que nous faisons référence à un script (/etc/tinydns/root/Makedatas) qui n’existe pas encore,
créons-le :

#!/bin/bash
rm -rf ../datas
mkdir ../datas
find ../zones -uid `id -u root` -type f > root.zones
for ZONE in `cat root.zones`; do cp $ZONE ../datas/; done
rm -f root.zones

Voilà, désormais, lorsque vous ferez :

cd /etc/tinydns/root
make

…, pour valider les éventuelles modifications que vous aurez faites, le script se chargera de générer un
fichier data grâce à tous les fichiers se trouvant dans le répertoire /etc/tinydns/zones/

Configurer tinydns

Allons-y, voici le contenu d’un fichier de zones au format bind, que nous allons convertir au format tinydns :

$ttl 1h
domaine.com.     IN SOA     ns1.sd-france.net. postmaster.domaine.com. (
               2005052489
               1h
               1h
               1w
               1h )
domaine.com.     IN NS     ns1.sd-france.net.
domaine.com.     IN NS     ns2.sd-france.net.
domaine.com.     IN MX     10 mx10.domaine.com.
domaine.com.     IN MX     20 mx20.domaine.com.
domaine.com.     IN A 81.93.240.43
mx10.domaine.com.     IN A     81.93.240.43
mx20.domaine.com.     IN A     78.41.233.28
mysql.domaine.com.     IN A     81.93.240.43
gestion.domaine.com.     IN A     81.93.240.43
pop.domaine.com.     IN CNAME     mx10.domaine.com.
smtp.domaine.com.     IN CNAME     mx10.domaine.com.
mail.domaine.com.     IN CNAME     mx10.domaine.com.
webmail.domaine.com.     IN CNAME     mx10.domaine.com.
ftp.domaine.com.     IN CNAME     domaine.com.
www.domaine.com.     IN CNAME     domaine.com.
*.domaine.com.     IN CNAME     domaine.com

Pour commencer, vous devez comprendre qu’avec tinydns, c’est le premier caractère d’une
ligne qui va décider le type d’enregistrement, commençons par l’enregistrement SOA :

$ttl 1h
domaine.com.     IN SOA     ns1.sd-france.net. postmaster.domaine.com. (
               2005052489
               1h
               1h
               1w
               1h )

Voici cet enregistrement transformé pour qu’il soit utilisable par tinydns (sur une seule ligne) :

Zdomaine.com:ns1.sd-france.net.:postmaster.domaine.com.:2005052489:3600:3600:604800:3600:3600

Ensuite on déclare les serveurs de noms pour cette zone, version bind :

domaine.com.     IN NS     ns1.sd-france.net.
domaine.com.     IN NS     ns2.sd-france.net.

Voici cet enregistrement transformé pour qu’il soit utilisable par tinydns. Vous noterez que les champs non spécifiés
prendront les valeurs par défaut, que les champs que l’on ne souhaite pas spécifier mais qui ne sont pas en fin de ligne doivent
être simplement vides, et que, pour finir, les champs que l’on ne veut pas spécifier et qui se trouvent en fin de ligne peuvent
être complètement omis :

&domaine.com::ns1.sd-france.net.
&domaine.com::ns2.sd-france.net.

Ensuite on déclare les serveurs de mails (MX) pour cette zone, version bind :

domaine.com.     IN MX     10 mx10.domaine.com.
domaine.com.     IN MX     20 mx20.domaine.com.

Voici cet enregistrement transformé pour qu’il soit utilisable par tinydns :

@domaine.com::mx10.domaine.com.:10
@domaine.com::mx20.domaine.com.:20

Ensuite on déclare les pointages classiques (A) pour cette zone, version bind :

domaine.com.     IN A 81.93.240.43
mx10.domaine.com.     IN A     81.93.240.43
mx20.domaine.com.     IN A     78.41.233.28
mysql.domaine.com.     IN A     81.93.240.43
gestion.domaine.com.     IN A     81.93.240.43

Voici cet enregistrement transformé pour qu’il soit utilisable par tinydns :

+domaine.com:81.93.240.43
+mx10.domaine.com:81.93.240.43
+mx20.domaine.com:78.41.233.28
+mysql.domaine.com:81.93.240.43
+gestion.domaine.com:81.93.240.43

Enfin on déclare les alias (CNAME) pour cette zone, version bind :

pop.domaine.com.     IN CNAME     mx10.domaine.com.
smtp.domaine.com.     IN CNAME     mx10.domaine.com.
mail.domaine.com.     IN CNAME     mx10.domaine.com.
webmail.domaine.com.     IN CNAME     mx10.domaine.com.
ftp.domaine.com.     IN CNAME     domaine.com.
www.domaine.com.     IN CNAME     domaine.com.
*.domaine.com.     IN CNAME     domaine.com

Voici cet enregistrement transformé pour qu’il soit utilisable par tinydns :

Cpop.domaine.com:mx10.domaine.com.
Csmtp.domaine.com:mx10.domaine.com.
Cmail.domaine.com:mx10.domaine.com.
Cwebmail.domaine.com:mx10.domaine.com.
Cftp.domaine.com:domaine.com.
Cwww.domaine.com:domaine.com.
C*.domaine.com:domaine.com.

Et voilà on a notre fichier utilisable pour tinydns :

Zdomaine.com:ns1.sd-france.net.:postmaster.domaine.com.:2005052489:3600:3600:604800:3600:3600
&domaine.com::ns1.sd-france.net.
&domaine.com::ns2.sd-france.net.
@domaine.com::mx10.domaine.com.:10
@domaine.com::mx20.domaine.com.:20
+domaine.com:81.93.240.43
+mx10.domaine.com:81.93.240.43
+mx20.domaine.com:78.41.233.28
+mysql.domaine.com:81.93.240.43
+gestion.domaine.com:81.93.240.43
Cpop.domaine.com:mx10.domaine.com.
Csmtp.domaine.com:mx10.domaine.com.
Cmail.domaine.com:mx10.domaine.com.
Cwebmail.domaine.com:mx10.domaine.com.
Cftp.domaine.com:domaine.com.
Cwww.domaine.com:domaine.com.
C*.domaine.com:domaine.com.

Tout cela est bien plus clair… Enregistrez cette zone par exemple sous :
/etc/tinydns/zones/djb.domaine.com, et appliquez les modifications :

cd /etc/tinydns/root
make

Délégations en .fr

L’AFNIC, l’organisme qui administre les délégations en .fr, est un peu restrictif (au final c’est pas plus mal),
pour que votre .fr puisse fonctionner, votre serveur de noms doit « s’annoncer », et aussi contenir l’enregistrement des
root-servers. Bref, ajoutez le fichier /etc/tinydns/zones/dot.fr dont le contenu est ci-dessous (et n’oubliez pas d’appliquer les
modifications), pour que le zonecheck vous renvoie à coup sûr un SUCCÈS :

&:198.41.0.4:a.root-servers.net
&:128.9.0.107:b.root-servers.net
&:192.33.4.12:c.root-servers.net
&:128.8.10.90:d.root-servers.net
&:192.203.230.10:e.root-servers.net
&:192.5.5.241:f.root-servers.net
&:192.112.36.4:g.root-servers.net
&:128.63.2.53:h.root-servers.net
&:192.36.148.17:i.root-servers.net
&:192.58.128.30:j.root-servers.net
&:193.0.14.129:k.root-servers.net
&:198.32.64.12:l.root-servers.net
&:202.12.27.33:m.root-servers.net
.localhost
.1.0.0.127.in-addr.arpa
=localhost:127.0.0.1

Nous considérons aussi que vous avez compris, dans notre howto qui vous guide lors de l’installation de djbdns, que vous devez
écouter le port TCP/53 (axfrdns) pour que les .fr puissent vous être délégués. Si vous ne voyez pas de
quoi nous parlons, relisez notre précédent guide, et consultez les pages de djbdns.

Plus d’infos sur : http://cr.yp.to/djbdns/dot-fr.html

Pour finir

Ce guide est largement incomplet, c’est juste pour vous mettre « sur la voie ».

En attendant DJB a fait des pages « très claires », alors foncez :

Pages officielle de djbdns (FAQ et Guides) US : http://cr.yp.to/djbdns.html