 De nos jours, l'utilisation des DNS est indispensable, c'est grâce à ces serveurs de noms que nous pouvons par exemple taper " google.fr" dans la barre d'adresse au lieu de " 216.239.57.104". Le rôle d'un serveur de nom est donc de faire de la résolution d'adresses et de la résolution de noms, pour obtenir respectivement des noms, et des adresses.
Je vous invite à vous rendre sur l'adresse suivante pour en apprendre plus sur les DNS :
http://www.commentcamarche.net/internet/dns.php3 |
En aucun cas nous pourrions être responsables des conséquences que pourrait avoir ce guide sur votre serveur. En suivant et en appliquant ce guide, vous reconnaissez comprendre et approuver ce que vous ferez, vous serez donc seul responsable de ce qui pourrait arriver sur votre serveur.
Nous avons au mieux essayé de vous guider dans la mise en place de djbdns sur votre serveur, il est probable que nous ayons fais éventuellement des erreurs, n'hésitez donc pas à nous communiquer toute erreurs, remarques, suggestions, compléments ; via la page Contact, Merci.
Si vous désirez faire appels à nos services pour installer djbdns, et ses composants nécessaires sur votre serveur, merci de nous contacter en cliquant sur Contact
|
Retrouvez ce document sur le web :
http://www.solutions-4u.net/home/howto_installer_djbdns.php
Téléchargez ce document au format PDF (imprimable) :
http://www.solutions-4u.net/home/howto_installer_djbdns.pdf
 |
Objectif de ce guide |
Savoir que Bind n'est pas le seul moyen de mettre en place un serveur de noms.
Savoir installer djbdns.
Savoir mettre en place un cache DNS grâce à djbdns.
Savoir mettre en place un serveur de noms grâce à djbdns.
Savoir mettre en place un serveur pour les transferts de zones grâce à djbdns.
 |
Pourquoi choisir djbdns |
Sécurité : Son développeur D.J. Bernstein à développé djbdns en ayant en tête la question de sécurité ; depuis des années, alors que Bind à été sujet à des failles de sécurités, djbdns, lui n'a eu aucun problème. Notez aussi que D.J. Bernstein offre 500$ à la première personne qui prouvera que la dernière version de djbdns contient une faille de sécurité, voir (US) :
http://cr.yp.to/djbdns/guarantee.html
Perfomances : djbdns consomme bien moins de ressources (cpu/ram) que Bind. Notez aussi que vous pouvez faire des changements dans les zones dns sans avoir a redémarrer tinydns, celui-ci s'aperçoit automatiquement que data.cdb à été modifié et recharge donc l'ensemble des zones.
Distinction entre cache DNS et serveur DNS : Pour plus d'infos, lisez la page ci-dessous (US),
http://cr.yp.to/djbdns/separation.html
 |
Pré requis |
Vous devez avoir au préalable installé les éléments suivants pour que djbdns puisse fonctionner. Et vous devez évidement avoir un accès root sur le serveur concerné.
daemontools 0.70 ou plus récent (cf. guide Installer daemontools sur son serveur).
ucspi-tcp (cf. guide Installer ucspi-tcp sur son serveur)
 |
