Ce document contient les livrables issus de la phase d’installation et de configuration du service DNS avec bind9. L’objectif est de pouvoir disposer d’un service DNS concernant notre zone .homelab. accessible au sein du homelab et depuis mon réseau local. Ce serveur portera également la zone DNS ng-hl.com à partir du chapitre 9.


1. Création de la VM

Nous allons utiliser le template debian12-template créé lors du chapitre précédent. Sur Proxmox on crée un clone complet à partir de ce template. Voici les caractéristiques de la VM :

OS Hostname Adresse IP Interface réseau vCPU RAM Stockage
Debian 12.10 dns-core 192.168.100.253 vmbr1 (core) 1 512 20Gio

Il faut également penser à activer la sauvegarde automatique de la VM sur Proxmox en l’ajoutant au niveau de la politique de sauvegarde précédemment créée.


2. Modification mineure de l’OS

Modification de la configuration réseau avec le fichier /etc/network/interfaces

auto ens19
iface ens19 inet static
    address 192.168.100.253/24
    gateway 192.168.100.254

Un point important ! Pendant la création du template debian12-template la désactivation de l’IPv6 n’a pas été faite. Il faut donc faire cela à la main pour chaque VM déployées et noter l’information quelque part pour ajouter cette configuration lorsque nous aurons Ansible pour le déploiement des VM.

Désactivation permanente de l’IPv6. Nous devons éditer ce fichier de configuration /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Enfin, nous devons recharger la configuration courante.

sudo sysctl -p

A présent, nous changons le hostname de la VM pour que ce soit dns-core.homelab, puis nous modifions le contenu de son résolveur DNS local /etc/hosts

sudo hostnamectl set-hostname dns-core.homelab

3. Installation de bind9

Bind9 est un service DNS très répandu sur les serveurs de type GNU/Linux.

Nous allons commencer par installer les paquets bind9 et bind9-doc qui contiennent la documentation.

sudo apt install -y bind9 bind9-doc

4. Configuration de bind9

La première chose que nous allons faire est de configurer le forwarder vers notre pfSense en 192.168.100.254 pour le réseau core et 192.168.200.254 pour le réseau vms. Ainsi, lorsque nous souhaiterons faire une requête DNS qui n’est pas couverte par notre serveur bind9 la requête sera forwardée vers pfSense qui lui-même va renvoyer la requête sur ma box internet sur mon réseau local. Mes VM pourront donc résoudre les noms de domaine d’Internet, non déclarés sur mon bind9. Pour cela, nous éditons le fichier /etc/bind9/named.conf.options

# On décommente les lignes concernant le forwarder puis on renseigne l'IP désirée
forwarders {
    192.168.100.254;
    192.168.200.254;
}

# Ajout de la récursivité des requêtes (principalement pour le sous-réseau 192.168.200.0/24)
...
allow-recursion { 127.0.0.1; 192.168.100.0/24; 192.168.200.0/24; };

Nous configurons les directions vers le fichier qui correspond au nom de domaine .homelab et pour le fichier qui va gérer la résolution inversée en 192.168.*.*. On édite le fichier /etc/bind/named.conf.default-zones

zone "homelab" {
    type master;
    file "/etc/bind/db.homelab";
}

zone "168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168";
}

Maintenant, nous créons le fichier /etc/bind/db.homelab qui va être le fichier descriptif de la zone couvrant le nom de domaine .homelab

;
; BIND data file for local homelab zone
;
$TTL    604800
@       IN      SOA     homelab. root.homelab. (
                        2504151         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      dns-core.homelab.

; CORE
dns-core        IN      A       192.168.100.253
admin-core      IN      A       192.168.100.252

Enfin, nous créons le fichier /etc/bind/db.100.168.192 qui va être le fichier descriptif pour le résolution DNS inverse concernant le domaine .homelab

;
; BIND reverse data file for local homelab zone
;
$TTL    604800
@       IN      SOA     dns-core.homelab. root.homelab. (
                        2504151         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      dns-core.homelab.

; CORE
253 IN      PTR     dns-core.homelab.
252 IN      PTR     admin-core.homelab.

On peut vérifier la syntaxe de nos fichiers de zones avec les commandes suivantes

# Zone homelab
sudo named-checkzone homelab /etc/bind/db.homelab 
zone homelab/IN: loaded serial 2504151
OK

# Zone inverse homelab
sudo named-checkzone 100.168.192.in-addr.arpa /etc/bind/db.100.168.192 
zone 100.168.192.in-addr.arpa/IN: loaded serial 2504151
OK

Une fois que la syntaxe des fichiers de configuration des zones bind précédemment édités est correcte, nous pouvons recharger le daemon bind9 pour appliquer les modifications.

sudo systemctl reload bind9

On peut également vérifier que le service est bel et bien fonctionnel.

sudo systemctl status bind9

A partir du chapitre 9 - ACME, on peut créer et configurer également la zone ng-hl.com utilisée pour les services exposés (application du certificat wildcard *.ng-hl.com).


5. Vérification

Pour le moment, nous ne disposons que d’une seule VM, dns-core. Cependant, nous pouvons vérifier directement sur ce noeud que le service DNS répond correctement avec les enregistrements DNS que nous avons ajoutés au niveau des fichiers de configurations pour la zone .homelab que ce soit pour la recherche DNS directe ou inverse.

# Test résolution DNS
dig +short @192.168.100.253 dns-core.homelab
192.168.100.253

dig +short @192.168.100.253 admin-core.homelab
192.168.100.252

# Test pour la résolution DNS inversée
dig -x 192.168.100.253 @192.168.100.253 +short
dns-core.homelab.

dig -x 192.168.100.252 @192.168.100.253 +short
admin-core.homelab.

Le serveur DNS avec le service bind9 est à présent fonctionnel.