Configurer tinydns (djbdns) – HowTo
Nous 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
