Installer un DNS interne pour un lab (Debian + Bind9)

Pourquoi mettre en place un DNS interne dans un lab ?

Dans beaucoup de labs, on utilise des adresses IP en dur ou un simple fichier /etc/hosts. Ça fonctionne… jusqu’au jour où :

  • le lab grandit,
  • plusieurs services communiquent entre eux,
  • on veut se rapprocher d’une infrastructure réelle.

Un DNS interne permet notamment de :

  • Résoudre des noms de machines sans dépendre d’Internet
  • Centraliser la résolution de noms
  • Simuler un environnement d’entreprise
  • Préparer des scénarios réalistes (AD, messagerie, reverse proxy, supervision…)

Architecture du lab

Hypothèses

  • Hyperviseur ou environnement de virtualisation (Proxmox, VirtualBox, VMware…)
  • Réseau interne isolé
  • Une VM dédiée au DNS

Exemple de plan d’adressage

MachineRôleIP
dns01Serveur DNS192.168.100.10
web01Serveur web192.168.100.20
client01Client de test192.168.100.30

Domaine interne

Dans ce lab, on utilisera le domaine :

lab.local

⚠️ Domaine réservé uniquement au lab (pas utilisé sur Internet)


Choix techniques

  • OS : Debian 13 (stable, minimal)
  • Serveur DNS : Bind9

Installation du serveur DNS

Mise à jour du système

apt update && apt upgrade -y

Installation de Bind9

apt install bind9 bind9utils bind9-doc -y

Vérification du service

systemctl status bind9

Le service doit être actif et démarré.


Configuration de Bind9

Fichier principal

Les fichiers de configuration se trouvent dans :

/etc/bind/

Nous allons principalement modifier :

  • named.conf.options
  • named.conf.local

Configuration des options globales

Éditer le fichier :

nano /etc/bind/named.conf.options

Exemple de configuration simple :

options {

directory "/var/cache/bind";

recursion yes;

allow-recursion { 192.168.100.0/24; };

listen-on { 127.0.0.1; 192.168.100.10; };

allow-query { any; };

forwarders {

1.1.1.1;

8.8.8.8;

};

dnssec-validation auto;

};

Déclaration de la zone DNS

Ajout de la zone directe

Éditer :

nano /etc/bind/named.conf.local

Ajouter :

zone "lab.local" {

type master;

file "/etc/bind/db.lab.local";

};

Création du fichier de zone

Copier un modèle existant :

cp /etc/bind/db.local /etc/bind/db.lab.local

Éditer le fichier :

nano /etc/bind/db.lab.local

Exemple de contenu :

$TTL 604800

@ IN SOA dns01.lab.local. admin.lab.local. (

2026020101

604800

86400

2419200

604800 )

;

@ IN NS dns01.lab.local.

; Serveur DNS

@ IN A 192.168.100.10

dns01 IN A 192.168.100.10

; Serveur web

web01 IN A 192.168.100.20

Vérification de la configuration

Vérification syntaxique

named-checkconf

named-checkzone lab.local /etc/bind/db.lab.local

Redémarrage du service

systemctl restart bind9

Configuration des clients

Sur une machine cliente, modifier /etc/resolv.conf (ou via NetworkManager) :

nameserver 192.168.100.10

search lab.local

Tests

Test avec dig

dig web01.lab.local

Test avec nslookup

nslookup web01.lab.local

La résolution doit retourner l’adresse IP du serveur web.


Configuration de la zone reverse (résolution inverse)

La zone reverse permet de résoudre une adresse IP vers un nom de machine. Elle est souvent négligée en lab, mais elle est pourtant essentielle pour :

  • certains services (messagerie, supervision, logs),
  • le réalisme d’une infrastructure d’entreprise,
  • le diagnostic réseau.

Principe

Pour le réseau 192.168.100.0/24, la zone reverse associée est :

100.168.192.in-addr.arpa

Déclaration de la zone reverse

Éditer le fichier :

nano /etc/bind/named.conf.local

Ajouter :

zone "100.168.192.in-addr.arpa" {

type master;

file "/etc/bind/db.192.168.100";

};

Création du fichier de zone reverse

Créer le fichier à partir d’un modèle :

cp /etc/bind/db.127 /etc/bind/db.192.168.100

Éditer le fichier :

nano /etc/bind/db.192.168.100

Exemple de contenu :

$TTL 604800

@ IN SOA dns01.lab.local. admin.lab.local. (

2026020101

604800

86400

2419200

604800 )

;

@ IN NS dns01.lab.local.

10 IN PTR dns01.lab.local.

20 IN PTR web01.lab.local.

Vérification et tests

named-checkzone 100.168.192.in-addr.arpa /etc/bind/db.192.168.100

systemctl restart bind9

Test depuis un client :

dig -x192.168.100.20

La commande doit retourner le nom web01.lab.local.

Erreurs courantes

  • Numéro de série SOA non incrémenté
  • Erreur de syntaxe dans le fichier de zone
  • Mauvaise IP d’écoute (listen-on)
  • Firewall bloquant le port 53 (UDP/TCP)


Conclusion

Mettre en place un DNS interne est une brique essentielle dans tout lab sérieux. Cette installation simple permet déjà de couvrir 80 % des besoins et sert de base solide pour des scénarios plus avancés.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *