Configuration DNS · 7 min read · Nov 27, 2025
Configuration parfaite de DjbDNS sur Ubuntu Server 8.04 (amd64) Hardy
Configuration parfaite de DjbDNS sur Ubuntu Server 8.04 (amd64) Hardy
DjbDNS est une collection d’outils du système de noms de domaine. Il comprend des logiciels pour toutes les opérations fondamentales de DNS :
Cache DNS : Trouver les adresses des hôtes Internet. Lorsque un navigateur veut contacter www.hotwired.com, il demande d’abord à un cache DNS, tel que le dnscache de djbdns, de trouver l’adresse IP de www.hotwired.com. Les fournisseurs de services Internet exécutent dnscache pour trouver les adresses IP demandées par leurs clients. Si vous exécutez un ordinateur personnel ou un poste de travail, vous pouvez exécuter votre propre dnscache pour accélérer votre navigation web.
Serveur DNS : Publier les adresses des hôtes Internet. L’adresse IP de www.hotwired.com est publiée par les serveurs DNS de HotWired. djbdns comprend un serveur DNS polyvalent, tinydns ; les administrateurs réseau exécutent tinydns pour publier les adresses IP de leurs ordinateurs. djbdns comprend également des serveurs spécialisés pour publier des murs DNS et des RBL.
Client DNS : Communiquer avec un cache DNS. djbdns comprend une bibliothèque C de client DNS et plusieurs utilitaires de client DNS en ligne de commande. Les programmeurs utilisent ces outils pour envoyer des requêtes aux caches DNS.
DjbDNS comprend également plusieurs outils de débogage DNS, notamment dnstrace, que les administrateurs utilisent pour diagnostiquer des serveurs distants mal configurés.
Fonctionnalités de sécurité :
- dnscache s’exécute en tant qu’uid non-root dédié à l’intérieur d’une prison chroot, donc il ne peut pas toucher au reste de la machine.
- tinydns s’exécute en tant qu’autre uid non-root dédié à l’intérieur de sa propre prison chroot.
- walldns s’exécute en tant qu’autre uid non-root dédié à l’intérieur de sa propre prison chroot.
- dnscache rejette les requêtes DNS provenant d’une liste spécifiée d’adresses IP.
- dnscache et la bibliothèque DNS utilisent un nouvel ID de requête et un nouveau port UDP pour chaque paquet de requête. Ils rejettent les réponses DNS de toute adresse IP autre que celle à laquelle la requête correspondante a été envoyée.
- dnscache utilise un générateur cryptographique pour sélectionner des numéros de port et des ID imprévisibles.
- dnscache est immunisé contre l’empoisonnement de cache.
tinydns ne met jamais en cache d’informations. Il ne prend pas en charge la récursivité.
Pré-installation
apt-get install build-essential
mkdir /tmp/downloads
cd $_
wget -c HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz
tar -zxvf djb_errno_patches.tgz
wget -c HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget -c HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget -c HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gzInstaller tous les paquets
a. Installer ucspi-tcp-src :
cd /tmp/downloads
tar -zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch
make
make setup checkb. daemontools
cd /tmp/downloads
tar -zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/
touch /etc/inittab
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch
package/installvi /etc/event.d/svscan# svscan - daemontools
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /command/svscanbootCet installateur ne crée que des liens vers toutes les commandes svscan dans /command, il est donc préférable de copier celles-ci :
cd /command
rm -rf *
cp /tmp/downloads/admin/daemontools/command/* /command/C’est tout… ensuite (vous pourriez avoir besoin de redémarrer) …
initctl start svscanc. djbdns
cd /tmp/downloads
tar -zxvf djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup checkConfigurer les paquets
Créer des utilisateurs (s’ils n’ont pas été créés automatiquement) :
adduser --no-create-home --disabled-login --shell /bin/false dnscache
adduser --no-create-home --disabled-login --shell /bin/false dnslog
adduser --no-create-home --disabled-login --shell /bin/false tinydnsConfigurer dnscache :
Dans notre scénario, nous avons besoin que chaque serveur maître et esclave soit à la fois “autoritaire” et “caching”. Il est donc très important de comprendre comment y parvenir avec djbdns. Contrairement à bind, djbdns utilise une IP individuelle pour chaque type de service DNS. Par défaut, chaque système est prêt avec 2 IP => une IP hôte et l’autre est une IP de boucle. Donc, tout système sur le LAN doit toucher le DNS de cache, d’où l’IP hôte pour le DNS de cache. Et nous exécuterons l’autoritaire sur l’IP de boucle, puis lierons cela au DNS de cache, permettant ainsi aux hôtes LAN de requêter également les enregistrements d’hôtes autoritaires.
mkdir /var/lib/svscan
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache
ln -sf /var/lib/svscan/dnscache /service Vérifiez que le répertoire “supervise” a été créé dans /service/dnscache
Pour vérifier qu’il fonctionne : ajoutez simplement une seule entrée comme ‘nameserver
Maintenant, vous devez permettre aux hôtes LAN de requêter depuis celui-ci. Créez simplement un fichier vide nommé d’après votre réseau ou sous-réseau comme :
touch /etc/dnscache/root/ip/C’est tout. Maintenant, vous pouvez requêter depuis n’importe quel hôte de ce
Contrairement à bind, vous pouvez ajuster la taille du cache du serveur de noms en modifiant le fichier /etc/dnscache/env/CACHESIZE. Vous pouvez également rafraîchir ou vider manuellement le cache en exécutant la commande suivante :
svc -t /service/dnscacheTemporairement, vous pouvez arrêter et démarrer dnscache avec les commandes suivantes :
svc -d /service/dnscache => pour arrêter le service dnscache
svc -u /service/dnscache => pour démarrer le service dnscacheConfigurer tinydns :
tinydns-conf tinydns dnslog /var/lib/svscan/tinydns
ln -sf /var/lib/svscan/tinydns /service Vérifiez que le répertoire “supervise” a été créé dans /service/tinydns.
Ils ne contiennent pas encore d’entrées de zone pour des domaines, mais nous y arriverons bientôt. Eh bien, contrairement à bind, les informations de zone sont écrites dans un seul fichier (même pour plusieurs zones, y compris les zones inverses) et c’est /var/lib/svscan/tinydns/root/data. C’est un fichier modifiable par l’homme qui est ensuite converti en format binaire à l’aide d’une commande tinydns et ce binaire est appelé format cdb, donc ce fichier binaire est /var/lib/svscan/tinydns/root/data.cdb d’où tinydns répond à toutes les requêtes. La syntaxe pour les enregistrements de zone est très courte et compacte par rapport à bind. Voici quelques exemples :
a. Pour l’entrée du serveur de noms :
.in.domain.com:10.20.0.10:ns1.in.domain.com
.in.domain.com:10.20.0.12:ns2.in.domain.comb. Pour le reverse-dns pour le serveur de noms ci-dessus :
.10.in-addr.arpa::ns1.in.domain.com
.10.in-addr.arpa::ns2.in.domain.comc. Pour les enregistrements MX :
@in.domain.com:165.212.65.113:mx.usa.net:10
@in.domain.com:10.20.0.12:mail.in.domain.com:20d. Enregistrements A :
=host0001.in.domain.com:10.10.0.101e. Enregistrements alias pour les hôtes :
+host01.in.domain.com:10.10.0.101
+mysql01.in.domain.com:10.10.0.101Et enfin, convertissez /var/lib/svscan/tinydns/root/data en format cdb par
tinydns-dataou
cd /var/lib/svscan/tinydns/root
makeÀ la fin, pour lier ces informations de zone au serveur DNS de cache, créez des fichiers nommés comme 10.in-addr.arpa, in.domain.com et domain.com, etc. dans le répertoire /var/lib/svscan/dnscache/root/servers/, dont le contenu doit être 127.0.0.1 (l’IP de boucle). C’est tout. Tout est configuré.
Remarque : Chaque fois que vous apportez des modifications aux données et créez un fichier data.cdb modifié, n’oubliez pas de rafraîchir ou de vider le cache.
svc -t /services/*Configuration du serveur esclave utilisant Djbdbs
Il suffit de suivre http://www.seebq.com/dns-replication-using-rsync et quelques ajustements sur certains fichiers du maître et des esclaves.
a. Modifications sur le /var/lib/svscan/tinydns/root/Makefile du maître : Modifiez le fichier comme suit
remote: data.cdb
rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
ssh 'svc -t /service/dnscache'
data.cdb: data
/usr/local/bin/tinydns-data
svc -t /service/dnscache b. Modifications sur le fichier /var/libsvscan/tinydns/root/data de l’esclave comme
# Ne modifiez pas les données sur cet ordinateur ! data.cdb est copié depuis le MAÎTRE.
# La ligne suivante protège data.cdb en arrêtant make.
9Ainsi, si par erreur quelqu’un tape la commande make dans le répertoire /etc/tinydns/root ou la commande tinydns-data, cela ne fera que vider le cache car il n’y a pas de fichier de données dans l(es) esclave(s).
Et oui, il suffit de configurer une connexion auto-ssh entre le maître et l(es) esclave(s) afin que les modifications ci-dessus automatisent le processus. Les modifications ci-dessus ne pousseront que le fichier data.cdb vers l(es) esclave(s). Donc, aucune chance d’avoir des données différentes entre les serveurs de noms, ce qui signifie cohérence entre tous.
Sauvegarde et restauration
Au minimum, nous avons juste besoin d’une copie du fichier /var/lib/svscan/tinydns/root/data ou au maximum de l’ensemble de /var/lib/svscan/dnscache et /var/lib/svscan/tinydns. C’est tout.
Pour la restauration, il suffit de configurer dnscache ou tinydns, cela ne prendra guère de temps, et de copier les données de sauvegarde. Enfin, créez un lien symbolique vers /service. C’est tout.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.