Serveur DNS · 15 min read · Sep 08, 2025

Comment installer un serveur DNS avec BIND sur Rocky Linux 9

BIND ou Berkeley Internet Name Domain est un logiciel de serveur DNS gratuit et open-source. C’est l’un des logiciels de serveur DNS les plus populaires utilisés par plus de 70 % des DNS sur Internet. BIND existe depuis les années 1980, bien connu pour sa flexibilité, ses performances et ses fonctionnalités. BIND peut être utilisé à la fois comme DNS autoritaire et DNS de mise en cache, et prend en charge l’équilibrage de charge, la mise à jour dynamique, le DNS fractionné, DNSSEC, IPv6, et bien plus encore.

Le logiciel DNS BIND est l’un des serveurs DNS les plus fiables pour les systèmes d’exploitation de type Unix. Il est disponible sur la plupart des distributions Linux et fournit des outils supplémentaires pour le diagnostic et le test du serveur DNS.

Ce tutoriel vous montrera comment configurer un serveur DNS avec BIND sur un serveur Rocky Linux 9. BIND est l’un des logiciels de serveur DNS les plus populaires qui offre diverses fonctionnalités telles que DNS autoritaire, DNS uniquement en cache, équilibrage de charge DNS de base, DNS fractionné, DNSSEC, IPv6, et bien plus encore.

Prérequis

Avec ce tutoriel, vous allez configurer et mettre en œuvre un serveur DNS BIND avec une architecture maître-esclave. Vous aurez donc besoin de deux serveurs Rocky Linux. De plus, vous aurez besoin de privilèges root/administrateur sur chaque serveur.

Pour configurer un serveur DNS public qui peut gérer votre domaine (serveur DNS autoritaire), vous devez également avoir le nom de domaine enregistré et les ‘Glue Records’ configurés.

De plus, dans ce guide, nous supposerons que vous avez SELinux en mode ‘permissif’.

Préparation du système

Pour commencer ce guide, vous allez configurer le FQDN (Nom de domaine entièrement qualifié) correct sur chacun de vos serveurs Rocky Linux. Cela peut être fait via l’utilitaire de commande ‘hostnamectl‘ et le fichier ‘/etc/hosts‘.

Voici les détails des serveurs qui seront utilisés comme exemple pour ce guide :

Hostname    IP Address          FQDN                    Used as  
---------------------------------------------------------------  
ns1         192.168.5.100       ns1.howtoforge.local         Master  
ns2         192.168.5.120       ns2.howtoforge.local         Slave

Sur le serveur maître, exécutez l’utilitaire de commande hostnamectl ci-dessous pour configurer le fqdn à ‘ns1.howtoforge.local‘.

sudo hostnamectl set-hostname ns1.howtoforge.local

Vous devez également exécuter la commande hostnamectl sur le serveur esclave pour configurer le fqdn à ‘ns2.howtoforge.local‘.

sudo hostnamectl set-hostname ns2.howtoforge.local

Ensuite, ouvrez le fichier ‘/etc/hosts’ sur les serveurs Maître et Esclave en utilisant la commande de l’éditeur nano suivante.

sudo nano /etc/hosts

Ajoutez la ligne suivante au fichier.

192.168.5.100   ns1.howtoforge.local     ns1  
192.168.5.120   ns2.howtoforge.local     ns2

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Enfin, exécutez la commande ‘hostname’ suivante pour vérifier le fqdn sur chaque serveur. Vous devriez voir que le serveur Maître a le fqdn comme ‘ns1.howtoforge.local‘, et le serveur Esclave a le fqdn ‘ns2.howtoforge.local‘.

sudo hostname -f

Voici la sortie du serveur Maître.

fqdn master server

Et voici la sortie du serveur Esclave.

fqdn slave server

Avec le fqdn configuré, vous êtes prêt à installer BIND sur les serveurs Rocky Linux.

Installation des paquets BIND

