Serveur DNS · 15 min read · Sep 09, 2025

Comment configurer un serveur DNS avec BIND sur Ubuntu 22.04

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, il est 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, 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 guide vous apprendra à installer un serveur DNS avec BIND sur un serveur Ubuntu 22.04. Ce tutoriel vous montrera comment configurer l’installation du serveur DNS BIND Master-Slave en utilisant deux serveurs Ubuntu.

Prérequis

Avant de commencer ce guide, vous devez avoir les exigences suivantes :

  • Deux serveurs Ubuntu 22.04.
  • Un utilisateur non-root avec des privilèges root/administrateur.

Configuration du FQDN (Nom de domaine entièrement qualifié)

Avant de commencer à installer les paquets BIND, vous devez vous assurer que le nom d’hôte et le FQDN de vos serveurs sont corrects. Dans cette démonstration, nous aurons deux serveurs Ubuntu avec les détails suivants :

Hostname    IP Address      FQDN                Used As  
---------------------------------------------------------  
ns1         192.168.5.21    ns1.howtoforge.local     BIND Master  
ns2         192.168.5.22    ns2.howtoforge.local     BIND Slave

Maintenant, connectez-vous à chaque serveur et exécutez la commande suivante pour configurer le FQDN (Nom de domaine entièrement qualifié).

Configurer le FQDN sur le serveur “ ns1 “.

sudo hostnamectl set-hostname ns1.howtoforge.local

Configurer le FQDN sur le serveur “ ns2 “.

sudo hostnamectl set-hostname ns2.howtoforge.local

Ensuite, éditez le fichier “ /etc/hosts “ en utilisant la commande suivante.

sudo nano /etc/hosts

Ajoutez la configuration suivante à chaque serveur.

192.168.5.21 ns1.howtoforge.local ns1  
192.168.5.22 ns2.howtoforge.local ns2

Enregistrez et fermez le fichier lorsque vous avez terminé.

Enfin, vérifiez et validez le FQDN sur chaque serveur en utilisant la commande suivante. Sur le serveur “ ns1 “, vous obtiendrez le FQDN comme “ ns1.howtoforge.local “, et sur le serveur “ ns2 “, vous obtiendrez la sortie “ ns2.howtoforge.local “.

sudo hostname -f

Installation des paquets BIND

Les paquets Bind sont disponibles par défaut dans le dépôt du serveur Ubuntu. Vous pouvez maintenant facilement installer Bind en utilisant la commande apt sur les serveurs “ns1” et “ns2”.

Exécutez la commande apt ci-dessous pour mettre à jour et rafraîchir les dépôts Ubuntu.

sudo apt update

Après cela, installez les paquets Bind en utilisant la commande suivante. saisissez Y pour confirmer l’installation et appuyez sur ENTER pour continuer. Et l’installation commencera.

sudo apt install bind9 bind9utils bind9-doc dnsutils

install bind

Après que l’installation de Bind soit terminée, éditez la configuration “ /etc/default/named “ en utilisant la commande suivante.

sudo nano /etc/default/named

La ligne “ OPTIONS= “ vous permet de configurer des options spécifiques lorsque le service BIND est en cours d’exécution. Dans cette démonstration, vous exécuterez Bind uniquement avec IPv4, donc vous devrez modifier la ligne “ OPTIONS “ comme ci-dessous.

OPTIONS="-u bind -4"

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant, exécutez la commande ci-dessous pour redémarrer le service Bind “ named “. Ensuite, vérifiez et validez l’état du service BIND. Vous devriez voir que le service Bind “ named “ fonctionne sur les deux serveurs.

sudo systemctl restart named  
sudo systemctl status named

setup bind

Configuration de BIND Master

Après avoir installé les paquets BIND sur les serveurs “ns1” et “ns2”, vous allez configurer le serveur DNS BIND. Vous allez configurer le serveur “ns1” comme le Master du serveur DNS BIND. Vous pouvez exécuter BIND sur un seul serveur, mais il est recommandé d’utiliser plusieurs serveurs pour configurer le serveur DNS à haute disponibilité.

Retournez à la session terminal du serveur “ ns1 “.

Exécutez la commande ci-dessous pour éditer le fichier de configuration “ /etc/bind/named.conf.options “.

sudo nano /etc/bind/named.conf.options

Ajoutez la configuration suivante au fichier en haut de la ligne, avant la ligne “ options {….}; “.

