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 SlaveMaintenant, 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.localConfigurer le FQDN sur le serveur “ ns2 “.
sudo hostnamectl set-hostname ns2.howtoforge.localEnsuite, éditez le fichier “ /etc/hosts “ en utilisant la commande suivante.
sudo nano /etc/hostsAjoutez la configuration suivante à chaque serveur.
192.168.5.21 ns1.howtoforge.local ns1
192.168.5.22 ns2.howtoforge.local ns2Enregistrez 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 -fInstallation 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 updateAprè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
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/namedLa 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
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.optionsAjoutez 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.optionsConfiguration 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.localDans 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.localChangez 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.120Enregistrez et fermez le fichier lorsque vous avez terminé.

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.5Changez 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.120Enregistrez et fermez le fichier lorsque vous avez terminé.

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-checkconfEnsuite, 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
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 namedConfiguration 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.optionsEn 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.localAjoutez 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
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
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.confAjoutez 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.localEnregistrez 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-utilsAprè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
dig mail.howtoforge.local +short
dig mail.howtoforge.local
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
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
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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.