CVE Watch
CybersécuritéArticle5 min de lecture

Installation d'un serveur DNS avec BIND9 sur Ubuntu Server - guide complet

MB
Massioudath Bankole
22 mars 2026 · 18 vues

Dans ce guide, je t'explique comment installer et configurer un serveur DNS interne avec BIND9 sur Ubuntu Server. Nous allons créer une zone de résolution directe (nom -> IP) et une zone inversée (IP -> nom), et résoudre les bugs courants rencontrés en chemin.

Prérequis : Ubuntu Server 22.04, accès sudo.

Adapte les valeurs suivantes à ton environnement :

  • Domaine local : mondomaine.local
  • IP du serveur DNS : 192.168.1.10
  • Réseau : 192.168.1.0/24

C'est quoi BIND9 ?

BIND9 (Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sous Linux. Il permet de :

  • Résoudre des noms d'hôtes en adresses IP (zone directe)
  • Résoudre des adresses IP en noms d'hôtes (zone inversée)
  • Servir de DNS interne pour un réseau local

Étape 1 : Installer BIND9

sudo apt-get update
sudo apt-get install bind9 dnsutils

dnsutils installe des outils de diagnostic comme nslookup et dig.


Étape 2 : Comprendre les fichiers de configuration

ls -l /etc/bind

BIND9 s'appuie sur plusieurs fichiers :

  • named.conf - fichier principal, charge les 3 autres via include
  • named.conf.options - options globales (forwarders, récursivité...)
  • named.conf.local - déclaration de tes zones personnalisées
  • named.conf.default-zones - zones incluses par défaut (localhost, etc.)
  • db.<nom> - fichiers de zones exemples, utiles comme modèles

Étape 3 : Sauvegarder les fichiers de base

cd /etc/bind
sudo cp named.conf.options named.conf.options.bkp
sudo cp named.conf.local named.conf.local.bkp

Étape 4 : Configurer les options globales

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

Vérifie ensuite la syntaxe :

sudo named-checkconf

Bug rencontré : named.conf:11: missing ';' before 'include'

Cause : une directive include sans point-virgule à la fin.

Solution : ouvre named.conf et vérifie que chaque ligne include se termine par ;


Étape 5 : Déclarer les zones DNS

sudo nano /etc/bind/named.conf.local
//
// Do any local configuration here
//

//include "/etc/bind/zones.rfc1918";

zone "mondomaine.local" {
    type master;
    file "/etc/bind/db.mondomaine.local";
    allow-update { none; };
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.reverse.mondomaine.local";
    allow-update { none; };
};

Remplace 1.168.192.in-addr.arpa par les 3 premiers octets de ton réseau inversés. Exemple : réseau 10.0.2.0/24 -> 2.0.10.in-addr.arpa


Étape 6 : Créer le fichier de zone directe

Copie le fichier exemple comme base :

sudo cp /etc/bind/db.local /etc/bind/db.mondomaine.local
sudo nano /etc/bind/db.mondomaine.local

Contenu :

;
; Zone directe pour mondomaine.local
;
$TTL    604800
@       IN      SOA     ns1.mondomaine.local. root.mondomaine.local. (
                             2         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.mondomaine.local.
@       IN      A       192.168.1.10
ns1     IN      A       192.168.1.10
localhost IN    A       127.0.0.1
@       IN      AAAA    ::1

Explication des paramètres SOA :

  • $TTL : durée de vie des enregistrements en cache (en secondes)
  • SOA : Start Of Authority - serveur DNS primaire + email du responsable (le @ est remplacé par .)
  • Serial : numéro de version - à incrémenter à chaque modification
  • Refresh : fréquence de synchronisation avec les serveurs secondaires
  • Retry : délai de nouvelle tentative en cas d'échec de synchronisation
  • Expire : délai au bout duquel un serveur secondaire cesse de répondre
  • Negative Cache TTL : durée de mise en cache des réponses "introuvable"

Vérifie la syntaxe :

sudo named-checkzone mondomaine.local /etc/bind/db.mondomaine.local

Résultat attendu :

zone mondomaine.local/IN: loaded serial 2
OK

Étape 7 : Créer la zone de recherche inversée

La zone inversée permet de résoudre une IP en nom d'hôte.

sudo nano /etc/bind/db.reverse.mondomaine.local

Contenu :

;
; Zone inversée pour 192.168.1.0/24
;
$TTL    604800
$ORIGIN 1.168.192.in-addr.arpa.
@       IN      SOA     ns1.mondomaine.local. root.mondomaine.local. (
                             2         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.mondomaine.local.
10      IN      PTR     ns1.mondomaine.local.

L'enregistrement PTR associe le dernier octet de l'IP (10) au nom d'hôte.

Vérifie la zone inversée :

sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.reverse.mondomaine.local

Résultat attendu :

zone 1.168.192.in-addr.arpa/IN: loaded serial 2
OK

Étape 8 : Démarrer BIND9

sudo systemctl start bind9
sudo systemctl enable named.service
sudo systemctl status bind9

Étape 9 : Configurer la résolution locale

Pour que le serveur utilise son propre DNS :

sudo nano /etc/resolv.conf
search mondomaine.local
domain mondomaine.local
nameserver 127.0.0.1

Étape 10 : Tester la résolution DNS

Résolution directe (nom -> IP) :

nslookup ns1.mondomaine.local

Résultat attendu :

Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   ns1.mondomaine.local
Address: 192.168.1.10

Résolution inversée (IP -> nom) :

nslookup 192.168.1.10

Résultat attendu :

10.1.168.192.in-addr.arpa   name = ns1.mondomaine.local.

Bug rencontré : SERVFAIL sur la résolution inversée

Cause : le fichier de zone inversée référencé dans named.conf.local ne correspondait pas au fichier réellement créé.

Solution : vérifier que le nom du fichier dans named.conf.local correspond exactement au fichier créé dans /etc/bind/.


Ce que j'ai appris

  • BIND9 est puissant mais très sensible à la syntaxe - un ; manquant suffit à tout bloquer
  • Toujours utiliser named-checkconf et named-checkzone avant de redémarrer le service
  • La zone inversée nécessite que les octets du réseau soient écrits à l'envers dans le nom de zone
  • journalctl -xeu named.service est ton meilleur ami pour déboguer
Partager cet article

Commentaires (0)

Sois le premier à commenter !

Articles similaires