Avec cette configuration, vous allez créer une ACL (Liste de contrôle d’accès) avec le nom “ trusted “, qui inclut toutes les adresses IP et réseaux de confiance dans votre environnement. Assurez-vous également d’ajouter l’adresse IP du serveur local “ ns1 “ et l’adresse IP du serveur DNS secondaire “ ns2 “.

acl "trusted" {  
        192.168.5.21;    # ns1 - ou vous pouvez utiliser localhost pour ns1  
        192.168.5.22;    # ns2  
        192.168.5.0/24;  # réseaux de confiance  
};

Maintenant, apportez des modifications à la section “ options {..}; “ comme ci-dessous.

Dans l’exemple suivant, nous désactivons le support pour IPv6 en commentant l’option “ listen-on-v6 “, en activant et en permettant la récursivité de l’ACL “ trusted “, et en exécutant le service BIND sur l’adresse IP spécifique “ ns1 “ “ 192.168.5.21 “. De plus, nous désactivons le transfert de zone par défaut et définissons les transféreurs spécifiques pour le serveur DNS BIND vers Google Public DNS “ 8.8.8.8 “ et “ 8.8.4.4 “.

options {  
        directory "/var/cache/bind";  
        //listen-on-v6 { any; };        # désactiver bind sur IPv6  
        recursion yes;                 # active les requêtes récursives  
        allow-recursion { trusted; };  # permet les requêtes récursives de "trusted" - référencé à l'ACL  
        listen-on { 192.168.5.21; };   # adresse IP de ns1  
        allow-transfer { none; };      # désactiver les transferts de zone par défaut  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
};

Enregistrez et fermez le fichier lorsque vous avez terminé.

Enfin, exécutez la commande suivante pour vérifier et valider le fichier de configuration “ /etc/bind/named.conf.options “. S’il n’y a pas de message de sortie, alors votre configuration est correcte.

sudo named-checkconf /etc/bind/named.conf.options

Configuration des zones

Après avoir configuré la configuration de base du Master BIND, vous allez maintenant configurer les zones pour votre nom de domaine. Dans l’exemple suivant, nous utiliserons le nom de domaine “ howtoforge.local “ avec le serveur de noms “ ns1.howtoforge.local “ et “ ns2.howtoforge.local “.

Éditez le fichier de configuration “ /etc/bind/named.local “ en utilisant la commande suivante.

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

Dans cette configuration, vous allez définir deux fichiers de zone, une zone directe et une zone inverse pour votre nom de domaine. La zone directe contiendra la configuration de l’endroit où vos noms de domaine seront résolus à l’adresse IP, tandis que la zone inverse traduira l’adresse IP au nom de domaine.

Dans l’exemple suivant, nous allons définir la zone directe “ /etc/bind/zones/db.howtoforge.local “ pour le domaine “ howtoforge.local “ et la zone inverse “ /etc/bind/zones/db.192.168.5 “.

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, exécutez la commande suivante pour créer un nouveau répertoire “ /etc/bind/zones “ qui sera utilisé pour stocker les fichiers de configuration de zone.

sudo mkdir -p /etc/bind/zones/

Après cela, copiez la configuration de zone directe par défaut “/etc/bind/zones/db.howtoforge.local” et éditez le fichier en utilisant la commande suivante.

sudo cp /etc/bind/db.local /etc/bind/zones/db.howtoforge.local  
sudo nano /etc/bind/zones/db.howtoforge.local

Changez l’enregistrement SOA par défaut avec votre nom de domaine. De plus, vous devrez changer le numéro “ Serial “ à l’intérieur des enregistrements SOA chaque fois que vous apportez des modifications au fichier, et cela doit être le même numéro “Serial” que le serveur DNS secondaire/esclave.

Ensuite, vous pouvez définir des enregistrements NS et des enregistrements A pour votre serveur DNS. Dans cet exemple, le serveur de noms sera “ ns1.howtoforge.local “ avec l’adresse IP de l’enregistrement A “ 192.168.5.21 “ et “ ns2.howtoforge.local “ avec l’enregistrement A de l’adresse IP du serveur DNS secondaire “ 192.168.5.22 “.

Enfin, vous pouvez définir d’autres noms de domaine. Dans cet exemple, nous allons définir un enregistrement MX (gestionnaire de mail) pour le domaine “ howtoforge.local “ qui sera géré par le serveur de mail “ mail.howtoforge.local “. De plus, nous allons définir le nom de domaine “ howtoforge.local “ qui sera résolu au serveur avec l’adresse IP “ 192.168.5.100 “ et le sous-domaine pour le serveur de mail “ mail.howtoforge.local “ à l’adresse IP du serveur “ 192.168.5.120 “.

