BIND ou BIND 9 est une implémentation open source du DNS, disponible pour presque toutes les distributions Linux. BIND est l’acronyme de Berkeley Internet Name Domain et permet de publier des informations DNS sur Internet ainsi que de résoudre les requêtes DNS des utilisateurs. BIND est de loin le logiciel DNS le plus utilisé sur Internet.
Le DNS ou système de nom de domaine, comme nous le savons, est un service internet qui est utilisé pour traduire le domaine convivial en adresses IP conviviales pour les ordinateurs. Non seulement nous pouvons traduire les noms de domaine en adresses IP, mais nous pouvons également effectuer la traduction inverse, c’est-à-dire la traduction des adresses IP en noms de domaine.
Dans ce tutoriel, nous allons apprendre à configurer un serveur DNS privé en implémentant BIND 9 sur Ubuntu 22.04 ou Debian 11.

Table des matières
Comment installer Bind9 sur Ubuntu, Debian
Voici la commande APT pour installer Bind9 :
sudo apt update
sudo apt install -y bind9 bind9utils bind9-doc dnsutils
On peut maintenant passer à la configuration du serveur DNS.
Configurer Bind9 en master/primaire (Serveurs de noms faisant autorité) sur Ubuntu, Debian
Vous trouverez la liste des options dans la documentation officielle : BIND9 Configuration Reference
Configurer les options de Bind9
Un des fichiers de configuration importants pour bind est /etc/bind/named.conf.options, à partir de ce fichier nous pouvons définir les paramètres suivants :
- Editez le fichier /etc/bind/named.conf.options
- Définissez le réseau local (LAN) via un ACL. Seuls les systèmes de votre réseau privé peuvent interroger le serveur DNS pour la traduction nom/IP et vice-versa
acl internal-network { 10.0.0.0/24; };
- Activez le forward/transfert DNS avec l’adresse IP d’un serveur DNS (Google, CloudFlare, FAI). Les requêtes DNS reçues par BIND9 et qui ne correspondent à aucune zone DNS seront transférées à ces serveurs DNS
forwarders { 1.1.1.1; 8.8.8.8; };
- Ajoutez les options suivantes :
listen-on port 53 {localhost; 10.0.0.254;}; dnssec-validation auto; allow-recursion { 127.0.0.1; }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; };
- Les options sont facultatives, toutefois, pour la sécurité, il convient parfois de les configurer :
- listen-on port : permet de définir le port d’écoute et les adresses IP à bind
- dnssec-validation : Activation de la validation DNSSEC
- allow-recursion : Ce paramètre indique quels hôtes sont autorisés à effectuer des requêtes récursives via ce serveur. BIND vérifie si les paramètres suivants sont définis, dans l’ordre : allow-query-cache et allow-query. Si aucun de ces paramètres n’est défini, la valeur par défaut (localnets ; localhost 😉 est utilisée.
- auth-nxdomain : si yes est défini, les réponses NXDOMAIN, même si le serveur ne fait pas réellement autorité
- Puis si vous souhaitez mettre en place des journaux (log) :
Enfin voici un exemple complet de configuration Bind9.
Vous avez une section logging facultative en exemple. Pensez à créer le répertoire avec les bonnes permissions.
acl internal-network { 10.0.0.0/24; }; logging { channel exemple_log { file "/var/log/named/exemple.log" versions 3 size 250k; severity info; }; category default { exemple_log; }; }; options { directory "/var/cache/bind"; additional-from-auth no; additional-from-cache no; version "Bind Server"; forwarders { 8.8.8.8; 8.8.4.4; }; listen-on port 53 {localhost; 10.0.0.254;}; dnssec-validation auto; allow-recursion { 127.0.0.1; }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
Ajouter une nouvelle zone DNS dans Bind9
Une fois la configuration globale terminée, on peut ajouter la zone DNS.
- Editez le fichier /etc/bind/named.conf.local et ajoutez la zone DNS
- Par exemple ici, la zone est makdomaine.local.
zone "makdomaine.local" { type master; file "/etc/bind/db.makdomaine.local"; notify no; allow-update { none; }; allow-transfer { 10.0.0.1; }; also-notify { 10.0.0.1; }; };
- Les options type et file sont obligatoires, le reste est facultative :
- type : Le mot clé type est obligatoire pour la configuration de la zone, sauf s’il s’agit d’une configuration in-view. Les valeurs acceptables sont les suivantes : primary (oumaster), secondary (ouslave), mirror, delegation-only, forward, hint, redirect, static-stub, et stub
- file : l’emplacement du fichier de la zone
- notify : Si la valeur définie est yes (par défaut), des messages DNS NOTIFY sont envoyés lorsqu’une zone pour laquelle le serveur fait autorité est modifiée. Les messages sont envoyés aux serveurs répertoriés dans les enregistrements NS de la zone (à l’exception du serveur primaire identifié dans le champ SOA MNAME), et à tous les serveurs répertoriés dans l’option also-notify
- allow-transfert : Ceci indique quels hôtes sont autorisés à recevoir des transferts de zone du serveur
- also-notify : Cette option n’a de sens que si notify est actif pour cette zone. L’ensemble des machines qui reçoivent un message DNS NOTIFY pour cette zone est constitué de tous les serveurs de noms listés (autres que le primaire) pour la zone, plus toute adresse IP spécifiée avec also-notify
- Créez le fichier de la zone /etc/bind/db.makdomaine.local
- Inspirez vous du contenu suivant à personnaliser :
; ; Zone file for makdomaine.local ; ; The full zone file ; $TTL 3D @ IN SOA ns.makdomaine.local. dc1.makdomaine.local. ( 200608081 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 4W ; expire, seconds 1D ) ; minimum, seconds ; NS ns ; Inet Address of name server MX 10 mail ; Primary Mail Exchanger MX 20 mail2 ; Secondary Mail Exchanger ; ns A 10.0.0.254 primary A 10.0.0.254
- Répétez l’opération pour chaque zone DNS auquel Bind9 fait autorité
- Pensez à incrémenter serial lorsque vous mettez à jour les entrées de la zone DNS
Démarrez BIND9
- Enfin relancez le service bind9 avec systemctl pour prendre en compte les modifications :
sudo systemctl restart named
- Pour vérifier que le service BIND9 DNS est actif
sudo systemctl status named
- Maintenant le serveur BIND9 est actif et fonctionnel
- Si vous utilisez un firewall, il faut ouvrir et autoriser le port 53. Pour ouvrir le port avec ufw :
sudo ufw allow 53
- Pour iptables, on créé les règles pour autoriser la connexion vers et depuis le port 53 :
iptables -A INPUT -i <interface réseau> -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o <interface réseau> -m state --state ESTABLISHED,RELATED -p udp --sport 53 -j ACCEPT
- Enfin facultatif, vous pouvez changer les DNS de votre Linux pour pointer sur le serveur Bind9 :
sudo vi /etc/resolv.conf
- Modifiez la ligne avec nameserver en mettant l’adresse IP :
nameserver 10.0.0.254
Tester le serveur DNS avec dig & nslookup
Nous allons maintenant utiliser un outil CLI appelé commande dig, qui est utilisé pour trouver le DNS et ses informations connexes.
- Exécutez la commande suivante à partir du terminal :
dig primary.makdomaine.local
- Pour tester une requête de recherche DNS inversée (PTR) :
dig -x 10.0.0.254
Configurer Bind9 en slave/secondaire sur Ubuntu, Debian
La configuration globale est identique.
La différence se fait dans la déclaration de la zone DNS où le type est slave (ou secondary).
zone "makdomaine.local" { type slave; file "/etc/bind/db.makdomaine.local"; notify no; };
Liens
- DNS et serveurs de noms : comment ça marche
- La hiérarchie DNS : serveurs DNS racines, d’autorité et DNS récursifs et itératives
- Choisir le meilleur DNS rapide : le comparatif
- Quel est le meilleur DNS pour les jeux et gaming ?
- Les meilleurs DNS : la liste COMPLÈTE
- DNS Benchmark : trouver le meilleur DNS et le plus rapide
- 7 logiciels pour changer les DNS sur Windows
- Liste des serveurs DNS des principaux FAI
- Comment changer les DNS de Windows 10
- Comment changer les DNS de Windows 11
- DNS Jumper : gérer les DNS de Windows facilement
- Comment changer les serveurs DNS d’Ubuntu
- Comment changer la configuration des serveurs DNS sur Linux
- Comment activer DNS over HTTPS (DoH) dans Windows 10
- Comment activer DNS sur HTTPS (DoH) dans Windows 11
- Comment connaître ses DNS (Windows, Linux et Android)
- Comment connaître le DNS d’une adresse IP (DNS inversé)
- Comment tester les DNS (fuites DNS, Sécurité DNS)
- Chiffrement DNS : DNS over HTTPS et over TLS
- Comment activer les DNS Over HTTPS (DoH) sur Firefox, Chrome, Edge, Brave ou Opera
- Comment changer les DNS de Windows vers 1.1.1.1 CloudFlare
- RethinkDNS : Bloqueur de publicité, Firewall, DoH, DNSCrypt pour Android
- NextDNS : Bloquer les publicités et les traqueurs
- YogaDNS : Client DNS avancé
- DNS public européen : Utiliser dns0.eu (Zero, Kids)
- DNS FDN : changer de serveurs DNS
- Comment installer DNSCrypt sur Linux pour sécuriser les DNS
- Comment anonymiser ses DNS (Anonymous DNS)
- Le serveur DNS ne répond pas
- Configurer les paramètres de partages avancés de Windows 10
- Résoudre les erreurs (ERR_) sur Google Chrome ou Edge