Par défaut, le dépôt AppStream de Rocky Linux fournit la dernière version stable du paquet BIND. Au moment de la rédaction de cet article, la version stable actuelle de BIND est v9.16.

Dans cette étape, vous allez installer les paquets BIND sur les serveurs Maître et Esclave. Ensuite, configurez BIND pour fonctionner uniquement sur IPv4 et configurez le firewalld pour autoriser le port DNS.

Exécutez la commande dnf ci-dessous pour installer les paquets BIND sur les serveurs Maître et Esclave. Lorsque vous êtes invité à confirmer, saisissez y pour confirmer et appuyez sur ENTRÉE pour continuer.

sudo dnf install bind bind-utils

install bind named

Après l’installation des paquets BIND, ouvrez la configuration ‘/etc/sysconfig/named‘ en utilisant la commande de l’éditeur nano suivante.

sudo nano /etc/sysconfig/named

Ajoutez l’option par défaut ‘OPTIONS=..‘ avec la ligne suivante. Cette option de commande pour ‘bind’ ou ‘named’ fera fonctionner BIND uniquement sur IPv4.

OPTIONS="-4"

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ensuite, exécutez l’utilitaire de commande systemctl ci-dessous pour démarrer et activer le service BIND ‘named‘. Le service ‘named’ devrait maintenant être en cours d’exécution et activé, ce qui démarrera automatiquement au démarrage.

sudo systemctl start named  
sudo systemctl enable named

start enable named

Maintenant, vérifiez le service ‘named’ pour vous assurer que le service est en cours d’exécution et activé via la commande suivante.

sudo systemctl is-enabled named  
sudo systemctl status named

Vous recevrez une sortie similaire à la suivante - Le service BIND ‘named’ est activé et il est actuellement en cours d’exécution.

verify named

Avec le service BIND ‘named’ en cours d’exécution, vous devrez ajouter le port DNS au firewalld, qui est activé et en cours d’exécution par défaut sur Rocky Linux.

Exécutez l’utilitaire de commande firewall-cmd ci-dessous pour ajouter le service DNS au firewalld. Ensuite, rechargez le firewalld pour appliquer les modifications.

sudo firewall-cmd --add-service=dns --permanent  
sudo firewall-cmd --reload

Si vous vérifiez la liste des services activés sur firewalld, vous devriez voir que le service DNS est activé. Exécutez la commande firewall-cmd ci-dessous pour vérifier la liste des services.

sudo firewall-cmd --list-services

Sortie :

setup firewalld

À ce stade, vous avez terminé la configuration du fqdn, installé les paquets BIND et également configuré le firewalld. Cela dit, vous pouvez maintenant commencer à configurer le BIND Maître sur le serveur Maître.

Configuration du serveur DNS BIND Maître

Dans cette étape, vous allez configurer le serveur BIND Maître en utilisant le Rocky Linux ‘ns1.howtoforge.local‘ et l’adresse IP du serveur est ‘192.168.5.100‘. Assurez-vous d’exécuter les commandes suivantes sur le serveur Maître.

Vous allez configurer le serveur BIND Maître avec les étapes suivantes :

  • La configuration de base inclura la configuration des ACL (Listes de contrôle d’accès), la définition de quelle adresse IP exécuter le service BIND, la configuration des forwarders, et bien plus encore.
  • Configuration des zones - C’est ici que vous créez des configurations pour votre domaine. Cela inclut la configuration du domaine principal et la configuration DNS inverse.

Configuration de base

La configuration BIND par défaut sur la distribution basée sur RHEL est disponible à ‘/etc/named.conf’.

Maintenant, ouvrez le fichier ‘/etc/named.conf‘ en utilisant la commande de l’éditeur nano ci-dessous.

sudo nano /etc/named.conf

Changez la configuration par défaut avec les lignes suivantes.

acl "trusted" {  
        192.168.5.100;    # ns1 - ou vous pouvez utiliser localhost pour ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # réseaux de confiance  
};  
  