;  
; Fichier de données BIND pour l'interface de boucle locale  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                         604800         ; Refresh  
                          86400         ; Retry  
                        2419200         ; Expire  
                         604800 )       ; Negative Cache TTL  
;  
; 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.21  
ns2.howtoforge.local.          IN      A       192.168.5.22  
; Gestionnaire de mail 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.100  
mail.howtoforge.local.       IN      A      192.168.5.120

Enregistrez et fermez le fichier lorsque vous avez terminé.

setup forward zone

Ensuite, copiez le fichier de configuration de zone inverse par défaut vers “ /etc/bind/zones/db.192.168.5 “ et éditez le nouveau fichier en utilisant la commande suivante.

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5  
sudo nano /etc/bind/zones/db.192.168.5

Changez l’enregistrement SOA par défaut en utilisant votre nom de domaine. De plus, n’oubliez pas de changer le numéro “ Serial “ à l’intérieur de l’enregistrement SOA.

Définissez des enregistrements NS pour vos serveurs DNS. Ce sont les mêmes serveurs de noms que vous avez utilisés dans la zone directe.

Enfin, définissez les enregistrements PTR pour vos noms de domaine. Le numéro sur les enregistrements PTR est le dernier numéro de l’adresse IP. Dans cet exemple, le serveur de noms “ ns1.howtoforge.local “ est résolu à l’adresse IP “ 192.168.5.21 “, donc maintenant l’enregistrement PTR sera “ 21 “ et ainsi de suite pour les autres noms de domaine.

;  
; Fichier de données inverses BIND pour l'interface de boucle locale  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                         604800         ; Refresh  
                          86400         ; Retry  
                        2419200         ; Expire  
                         604800 )       ; Negative Cache TTL  
;  
; serveurs de noms - Enregistrements NS  
      IN      NS      ns1.howtoforge.local.  
      IN      NS      ns2.howtoforge.local.  
; Enregistrements PTR  
21   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.21  
22   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.22  
100  IN      PTR     howtoforge.local.        ; 192.168.5.100  
120  IN      PTR     mail.howtoforge.local.   ; 192.168.5.120

Enregistrez et fermez le fichier lorsque vous avez terminé.

setup reverse zone

Maintenant, exécutez la commande suivante pour vérifier les configurations BIND et assurez-vous de ne pas obtenir de message d’erreur.

sudo named-checkconf

Ensuite, exécutez la commande suivante pour vérifier et valider chaque fichier de zone que vous venez de créer, le fichier de configuration de la zone directe et de la zone inverse. Si vos fichiers de zone n’ont pas d’erreur, vous devriez voir le message de sortie tel que “ OK “. S’il n’y a pas d’erreur, la commande vous indiquera quelle ligne du fichier a causé une erreur.

sudo named-checkzone howtoforge.local /etc/bind/zones/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5

check zone files

Pour terminer la configuration du Master BIND, exécutez la commande ci-dessous pour redémarrer le service BIND et appliquer les nouvelles modifications aux configurations que vous avez effectuées.

sudo systemctl restart named

Configuration de BIND Slave

Maintenant que vous avez terminé la configuration du serveur DNS Master BIND. Il est temps de configurer le serveur “ns2” comme le secondaire ou l’esclave du serveur DNS BIND.

Le serveur Master stocke les fichiers de zone qui contiennent la configuration DNS de votre domaine et gère les requêtes récursives ou itératives. Le serveur DNS secondaire/esclave stocke les enregistrements DNS pendant une période de temps temporaire, et ces enregistrements DNS sont automatiquement transférés depuis le serveur Master BIND.

Maintenant, passez à la session terminal du “ ns2 “ et commencez à configurer le serveur “ ns2 “ comme un Secondaire/Esclave du serveur DNS BIND.

Exécutez la commande suivante pour éditer le fichier de configuration “ /etc/bind/named.conf.options

sudo nano /etc/bind/named.conf.options

En haut de la ligne, ajoutez la configuration suivante. Cela créera la même ACL (Liste de contrôle d’accès) que sur le serveur Master.

acl "trusted" {  
        192.168.5.21;    # ns1  
        192.168.5.22;    # ns2 - ou vous pouvez utiliser localhost pour ns2  
        192.168.5.0/24;  # réseaux de confiance  
};

À l’intérieur de la ligne “ options {…}; “, vous pouvez changer la configuration comme ci-dessous. Cette configuration est toujours la même que sur le serveur DNS Master BIND, et la seule différence ici est l’option “listen-on “ qui est spécifiée à l’adresse IP du serveur “ ns2 “.

