Installation et Configuration DNS (BIND) sous AlmaLinux

ADMIN SYS Réseau & DNS

Ce guide couvre l'intégralité du processus de déploiement d'un serveur DNS BIND : de l'installation des paquets à la configuration des zones (directes et inverses), en passant par la mise en place d'un serveur Root et d'un esclave (Secondaire).

Contexte : Les réponses aux questions du TP (notées [3A], [4B], etc.) sont intégrées directement dans les étapes ci-dessous.

3. Installation du DNS

[3A] & [3B] Installation des paquets

Pour transformer votre machine virtuelle en serveur DNS, nous utilisons BIND (Berkeley Internet Name Domain). Sous AlmaLinux (et RHEL/CentOS), le nom du paquet principal est bind.

Installez le serveur et les utilitaires de test (dig, nslookup) avec la commande :

sudo dnf install bind bind-utils -y

[3C] & [3D] Architecture des fichiers

  • /etc/named.conf : C'est le fichier de configuration principal. Il définit les options globales (sécurité, écoute réseau) et déclare les zones que le serveur doit gérer.
  • /var/named/ : C'est le répertoire par défaut où se trouvent les fichiers de zone (les bases de données contenant les IP et les noms).

[3E] Démarrage du service

Le service se nomme named. Pour le démarrer et l'activer automatiquement au boot :

sudo systemctl enable --now named

4. Configuration Globale

[4A] Ouverture du service (named.conf)

Par défaut, BIND n'écoute que sur 127.0.0.1. Il faut modifier /etc/named.conf pour autoriser les requêtes externes.

options {
    # Écouter sur toutes les interfaces ou l'IP de la VM
    listen-on port 53 { 127.0.0.1; any; }; 
    
    # Autoriser tout le monde à interroger ce DNS
    allow-query     { any; };
    
    # [4K] Logs : Configuration par défaut est souvent suffisante, 
    # mais on peut spécifier un canal ici.
};

[4M] Forwarders (Redirection)

Pour résoudre les domaines externes (ex: ad.supalta.com ou Internet) que votre serveur ne connaît pas, on configure un Forwarder (souvent le DNS de votre FAI ou Google).

options {
    # ... autres options ...
    forwarders { 8.8.8.8; 1.1.1.1; }; # Exemple de forwarders
    recursion yes;
};
Astuce : Regardez les paramètres IPv4 de votre machine physique (ipconfig /all sous Windows) pour trouver le bon DNS local à mettre en forwarder.

4. Création de Zones

[4B] Zone directe (Nomdefamille.local)

Nous allons créer une zone pour résoudre les noms en IP.

1. Déclaration dans /etc/named.conf :

zone "Nomdefamille.local" IN {
    type master;
    file "Nomdefamille.local.db";
    allow-update { none; };
};

2. Fichier de zone (/var/named/Nomdefamille.local.db) :

$TTL 86400
@   IN  SOA     ns1.Nomdefamille.local. admin.Nomdefamille.local. (
            2024012201 ; Serial
            3600       ; Refresh
            1800       ; Retry
            604800     ; Expire
            86400 )    ; Minimum TTL

; Serveurs de noms (NS)
    IN  NS      ns1.Nomdefamille.local.

; Enregistrements A (Hôtes)
ns1     IN  A   192.168.1.10  ; (Remplacez par @IPv4DeVotreVM)
www     IN  A   192.168.1.10
mail    IN  A   192.168.1.10

; Enregistrement MX (Mail)
@       IN  MX  10 mail.Nomdefamille.local.

[4C] Rôle : Ce fichier sert de base de données pour associer des noms de machine (www, mail) à des adresses IP.

[4L] Zone Inverse (Reverse DNS)

La zone inverse permet de retrouver le nom à partir de l'IP. Pour un réseau 192.168.1.0/24, la zone s'appelle 1.168.192.in-addr.arpa.

Fichier de zone inverse : Il doit inclure des enregistrements PTR (Pointeur).

10      IN  PTR     www.Nomdefamille.local.
10      IN  PTR     mail.Nomdefamille.local.

4. Vérification & Tests

[4F] Vérification de la syntaxe

Avant de redémarrer, vérifiez vos fichiers pour éviter les erreurs de syntaxe.

  • named-checkconf : Vérifie uniquement le fichier principal /etc/named.conf.
  • named-checkzone NomZone FichierZone : Vérifie la validité des enregistrements dans un fichier de zone spécifique.

[4D] & [4E] Application et État

# [4D] Redémarrer le service
sudo systemctl restart named

# [4E] Vérifier l'état (Doit être "Active: running")
sudo systemctl status named
Pare-feu : N'oubliez pas d'ouvrir le port 53 (TCP/UDP) :
sudo firewall-cmd --permanent --add-service=dns && sudo firewall-cmd --reload

[4H] & [4I] Configuration Client et Test

Pour que votre VM utilise son propre DNS :

  1. [4H] Modifiez /etc/resolv.conf en ajoutant : nameserver 127.0.0.1 (ou via nmcli/nmtui pour que ce soit permanent).
  2. [4G] & [4I] Testez la résolution :
# Test avec dig
dig www.Nomdefamille.local

# Test avec nslookup
nslookup mail.Nomdefamille.local

Résultat attendu : La commande doit retourner l'adresse IP de votre VM définie dans la zone (SECTION ANSWER).

[4J] & [4K] Logs et Diagnostic

Si le service ne démarre pas ou que la résolution échoue :

  • [4J] Fichiers à consulter : /var/log/messages (c'est là que named écrit par défaut sous RHEL/Alma).
  • [4K] Log spécifique : Dans named.conf, section logging { ... }, définissez un channel pointant vers un fichier spécifique (ex: /var/log/named/query.log) et activez-le.

5. Serveur Root

[5A] Configuration en Racine

Pour qu'un serveur agisse comme un serveur Root pour une classe (connaître tous les élèves) :

  1. Dans named.conf, au lieu d'utiliser les "root hints" par défaut, définissez une zone racine zone "." de type master.
  2. Créez le fichier de zone racine.
  3. Dans ce fichier, ajoutez des enregistrements NS (Name Server) pour chaque sous-domaine délégué aux autres élèves (ex: eleve1.local IN NS ip-eleve-1).

6. Serveur Secondaire (Optionnel)

[6A] Mise en place du Slave

Le serveur secondaire assure la redondance. Il télécharge la zone depuis le maître.

Sur le serveur Secondaire (named.conf) :

zone "Nomdefamille.local" IN {
    type slave;
    file "slaves/Nomdefamille.local.db"; # Dossier où named a le droit d'écrire
    masters { IP_DU_SERVEUR_MAITRE; };
};