Serveur DNS · 3 min read · Jan 09, 2026

Exécution d'un serveur DNS basé sur MySQL : MyDNS - Page 3

3 Installer dnscache

Une chose très importante à savoir sur MyDNS est qu’il ne prend pas en charge les recherches DNS externes (récursives), c’est-à-dire que MyDNS ne fournira des réponses que pour les domaines pour lesquels il est autoritaire ! Si vous souhaitez résoudre d’autres domaines comme, par exemple, www.google.com, vous devrez installer un résolveur DNS comme dnscache sur votre système, et il doit être installé sur une adresse IP distincte. Pour comprendre pourquoi le serveur DNS (MyDNS) et le résolveur DNS (dnscache) sont séparés de cette manière, jetez un œil ici : http://cr.yp.to/djbdns/separation.html

Normalement, votre FAI vous donne des adresses IP de serveurs de noms que vous utilisez pour votre connexion Internet à domicile ou au bureau afin que votre station de travail puisse résoudre des noms comme www.google.com. Les adresses IP des serveurs de noms sont en fait des adresses IP de résolveurs DNS comme dnscache. Maintenant, si vous souhaitez donner à vos clients vos propres adresses IP de serveurs de noms, vous devez configurer un résolveur DNS et donner à vos clients l’adresse IP de ce résolveur DNS.

Maintenant, si vous n’avez qu’une seule adresse IP sur votre serveur, vous pourriez dire : “Ok, je lie MyDNS à 127.0.0.1 et dnscache à mon adresse IP publique pour contourner ce goulot d’étranglement.”. Veuillez lire ici pour comprendre pourquoi c’est une mauvaise idée : http://www.fefe.de/djbdns/#sameip

Si vous ne souhaitez pas installer de résolveur DNS sur votre système, vous pouvez ignorer cette section.

Disons maintenant que vous avez deux adresses IP publiques, 1.2.3.4 et 1.2.3.5, et que vous souhaitez que MyDNS écoute sur 1.2.3.4 et que dnscache écoute sur 1.2.3.5.

Effectuez les étapes suivantes pour installer dnscache :

groupadd dns
useradd -M -g dns -s /sbin/nologin -c DNS-Cache-User dnscache
useradd -M -g dns -s /sbin/nologin -c TinyDNS-User tinydns
useradd -M -g dns -s /sbin/nologin -c DNSlog-User dnslog

Créez le script d’initialisation de dnscache :

cd /usr/local/sbin
wget http://www.servershak.com/dns/dnsctl
chmod 700 dnsctl
ln -s /usr/local/sbin/dnsctl /etc/init.d/dnsctl

Créez les liens de démarrage du système :

Sur Debian :

update-rc.d dnsctl defaults

Sur Fedora et RedHat :

chkconfig –levels 235 dnsctl on

Ensuite, nous compilons et installons dnscache :

cd /usr/local/src
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar -zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check

mkdir -p /var/package
chmod 1755 /var/package
cd /var/package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
gunzip daemontools-0.76.tar
tar -xpf daemontools-0.76.tar
rm daemontools-0.76.tar
cd /var/package/admin/daemontools-0.76
package/install

cd /usr/local/src
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
tar -xvzf djbdns-1.05.tar.gz
cd djbdns-1.05
make
make setup check

dnscache-conf dnscache dnslog /etc/dnscache 1.2.3.5
ln -s /etc/dnscache /service
touch /etc/dnscache/root/ip/1.2.3

Maintenant, dnscache écoute sur 1.2.3.5. Maintenant, nous devons dire à MyDNS qu’il doit écouter uniquement sur 1.2.3.4. Par conséquent, nous devons changer la directive listen dans /etc/mydns.conf :

| listen = 1.2.3.4 |

et redémarrer MyDNS :

/etc/init.d/mydns restart

Maintenant, si vous essayez de résoudre des noms de domaine sur 1.2.3.5, vous devriez obtenir une réponse. Par exemple, pour résoudre www.google.com, vous pouvez exécuter

dig @1.2.3.5 www.google.com

De la même manière, vous devriez être en mesure de résoudre des domaines gérés par MyDNS (par exemple, www.somedomain.com), mais cette fois vous interrogez 1.2.3.4 :

dig @1.2.3.4 www.somedomain.com

4 Obtenir les zones et les enregistrements du serveur DNS primaire au serveur DNS secondaire

Si le serveur DNS primaire et le serveur DNS secondaire utilisent MyDNS, vous avez trois possibilités pour transférer les données du serveur DNS primaire au serveur DNS secondaire :

  1. La méthode à l’ancienne : vous pouvez utiliser des transferts de zone. Pour cela, vous devez changer allow-axfr = no en allow-axfr = yes dans /etc/mydns.conf et redémarrer MyDNS sur le serveur DNS primaire. En plus de cela, vous devez spécifier l’adresse IP du serveur DNS secondaire dans la colonne xfer dans la table soa pour les zones qui doivent être transférées. De plus, assurez-vous que le pare-feu sur le DNS primaire ne bloque pas le port 53 (TCP et UDP).
  2. Le serveur DNS primaire et le serveur DNS secondaire utilisent la même base de données MySQL. Il y a un inconvénient à cette solution : si le serveur MySQL échoue, alors le serveur DNS primaire et le serveur DNS secondaire échoueront en même temps…
  3. La solution préférée : utiliser la réplication de base de données MySQL pour transférer les données du serveur DNS primaire au serveur DNS secondaire. Assurez-vous que le pare-feu sur le DNS primaire ne bloque pas le port MySQL (normalement 3306).

Je vous recommande d’utiliser la réplication MySQL. J’ai écrit un guide très précis sur la façon de le configurer ici : https://www.howtoforge.com/mysql_database_replication donc je n’ai pas à couvrir ce sujet ici à nouveau.

Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.