Installation de djbdns |
Notez que si vous utilisez actuellement Bind, cette étape ne modifie en rien votre configuration actuelle, aucun risque concernant le bon fonctionnement de votre serveur de noms actuel, vous pouvez donc laisser Bind en marche (conseillé). Ce n'est qu'à partir des étapes de mises en places que vous devrez changer certaines configurations pour que bind ne soit plus le cache/serveur de noms.
Entrez sur un compte non privilégié (non root) de votre serveur, et tapez les commandes suivantes, dans le répertoire de votre choix (les fichiers qui vont êtres téléchargés sont temporaires et seront supprimé à la fin de l'installation, vous pouvez par exemple vous rendre dans /tmp :
cd /tmp
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz -O djbdns-1.05.tar.gz
tar xzvf djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
|
Maintenant, en root, tapez la commande suivante :
Enfin, revenez sur le compte non privilégié et tapez la ligne suivante pour informer le créateur de djbdns que vous avez réussi à installer son programme, en remplaçant bien sûr First M. Last par vos nom et prénom :
( echo 'First M. Last'; cat `cat SYSDEPS` ) \
| mail djb-sysdeps@cr.yp.to |
Enfin, si vous souhaitez supprimer les fichiers d'installation, utilisez les commandes suivantes :
cd ..
rm -rf djbdns-1.05
rm -f
djbdns-1.05.tar.gz |
Option de "convivialité", si vous souhaitez avoir accès aux logs dans /var/log (Merci Toorop) :
 |
Mise en place du cache (dnscache) |
Logiquement le module dnscache va écouter en local : 127.0.0.1 sur TCP/53 et UDP/53. Tant que ce n'est pas indiqué, dnscache n'aura pas besoin que ces ports soit libres, donc inutile d'arrêter bind avant.
Pour commencer, on va créer les comptes unix nécessaires à dnscache, il faut être root (su) :
useradd -s /bin/false dnscache
useradd -s /bin/false dnslog |
Ensuite on va configurer dnscache pour qu'il utilise ces comptes, il faut être root (su) :
| dnscache-conf dnscache dnslog /etc/dnscache |
La commande précédente à crée le répertoire /etc/dnscache qui contient les éléments de configurations et de fonctionnements de dnscache.
A cet instant, dnscache est prêt à être utilisé, pour l'activer, commencez par désactiver bind :
(cf. Annexe plus bas concernant l'arrêt de bind).
Notez que vous pouvez aussi entrer les commandes ci-dessous plus tard, après avoir configuré vos zones pour tinydns et vos règles pour axfrdns afin que Bind continu de jouer le rôle de cache DNS le plus longtemps possible.
| ln -s /etc/dnscache /service |
Après cinq secondes minimums, vous pouvez vérifier le fonctionnement de dnscache en utilisant la commande suivante :
Vous devriez avoir quelque chose du genre : /service/dnscache: up (pid XXXX) 3 seconds
Désormais, dnscache écoute TCP et UDP 53 en local, pour répondre aux requêtes DNS. Votre système peut donc intérroger dnscache pour résoudre des noms et des adresses. Assurez vous que votre système utilise dnscache en éditant le fichier /etc/resolv.conf, qui doit contenir une ligne du type :
nameserver 127.0.0.1
Cette ligne doit être la première ligne commençant par nameserver si vous souhaitez que votre système utilise dnscache.
Enfin pour vérifier que votre système sait résoudre les noms, tapez les commandes suivantes :
dnsip www.cnn.com
dnsip www.fsf.org |
Si vous voyez apparaître une ou plusieurs adresses IP (xxx.xxx.xxx.xxx), et aucun message d'erreur c'est que tout roule !
Option de "convivialité", si vous souhaitez avoir accès aux logs dans /var/log (Merci Toorop) :
| ln -sf /etc/dnscache/log/main /var/log/djbdns/dnscache |
Vous avez terminé si votre serveur ne doit pas jouer le rôle de serveur DNS.
Vous trouverez plus d'info sur les pages suivantes :
Page de djbdns (US) :
http://cr.yp.to/djbdns.html
Comment faire fonctionner un cache DNS (US) :
http://cr.yp.to/djbdns/run-cache.html
Le programme dnscache-conf (US) :
http://cr.yp.to/djbdns/dnscache-conf.html
Le programme dnscache (US) :
http://cr.yp.to/djbdns/dnscache.html
 |
Mise en place du serveur de noms (tinydns) |
Logiquement le module tinydns va écouter sur votre adresse ip publique en UDP/53. Tant que ce n'est pas indiqué, tinydns n'aura pas besoin que ce port soit libre, donc inutile d'arrêter bind avant.
Pour commencer, on va créer les comptes unix nécessaires à tinydns, il faut être root (su) :
Ne tappez pas la seconde commande si vous avez déjà crée le compte dnslog dans l'étape 5
useradd -s /bin/false tinydns
useradd -s /bin/false dnslog |
Ensuite on va configurer tinydns pour qu'il utilise ces comptes, il faut être root (su) :
Evidement, remplacez XXX.XXX.XXX.XXX par votre adresse IP publique, celle qui écoutera le réseau.
| tinydns-conf tinydns dnslog /etc/tinydns XXX.XXX.XXX.XXX |
La commande précédente à crée le répertoire /etc/tinydns qui contient les éléments de configurations et de fonctionnements de tinydns.
A cet instant, tinydns est prêt à être utilisé, pour l'activer, commencez par désactiver bind:
(cf. Annexe plus bas concernant l'arrêt de bind).
Notez que vous pouvez aussi entrer les commandes ci-dessous plus tard, après avoir configuré vos règles pour axfrdns afin que Bind continu de jouer le rôle de serveur de noms le plus longtemps possible.
| ln -s /etc/tinydns /service |
Après cinq secondes minimums, vous pouvez vérifier le fonctionnement de tinydns en utilisant la commande suivante :
Vous devriez avoir quelque chose du genre : /service/tinydns: up (pid XXXX) 3 seconds
Désormais, tinydns écoute UDP 53 sur votre adresse ip publique, pour répondre aux requêtes DNS. tinydns peut donc répondre aux requêtes DNS liées aux zones que vous allez configurer.
Nous mettrons bientôt en ligne un guide pour la configuration des zones dans tinydns, en attendant aidez vous du site officiel (us).
Option de "convivialité", si vous souhaitez avoir accès aux logs dans /var/log (Merci Toorop) :
| ln -sf /etc/tinydns/log/main /var/log/djbdns/tinydns |
Attention, dans certains cas, on peut nécessiter que votre serveur réponde aux requêtes DNS sur TCP/53, dans ce cas, lisez l'étape 7.
Vous trouverez plus d'info sur les pages suivantes :
Page de djbdns (US) :
http://cr.yp.to/djbdns.html
Comment faire fonctionner un serveur DNS (US) :
http://cr.yp.to/djbdns/run-server.html
Le programme tinydns-conf (US) :
http://cr.yp.to/djbdns/tinydns-conf.html
Le programme tinydns (US) :
http://cr.yp.to/djbdns/tinydns.html
 |
Mise en place du serveur pour les transferts de zones (axfrdns) |
Dans quels cas avez vous besoin d'écouter le port TCP/53 ?
Votre serveur doit pouvoir faire du transfert de zones vers d'autres serveurs (AXFR)
Un serveur parent refuse de vous déléguer une zone tant que vous n'écoutez par sur TCP/53 (ex .fr)
Vous devez avoir mis en place tinydns sur votre serveur pour pouvoir mettre en place axfrdns !
Comment mettre en place axfrdns ?
Pour commencer, on va créer les comptes unix nécessaires à axfrdns, il faut être root (su) :
| useradd -s /bin/false axfrdns |
Ensuite on va configurer axfrdns pour qu'il utilise ce compte, il faut être root (su) :
Evidement, remplacez XXX.XXX.XXX.XXX par votre adresse IP publique, celle qui écoutera le réseau.
| axfrdns-conf axfrdns dnslog /etc/axfrdns /etc/tinydns XXX.XXX.XXX.XXX |
La commande précédente à crée le répertoire /etc/axfrdns qui contient les éléments de configurations et de fonctionnements de axfrdns.
Vous remarquerez que nous avons précisé à axfrdns-conf le répertoire de configuration de tinydns dont il a besoin.
Pour terminer la configuration d'axfrdns, nous allons lui dire d'autoriser toutes les connexions entrantes, de répondre aux requêtes DNS, mais de refuser tout transfert de zones (nous verrons plus bas comment autoriser le transfert de zones vers d'autres serveurs), vous devez être root (su) :
| echo ':allow,AXFR=""' > /etc/axfrdns/tcp |
A cet instant, axfrdns est prêt à être utilisé.
Notez que vous pouvez aussi entrer les commandes ci-dessous plus tard, après avoir configuré vos règles pour les transferts de zones.
| ln -s /etc/axfrdns /service |
Après cinq secondes minimums, vous pouvez vérifier le fonctionnement de axfrdns en utilisant la commande suivante :
Vous devriez avoir quelque chose du genre : /service/axfrdns: up (pid XXXX) 3 seconds
Désormais, axfrdns écoute TCP 53 sur votre adresse ip publique.
Option de "convivialité", si vous souhaitez avoir accès aux logs dans /var/log (Merci Toorop) :
| ln -sf /etc/axfrdns/log/main /var/log/djbdns/axfrdns |
A cet instant axfrdns joue le même rôle que tinydns sur le port TCP/53. Pour autoriser le transfert de zones (axfr), suivez les étapes ci-dessous.
Comment autoriser le transfert de zones vers d'autres serveurs ?
Si vous désirez autoriser le transfert d'une seule zone vers un autre serveur,
xxx.xxx.xxx.xxx étant l'adresse IP du serveur qui sera autorisé à transférer la zone
zone.com étant la zone autorisé à être transféré par xxx.xxx.xxx.xxx
Tapez les commandes suivantes en root,
et pensez à valider les changement de /etc/axfrdns/tcp (voir plus bas) :
| echo 'xxx.xxx.xxx.xxx:allow,AXFR="zone.com"' >> /etc/axfrdns/tcp |
Si vous désirez autoriser le transfert de plusieurs zones vers un autre serveur,
xxx.xxx.xxx.xxx étant l'adresse IP du serveur qui sera autorisé à transférer les zones
zone.com et autrezone.net étant les zones autorisés à être transférés par xxx.xxx.xxx.xxx
Tapez les commandes suivantes en root,
Remarquez qu'il suffit de séparer les zones par des slashs "/"
et pensez à valider les changement de /etc/axfrdns/tcp (voir plus bas) :
| echo 'xxx.xxx.xxx.xxx:allow,AXFR="zone.com/autrezone.net"' >> /etc/axfrdns/tcp |
Si vous désirez autoriser le transfert de toutes vos zones vers un autre serveur,
xxx.xxx.xxx.xxx étant l'adresse IP du serveur qui sera autorisé à transférer vos zones
Tapez les commandes suivantes en root,
Remarquez qu'il suffit de retirer ,AXFR="..."
et pensez à valider les changement de /etc/axfrdns/tcp (voir plus bas) :
| echo 'xxx.xxx.xxx.xxx:allow' >> /etc/axfrdns/tcp |
Comment valider les changements fais dans /etc/axfrdns/tcp ?
Utilisez simplement les commandes suivantes, en root, pour valider les changements faits dans vos règles, notez aussi qu'il est inutile de redémarrer axfrdns, le programme tcpserver prends automatiquement en compte les changements fais dans tcp.cdb :
Vous trouverez plus d'info sur les pages suivantes :
Page de djbdns (US) :
http://cr.yp.to/djbdns.html
Comment faire pour répondre aux requêtes TCP/53 (US) :
http://cr.yp.to/djbdns/tcp.html
Le programme axfrdns-conf (US) :
http://cr.yp.to/djbdns/axfrdns-conf.html
Le programme axfrdns (US) :
http://cr.yp.to/djbdns/axfrdns.html
Comment désactiver bind ?
Pour l'arrêter, un simple :
/etc/init.d/named stop
ou bien
service named stop
Mais, au redémarrage, bind va essayer démarrer, pour empêcher cela, plusieurs solutions simples :
Webmin > Système > Actions d'arrêts et de démarrages > named > Décocher la case démarrer au boot
ou bien
chmod 000 /etc/init.d/named
ou bien
chkconfig named off
Tout dépends votre système.
Guide réalisé par David CHANIAL le 12 Décembre 2004
Modifié le 24 Janvier 2005, merci à Toorop
|
|