options {  
        listen-on port 53 { 192.168.5.100; };  
  
        // listen-on-v6 port 53 { ::1; };  
          
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        secroots-file   "/var/named/data/named.secroots";  
        recursing-file  "/var/named/data/named.recursing";  
          
        allow-query     { localhost; trusted; };  
  
        recursion yes;  
        allow-recursion { trusted; };  
        allow-transfer { localhost; 192.168.5.120; };  
  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

named.conf file

Avec cette configuration, vous allez configurer BIND avec les configurations suivantes :

  • Configurer une ACL ‘trusted‘ qui permet toute requête des réseaux locaux.
  • Exécuter le service BIND à ‘192.168.5.100‘ avec le port par défaut ‘53‘.
  • Activer la récursion et autoriser la récursion des réseaux de l’ACL ‘trusted‘.
  • Autoriser le transfert de zones au serveur Esclave avec l’adresse IP ‘192.168.5.120‘.
  • Configurer des forwarders avec le serveur DNS public 1.1.1.1 de Cloudflare et 8.8.8.8 de Google.

Ensuite, exécutez la commande ci-dessous pour vérifier la configuration BIND ‘/etc/named.conf‘.

sudo named-checkconf /etc/named.conf

Enfin, exécutez l’utilitaire de commande systemctl ci-dessous pour redémarrer le service BIND ‘named’ et appliquer les modifications.

sudo systemctl restart named

Vous avez maintenant terminé la configuration de base du serveur DNS BIND.

Configuration des zones

Maintenant, vous allez configurer des zones avec le serveur DNS BIND. Vous allez créer un nouveau serveur DNS avec l’adresse ‘ns1.howtoforge.local’ et ‘ns2.howtoforge.local’.

Pour commencer, ouvrez la configuration BIND ‘/etc/named.conf‘ via la commande de l’éditeur nano ci-dessous.

sudo nano /etc/named.conf

Ajoutez la configuration suivante au bas de la ligne.

include "/etc/named/zones.conf.local";

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ensuite, créez une nouvelle configuration ‘/etc/named/zones.conf.local‘ en utilisant l’éditeur nano ci-dessous.

sudo nano /etc/named/zones.conf.local

Ajoutez les lignes suivantes au fichier.

zone "howtoforge.local" {  
    type master;  
    file "db.howtoforge.local";        # chemin du fichier de zone  
    allow-transfer { 192.168.5.120; };           # adresse IP ns2 - DNS secondaire  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type master;  
    file "db.192.168.5";  # sous-réseau 192.168.5.0/24  
    allow-transfer { 192.168.5.120; };  # adresse IP privée ns2 - DNS secondaire  
};

Enregistrez et fermez le fichier lorsque vous avez terminé.

Avec cette configuration, vous allez définir les configurations suivantes :

  • Créer deux zones pour le domaine ‘howtoforge.local‘ et le DNS inverse ‘5.168.192.in-addr.arpa‘.
  • Les deux zones sont de type ‘master‘.
  • Autoriser le transfert de zone au serveur DNS Esclave qui sera exécuté sur l’adresse IP du serveur ‘192.168.5.120‘.

zones list

Ensuite, créez une nouvelle configuration de zone DNS, ‘/var/named/db.howtoforge.local’, en utilisant la commande de l’éditeur nano suivante.

sudo nano /var/named/db.howtoforge.local

Ajoutez les lignes suivantes au fichier.

;  
; Fichier de données BIND pour l'interface de boucle locale  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Numéro de série  
                         604800         ; Rafraîchir  
                          86400         ; Réessayer  
                        2419200         ; Expirer  
                         604800 )       ; TTL négatif  
;  
; Enregistrements NS pour les serveurs de noms  
    IN      NS      ns1.howtoforge.local.  
    IN      NS      ns2.howtoforge.local.  
  
