DNS Debian · 4 min read · Oct 02, 2025

Construire un système DNS Debian

Construire un système DNS Debian

Version 1.0
Auteur : Joe Topjian

OK, c’est le dernier article sur le DNS… pour un certain temps, du moins.

Cet article vous montrera comment construire un système DNS complet avec Debian. Cela inclut un serveur maître, un serveur esclave, DDNS, et un tas de DNSSEC. J’utiliserai BIND 9 pour le serveur.

Le Serveur Maître

Tout d’abord, mettons notre serveur maître en marche. Étant donné que BIND a été connu pour avoir sa part d’exploits, nous allons le placer dans une prison chroot. Je ne vais pas couvrir cela car Falko a écrit un excellent guide à ce sujet ici.

Après avoir tout mis en prison, faites fonctionner RNDC. RNDC est un petit utilitaire en ligne de commande pour contrôler BIND. Pour l’utiliser, copiez le contenu de /etc/bind/rndc.key dans /etc/bind/named.conf. Redémarrez BIND et vous êtes prêt à partir. Maintenant, vous pouvez utiliser RNDC pour interagir avec BIND au lieu de travailler directement avec BIND. Pour plus d’informations sur les commandes RNDC, voir ici.

Ensuite, il est temps de créer le fichier de zone. Pour cet exemple, je vais utiliser le TLD fictif hemingway. Pas de raison particulière – juste parce que je peux et je sais pertinemment qu’il ne sera jamais en conflit avec un vrai nom de domaine.

Pour l’organisation, j’ai créé deux répertoires pour stocker les fichiers de zone, un maître et un esclave – pour stocker respectivement les fichiers de zone maître et esclave.

/etc/bind/zones/master
/etc/bind/zones/slave

N’oubliez pas de modifier /etc/bind/named.conf.options et de changer l’option de répertoire en “/etc/bind”.

Le fichier de zone ressemblera à ceci ( /etc/bind/zones/master/master.hemingway):

| $ORIGIN hemingway $TTL 1d @ IN SOA ns1 hostmaster ( 2005103008 ; serial 43200 900 604800 10800 ) NS hemingway. A 127.0.0.1 |

La zone inverse pour le 192.168.1.0/24 ( /etc/bind/zones/192.168.1.rev) ressemblera à ceci:

| $TTL 1d ; $ORIGIN 1.168.192.IN-ADDR.ARPA. @ IN SOA ns1.hemingway. hostmaster.hemingway. ( 2005103001 2h 15m 2w 3h ) IN NS ns1.hemingway. IN NS ns2.hemingway. |

Maintenant, modifiez /etc/bind/named.conf.local avec les nouvelles zones:

| zone "hemingway" { type master; file "zones/master/master.hemingway"; }; |

| zone "1.168.192.IN-ADDR.ARPA" { type master; file "zones/192.168.1.rev"; }; |

Rechargez DNS et vérifiez vos journaux. Vous ne devriez pas avoir d’erreurs, mais on ne sait jamais…

rndc reload

Maintenant que BIND sait quel domaine héberger, il est temps d’y ajouter des noms d’hôtes. Nous allons utiliser DDNS pour cela. Pour configurer DDNS, vous pouvez suivre mes articles sur DDNS ici.

Pour ajouter réellement les hôtes avec DDNS, je vais utiliser mon script ddns.py.

ddns.py add jake.hemingway A 192.168.1.11
ddns.py add bill.hemingway A 192.168.1.12
ddns.py add robert.hemingway A 192.168.1.13
ddns.py add brett.hemingway A 192.168.1.14

Les fichiers PTR correspondants ont également été ajoutés, mais je passe cela pour gagner de l’espace.

Nous avons maintenant un serveur DNS maître entièrement fonctionnel qui résout tous les noms d’hôtes que nous lui donnons.

Le Serveur Esclave

Maintenant que le serveur maître est configuré, il est temps de passer à l’esclave. Sur une autre machine, configurez une installation BIND en prison tout comme le maître.

L’esclave tirera des transferts de zone du maître. Étant donné que ces transferts de zone se font sur le réseau en texte clair, nous allons vouloir les sécuriser.

Dans les fichiers /etc/bind/named.conf.options du maître et de l’esclave, ajoutez ce qui suit

| dnssec-enable yes; |

En utilisant la commande dnssec-keygen décrite ici, créez une clé. Ajoutez le hachage MD5 à une nouvelle déclaration de clé dans les deux fichiers /etc/bind/named.conf:

| key "TRANSFER" { algorithm hmac-md5; secret "jXc2Lreaw4QHHTb/MjiHAw=="; }; |

Sur le maître, ajoutez la déclaration de serveur suivante à /etc/bind/named.conf:

| server IP-OF-SLAVE { keys { TRANSFER; }; }; |

Sur l’esclave, faites l’inverse:

| server IP-OF-MASTER { keys { TRANSFER; }; }; |

Sur le maître, ajoutez ce qui suit aux blocs de zone dans /etc/bind/named.conf.local:

| allow-transfer { key TRANSFER; }; |

Le bloc de zone sur l’esclave devrait ressembler à ceci:

| zone hemingway { type slave; file "zones/slave/slave.hemingway"; masters { IP-OF-MASTER; }; allow-notify { IP-OF-MASTER; }; }; |

Enfin, assurez-vous que les deux serveurs ont leurs horloges synchronisées. Les transferts de zone ne se produiront pas s’ils ne le sont pas.

Une fois que vous avez terminé, démarrez le serveur esclave. Vous devriez maintenant avoir un tout nouveau fichier dans /etc/bind/zones/slave/ provenant du transfert de zone. Si ce n’est pas le cas, vérifiez vos journaux – ils sont très verbeux avec les erreurs.

Fin

C’est tout ce qu’il y a à faire ! C’est beaucoup de travail et j’ai vraiment survolé, mais cela devrait vous mettre sur la bonne voie. Pour référence et informations supplémentaires, veuillez lire mes articles sur DDNS ici et vous référer au merveilleux livre Pro DNS and BIND (ce n’est pas une publicité – c’est vraiment un bon livre !).

Share: X/Twitter LinkedIn

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

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