Contexte : résolution de noms interne pour un réseau local ou un lab, avec zones directe et inverse · Testé sur : Debian / Ubuntu, BIND 9 (lab de formation) · Dernière vérification : contenu de 2023 non revérifié
Mettre en place un serveur DNS primaire sous Linux avec BIND9 pour le domaine d'exemple glpim.fr : nom du serveur, zone de recherche directe, zone de recherche inverse, puis configuration d'un poste client.
La version d'origine de ce tutoriel prévoyait aussi un DNS secondaire et la sécurisation des transferts de zone ; ces deux parties n'ont pas été rédigées. Pour les mettre en place, reportez-vous à la documentation de BIND 9 citée en fin de page.
root.glpim.fr) et le nom du serveur (ici dns1.glpim.fr).Topologie retenue :

sudo su
Renseignez le nom du serveur sous sa forme FQDN (Fully Qualified Domain Name, nom de domaine pleinement qualifié) dans /etc/hostname :
nano /etc/hostname

Redémarrez ensuite la machine pour appliquer le nouveau nom :
reboot
Adaptez /etc/hosts au nouveau nom du serveur, ici dns1.glpim.fr :
nano /etc/hosts

Ajoutez dans /etc/resolv.conf le domaine (domain) et la zone de recherche (search) :
nano /etc/resolv.conf

apt install -y bind9
La configuration se trouve dans /etc/bind. Trois fichiers y sont importants pour la suite :
named.conf : déclaration des zones gérées par le serveur ;db.glpim.fr : zone de recherche directe ;db.glpim.fr.inv : zone de recherche inverse.Les noms
db.glpim.fretdb.glpim.fr.invsont ceux de l'exemple : nommez vos fichiers d'après votre propre domaine.
dns1.glpim.fr ? ».Partez des fichiers modèles fournis avec BIND : db.local pour la zone directe, db.127 pour la zone inverse.
cd /etc/bind
cp db.local db.glpim.fr
cp db.127 db.glpim.fr.inv

nano db.glpim.fr

nano db.glpim.fr.inv

Déclarez les deux zones dans named.conf (sur Debian et Ubuntu, on peut aussi utiliser named.conf.local, inclus par named.conf) :
nano named.conf

La déclaration suit cette forme, où <RESEAU_INVERSE> correspond aux octets réseau de votre adresse écrits à l'envers (par exemple 1.168.192 pour le réseau 192.168.1.0/24) :
zone "glpim.fr" {
type master;
file "/etc/bind/db.glpim.fr";
};
zone "<RESEAU_INVERSE>.in-addr.arpa" {
type master;
file "/etc/bind/db.glpim.fr.inv";
};
systemctl restart bind9
Sur les systèmes plus anciens, la commande équivalente est service bind9 restart. Sur les versions récentes de Debian, le service s'appelle named ; le nom bind9 reste accepté comme alias.
Sur le client, trois fichiers sont à modifier.
/etc/hostname :

/etc/hosts :

/etc/resolv.conf, qui doit pointer vers l'adresse du serveur DNS :

Sur le serveur, contrôlez la syntaxe de la configuration et des zones avant tout redémarrage :
named-checkconf
named-checkzone glpim.fr /etc/bind/db.glpim.fr
Depuis le client, testez la résolution directe, puis inverse :
nslookup dns1.glpim.fr
nslookup <IP_SERVEUR_DNS>
Le nom renvoie l'adresse du serveur, et l'adresse renvoie le nom
dns1.glpim.fr: les deux zones fonctionnent.
| Symptôme | Cause probable | Solution |
|---|---|---|
| Le service refuse de démarrer | Erreur de syntaxe dans named.conf ou dans une zone |
Lancez named-checkconf et named-checkzone, puis consultez journalctl -u named |
| Les modifications d'une zone ne sont pas prises en compte | Numéro de série de la zone inchangé, ou service non rechargé | Incrémentez le champ Serial du SOA, puis redémarrez le service |
| Le client interroge un autre serveur DNS | /etc/resolv.conf réécrit par le gestionnaire réseau |
Déclarez le serveur DNS dans la configuration réseau du client (DHCP, NetworkManager ou systemd-resolved) |