; Enregistrements A pour les serveurs de noms  
ns1.howtoforge.local.          IN      A       192.168.5.100  
ns2.howtoforge.local.          IN      A       192.168.5.120  
  
; Gestionnaire de courrier ou enregistrement MX pour le domaine howtoforge.local  
howtoforge.local.    IN     MX   10   mail.howtoforge.local.  
  
; Enregistrements A pour les noms de domaine  
howtoforge.local.            IN      A      192.168.5.50  
mail.howtoforge.local.       IN      A      192.168.5.15

Enregistrez et fermez le fichier lorsque vous avez terminé.

Dans cet exemple, vous allez configurer des zones avec les configurations suivantes :

  • Définir les enregistrements de serveur de noms ‘ns1.howtoforge.local‘ avec l’adresse IP ‘192.168.5.100‘ et le ‘ns2.howtoforge.local‘ avec l’adresse IP ‘192.168.5.120‘.
  • Définir deux domaines supplémentaires, ‘howtoforge.local‘, qui seront résolus à l’adresse IP du serveur ‘192.168.5.50‘ et le domaine ‘mail.howtoforge.local‘ à l’adresse IP ‘192.168.5.15‘.
  • Vous allez également créer un enregistrement MX pour le domaine ‘howtoforge.local‘ que le serveur de messagerie ‘mail.howtoforge.local’ gérera.

zones nameserver

Ensuite, vous allez commencer à configurer le DNS inverse pour le domaine howtoforge.local.

Créez une nouvelle configuration DNS inverse ‘/var/named/db.192.168.5‘ en utilisant la commande de l’éditeur nano ci-dessous.

sudo nano /var/named/db.192.168.5

Ajoutez les lignes suivantes au fichier.

;  
; Fichier de données inverses BIND pour l'interface de boucle locale  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Numéro de série  
                         604800         ; Rafraîchir  
                          86400         ; Réessayer  
                        2419200         ; Expirer  
                         604800 )       ; TTL négatif  
;  
; serveurs de noms - Enregistrements NS  
      IN      NS      ns1.howtoforge.local.  
      IN      NS      ns2.howtoforge.local.  
  
; Enregistrements PTR  
100   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.100  
120   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.120  
50    IN      PTR     howtoforge.local.        ; 192.168.5.50  
15    IN      PTR     mail.howtoforge.local.   ; 192.168.5.15

Enregistrez et fermez le fichier lorsque vous avez terminé.

Avec cette configuration, vous allez configurer le DNS inverse ou les enregistrements PTR comme ci-dessous.

  • Dans la configuration DNS inverse, vous allez également définir le serveur de noms ns1.howtoforge.local et ns2.howtoforge.local.
  • Chaque configuration DNS inverse utilise le dernier chiffre de l’adresse IP qui est résolu à chaque domaine. Dans cet exemple, le serveur de noms ns1.howtoforge.local avec l’adresse IP ‘192.168.5.100’, et l’enregistrement PTR devrait être ‘100‘.
  • Le reste des enregistrements PTR est le même que décrit ci-dessus.

zones reverse dns

À ce stade, vous avez créé deux configurations de zones pour le domaine ‘howtoforge.local‘ et créé un serveur de noms ‘ns1.howtoforge.local‘ et ‘ns2.howtoforge.local‘.

Maintenant, exécutez la commande chmod ci-dessous pour changer la propriété des deux configurations de zone.

sudo chown -R named: /var/named/{db.howtoforge.local,db.192.168.5}

Ensuite, vérifiez les fichiers de configuration de zone via l’utilitaire de commande ‘named-checkconf‘ ci-dessous.

sudo named-checkconf
sudo named-checkzone howtoforge.local /var/named/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

Si vous avez des configurations BIND appropriées, vous recevrez une sortie comme la capture d’écran suivante.

setup master bind dns server

Enfin, exécutez la commande systemctl ci-dessous pour redémarrer le service BIND ‘named’ et appliquer les modifications. Ensuite, vérifiez l’état du service BIND pour vous assurer que le service est en cours d’exécution.