options {  
        directory "/var/cache/bind";  
        //listen-on-v6 { any; };        # désactiver bind sur IPv6  
        recursion yes;                 # active les requêtes récursives  
        allow-recursion { trusted; };  # permet les requêtes récursives de "trusted" - référencé à l'ACL  
        listen-on { 192.168.5.22; };   # adresse IP de ns2  
        allow-transfer { none; };      # désactiver les transferts de zone par défaut  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
};

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, éditez le fichier de configuration “ /etc/bind/named.conf.local “ en utilisant la commande suivante pour configurer le serveur “ ns2 “ comme le serveur DNS secondaire/esclave.

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

Ajoutez la configuration suivante au fichier. Comme vous pouvez le voir, nous définissons les zones directe et inverse, mais avec le “ type slave “ et définissons le serveur DNS Master “ 192.168.5.21 “. Vous n’avez pas besoin de créer le fichier de zone car les enregistrements et données DNS seront automatiquement transférés depuis le serveur Master DNS et seront stockés temporairement pendant une période de temps sur le serveur DNS secondaire/esclave.

zone "howtoforge.local" {  
    type slave;  
    file "/etc/bind/zones/db.howtoforge.local";  
    masters { 192.168.5.21; };           # adresse IP de ns1 - DNS master  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type slave;  
    file "/etc/bind/zones/db.192.168.5";  
    masters { 192.168.5.21; };  # adresse IP de ns1 - DNS master  
};

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant, exécutez la commande suivante pour vérifier et valider la configuration BIND et assurez-vous que toutes les configurations sont correctes. Ensuite, vous pouvez redémarrer le service BIND “named” sur le serveur “ ns2 “ pour appliquer les nouvelles modifications. Et vous avez maintenant terminé la configuration sur le serveur “ ns2 “ en tant que secondaire/esclave du serveur DNS BIND.

sudo named-checkconf  
sudo systemctl restart named

setup secondary dns

Enfin, exécutez la commande suivante pour vérifier et valider le service BIND “ named “ sur le serveur “ ns2 “. Et assurez-vous que le service “ named “ fonctionne.

sudo systemctl status named

check named status secondary dns

Vérification du serveur DNS depuis la machine cliente

Sur la machine cliente, il existe plusieurs façons de configurer le résolveur DNS. Vous pouvez configurer le résolveur DNS depuis le NetworkManager ou depuis la configuration netplan. Mais, la façon la plus simple est de configurer le résolveur DNS manuellement à travers le fichier “/etc/resolv.conf”. Cela vous permet de configurer un résolveur DNS statique pour les machines clientes.

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 Master DNS BIND, le serveur DNS BIND secondaire, et le résolveur DNS public de Google. 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.21  
nameserver 192.168.5.22  
nameserver 8.8.8.8  
search howtoforge.local

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, exécutez la commande ci-dessous pour installer quelques utilitaires DNS sur votre machine cliente. Dans cet exemple, la machine cliente est un système Ubuntu, donc nous installons l’utilitaire DNS en utilisant la commande apt comme ci-dessous.

sudo apt install dnsutils bind9-utils

Après avoir installé l’utilitaire DNS sur votre système, vous pouvez commencer à vérifier tous les enregistrements 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.100 “, tandis que le sous-domaine “ mail.howtoforge.local “ est géré par l’adresse IP du serveur “ 192.168.5.120 “.

dig howtoforge.local +short  
dig howtoforge.local

check dns records dig

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

check dns record using dig

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

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

check mx records

Maintenant, vous pouvez également 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.21 “ est inversée au serveur de noms “ ns1.howtoforge.local “, l’adresse IP “ 192.168.5.22 “ est inversée au serveur de noms “ ns2.howtoforge.local “, et l’adresse IP “ 192.168.5.100 “ est inversée au nom de domaine principal “ howtoforge.local “, et enfin l’adresse IP “ 192.168.5.120 “ est inversée au sous-domaine “ mail.howtoforge.local.

slookup 192.168.5.21  
slookup 192.168.5.22  
slookup 192.168.5.100  
slookup 192.168.5.120

check reverse dns

Conclusion

Félicitations ! Tout au long de ce tutoriel, vous avez appris l’installation et la configuration du serveur DNS BIND sur les serveurs Ubuntu 22.04. Vous avez réussi à configurer le serveur DNS BIND Master-Slave en utilisant deux serveurs Ubuntu 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.