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).
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;
};
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
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 :
- [4H] Modifiez
/etc/resolv.confen ajoutant :nameserver 127.0.0.1(ou vianmcli/nmtuipour que ce soit permanent). - [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, sectionlogging { ... }, définissez unchannelpointant 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) :
- Dans
named.conf, au lieu d'utiliser les "root hints" par défaut, définissez une zone racinezone "."de typemaster. - Créez le fichier de zone racine.
- 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; };
};