sudo systemctl restart named  
sudo systemctl status named

Vous recevrez une sortie similaire à la suivante - le service BIND ‘named‘ est en cours d’exécution et vous avez terminé la configuration du BIND Maître.

restart verify master

Dans l’étape suivante, vous allez configurer le serveur BIND Esclave.

Configuration du serveur DNS BIND Esclave

Après avoir configuré le serveur DNS Maître, vous allez commencer à configurer le serveur BIND Esclave sur le serveur ‘ns2.howtoforge.local’ avec l’adresse IP ‘192.168.5.120’.

La configuration de base pour ‘named.conf’ est similaire à celle du BIND Maître, et pour les fichiers de zone, vous pouvez définir le nom de fichier sans créer de fichier réel sur le serveur BIND Esclave.

Avant de commencer, assurez-vous d’exécuter les commandes suivantes sur le serveur BIND Esclave.

Maintenant, ouvrez la configuration BIND ‘/etc/named.conf‘ sur le serveur Esclave via la commande de l’éditeur nano ci-dessous.

sudo nano /etc/named.conf

Changez la configuration par défaut avec les lignes suivantes.

acl "trusted" {  
        192.168.5.100;    # ns1 - ou vous pouvez utiliser localhost pour ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # réseaux de confiance  
};  
  
options {  
        listen-on port 53 { 192.168.5.120; };  
  
        //listen-on-v6 port 53 { ::1; };  
          
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        secroots-file   "/var/named/data/named.secroots";  
        recursing-file  "/var/named/data/named.recursing";  
  
        allow-query     { any; };  
  
        recursion yes;  
        allow-recursion { trusted; };  
        allow-transfer { none; };  
  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
  
};

Les paramètres sont similaires à ceux du serveur BIND Maître, et voici quelques différences dans les configurations.

  • Le service BIND sera exécuté sur l’adresse IP ‘192.168.5.120‘ sur le serveur Esclave.
  • La récursion est activée, mais l’option ‘allow-transfer’ est configurée sur ‘none‘.

named.conf slave dns bind

Ajoutez maintenant la ligne suivante au bas du fichier ‘named.conf’ pour définir les zones.

include "/etc/named/zones.conf.local";

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ensuite, créez une nouvelle configuration ‘/etc/named/zones.conf.local’ en utilisant la commande de l’éditeur nano suivante.

sudo nano /etc/named/zones.conf.local

Ajoutez les lignes suivantes au fichier.

zone "howtoforge.local" {  
    type slave;  
    file "slaves/db.howtoforge.local";  
    masters { 192.168.5.100; };           # adresse IP ns1 - DNS Maître  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type slave;  
    file "slaves/db.192.168.5";  
    masters { 192.168.5.100; };  # adresse IP ns1 - DNS Maître  
};

Enregistrez et fermez le fichier lorsque vous avez terminé.

Avec cela, vous allez définir certaines configurations ci-dessous sur le serveur BIND Esclave :

  • Définir deux zones pour le domaine ‘howtoforge.local‘ et son DNS inverse.
  • Les deux zones sont de type ‘slave‘.
  • Le fichier de zone pour chacune sera pris dans le répertoire ‘/var/named/slaves‘, qui est transféré depuis le serveur BIND Maître.

zones settings

Ensuite, exécutez la commande ‘named-checkconf’ ci-dessous pour vérifier les configurations BIND. Ensuite, redémarrez le service BIND ‘named’ sur le serveur Esclave via la commande systemctl ci-dessous.

sudo named-checkconf  
sudo systemctl restart named

Vous ne recevrez aucun message d’erreur si vous avez une configuration BIND appropriée.

Enfin, exécutez la commande systemctl ci-dessous pour vérifier le service BIND ‘named‘ sur le serveur Esclave pour vous assurer que le service est en cours d’exécution.

sudo systemctl status named

