Solutions-4u.Net (Euro Web SARL) palais du maharaja - restaurant specialites indiennes et pakistannaises
 
Consulting


Hébergement Web
Création Graphique
Création de Site
Scripts sur Mesure
Logiciels sur Mesure

infogerance

ServerGear ®
Maintenance
Intervention
Sauvegarde
Guides / How-To
Sécurité

Autres

Serveurs dédiés
Serveurs de jeux
Hébergement

 

netavous - hebergement web sur mesure

powered by djbdns

Valid HTML 4.01!
 
Mise en place de DJBDNS sur un serveur GNU/Linux  
 
dnsDe 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

 

etape 1 Objectif de ce guide
etape 2 Pourquoi choisir djbdns
etape 3 Pré requis
etape 4 Installation de djbdns
etape 5 Mise en place du cache (dnscache)
etape 6 Mise en place du serveur de noms (tinydns)
etape 7 Mise en place du serveur pour les transferts de zones (axfrdns)

 


etape 1 Objectif de ce guide

puce Savoir que Bind n'est pas le seul moyen de mettre en place un serveur de noms.
puce Savoir installer djbdns.
puce Savoir mettre en place un cache DNS grâce à djbdns.
puce Savoir mettre en place un serveur de noms grâce à djbdns.
puce Savoir mettre en place un serveur pour les transferts de zones grâce à djbdns.

 


etape 2 Pourquoi choisir djbdns

puce 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

puce 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.

puce Distinction entre cache DNS et serveur DNS : Pour plus d'infos, lisez la page ci-dessous (US),

http://cr.yp.to/djbdns/separation.html

 


etape 3 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é.

puce daemontools 0.70 ou plus récent (cf. guide Installer daemontools sur son serveur).
puce ucspi-tcp (cf. guide Installer ucspi-tcp sur son serveur)

 


etape 4 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 :

make setup check

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) :

mkdir /var/log/djbdns

 


etape 5 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 :

svstat /service/dnscache

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

 


etape 6 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 :

svstat /service/tinydns

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

 


etape 7 Mise en place du serveur pour les transferts de zones (axfrdns)

Dans quels cas avez vous besoin d'écouter le port TCP/53 ?

puce Votre serveur doit pouvoir faire du transfert de zones vers d'autres serveurs (AXFR)
puce 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 :

svstat /service/axfrdns

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 :

cd /etc/axfrdns
make

 

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