Vous recevrez maintenant une sortie similaire à la suivante - le service BIND ‘named’ est en cours d’exécution sur le serveur BIND Esclave.

check named

À ce stade, vous avez terminé l’installation de BIND DNS avec l’architecture Maître-Esclave. Vous serez maintenant prêt à commencer les tests depuis la machine cliente.

Test depuis le client

Cet exemple utilise un système Debian comme machine cliente, donc installez quelques paquets ci-dessous via APT avant de commencer.

sudo apt install dnsutils bind9-utils

Saisissez y lorsque vous êtes invité à confirmer et appuyez sur ENTRÉE pour continuer.

install dnsutils

Ensuite, exécutez la commande suivante pour supprimer le fichier de lien par défaut “/etc/resolv.conf“ et créer un nouveau fichier en utilisant l’éditeur nano.

sudo unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

Ajoutez la configuration suivante au fichier. Dans la configuration suivante, nous définissons trois résolveurs différents, le DNS Maître BIND, le serveur DNS BIND secondaire et le résolveur DNS public Cloudflare. Lorsque la machine cliente demande des informations sur le nom de domaine, les informations seront prises du résolveur DNS, de haut en bas.

nameserver 192.168.5.100  
nameserver 192.168.5.120  
nameserver 1.1.1.1  
search howtoforge.local

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant, vous êtes prêt à vérifier votre serveur DNS depuis la machine cliente.

Exécutez la commande dig ci-dessous pour vérifier le nom de domaine “howtoforge.local” et “mail.howtoforge.local”. Et vous devriez voir que “howtoforge.local“ est résolu à l’adresse IP du serveur “192.168.5.50“, tandis que le sous-domaine “mail.howtoforge.local“ est géré par l’adresse IP du serveur “192.168.5.15“.

dig howtoforge.local +short  
dig howtoforge.local
dig mail.howtoforge.local +short  
dig mail.howtoforge.local

Vérification du nom de domaine howtoforge.local.

verify domain

vérification du sous-domaine mail.howtoforge.local.

verify domain name

Ensuite, exécutez la commande dig ci-dessous pour vérifier le gestionnaire de courrier pour le nom de domaine “howtoforge.local“. Et vous devriez obtenir la sortie que “mail.howtoforge.local“ gère le courrier pour le domaine principal “howtoforge.local“.

dig howtoforge.local MX +short  
dig howtoforge.local MX

verify mx records

Vous pouvez vérifier la configuration de la zone inverse pour votre nom de domaine en utilisant la commande nslookup.

Exécutez la commande nslookup ci-dessous pour vérifier et valider le DNS inverse pour certaines adresses IP.

Maintenant, vous devriez voir que l’adresse IP “192.168.5.100“ est inversée au serveur de noms “ns1.howtoforge.local“, l’adresse IP “192.168.5.120“ est inversée au serveur de noms “ns2.howtoforge.local“, et l’adresse IP “192.168.5.50“ est inversée au nom de domaine principal “howtoforge.local“, et enfin l’adresse IP “192.168.5.15“ est inversée au sous-domaine “mail.howtoforge.local“.

slookup 192.168.5.100  
slookup 192.168.5.120  
slookup 192.168.5.50  
slookup 192.168.5.15

verify nslookup

À ce stade, vous avez terminé l’installation du serveur DNS BIND avec l’architecture Maître-Esclave sur Rocky Linux. Vous avez également appris à tester le serveur DNS via divers utilitaires de commande tels que dig et nslookup.

Conclusion

Félicitations ! Tout au long de ce tutoriel, vous avez appris l’installation et la configuration du serveur DNS BIND sur les serveurs Rocky Linux 9. Vous avez réussi à configurer le serveur DNS BIND Maître-Esclave en utilisant deux serveurs Rocky Linux différents. De plus, vous avez appris les commandes de base de Dig et Nslookup pour vérifier et valider les enregistrements et la configuration DNS.

Share: X/Twitter LinkedIn

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

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