Architecture cible Voici l’architecture que nous allons mettre en place : * NSD : serveur faisant autorité pour le domaine $VOTRE_NDD. Il écoutera uniquement sur 127.0.0.1 (port 53530) pour ne pas être exposé directement sur Internet. * Unbound : résolveur récursif et cache accessible depuis le LAN sur $VOTRE_IP:53. Il interrogera NSD pour les requêtes concernant $VOTRE_NDD, et les serveurs racines pour le reste. * Routeur OpenWrt (GL-MT6000) : redirigera toutes les requêtes DNS du LAN vers $VOTRE_IP:53. $VOTRE_NDD = votre nom de domaine (à remplacer zzzzz.fr); $VOTRE_IP = l'ip locale de la machine qui hébergera le résolveur (à remplacer : 192.168.x.y) 1. Installation de NSD et Unbound sur le serveur Debian sudo apt update && sudo apt install nsd unbound 2. Configuration de NSD (serveur faisant autorité) 2.1. Fichier principal /etc/nsd/nsd.conf sudo nano /etc/nsd/nsd.conf Contenu : server: # Écoute uniquement sur localhost (port non standard) ip-address: 127.0.0.1 ip-address: ::1 port: 53530 username: nsd logfile: "/var/log/nsd.log" pidfile: "/run/nsd/nsd.pid" xfrdfile: "/var/lib/nsd/xfrd.state" zonelistfile: "/var/lib/nsd/zone.list" database: "" # Zone principale pour $VOTRE_NDD zone: name: "$VOTRE_NDD" zonefile: "/etc/nsd/db.$VOTRE_NDD" # Autoriser les transferts (si besoin) # provide-xfr: 192.168.1.0/24 NOKEY 2.2. Fichier de zone /etc/nsd/db.$VOTRE_NDD sudo nano /etc/nsd/db.$VOTRE_NDD Contenu (adaptez les adresses IP) : $ORIGIN $VOTRE_NDD. $TTL 3600 ; Enregistrement SOA (Serial = YYYYMMDDNN) @ IN SOA ns1.$VOTRE_NDD. admin.$VOTRE_NDD. ( 2026072301 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 3600 ; Minimum TTL ) ; Serveurs de noms @ IN NS ns1.$VOTRE_NDD. @ IN NS ns2.$VOTRE_NDD. ; (facultatif) ; Enregistrements A @ IN A $VOTRE_IP ns1 IN A $VOTRE_IP ns2 IN A $VOTRE_IP ; (facultatif) ; Sous-domaines pour vos services www IN A $VOTRE_IP nextcloud IN A $VOTRE_IP grav IN A $VOTRE_IP dokuwiki IN A $VOTRE_IP ; Enregistrement MX (si vous avez un serveur mail) @ IN MX 10 mail.$VOTRE_NDD. mail IN A $VOTRE_IP 2.3. Redémarrer NSD sudo systemctl restart nsd sudo systemctl enable nsd 2.4. Vérifier NSD dig @127.0.0.1 -p 53530 $VOTRE_NDD 3. Configuration d'Unbound (résolveur récursif) 3.1. Fichier principal /etc/unbound/unbound.conf sudo nano /etc/unbound/unbound.conf Contenu : server: # Écoute sur toutes les interfaces (pour le LAN) interface: 0.0.0.0 interface: ::0 port: 53 # Accès autorisés (ACL) access-control: 127.0.0.1 allow access-control: ::1 allow access-control: 192.168.1.0/24 allow # Cache cache-min-ttl: 300 cache-max-ttl: 86400 prefetch: yes prefetch-key: yes serve-expired: yes serve-expired-ttl: 86400 # Sécurité / confidentialité qname-minimisation: yes hide-identity: yes hide-version: yes unwanted-reply-threshold: 10000000 # DNSSEC auto-trust-anchor-file: "/var/lib/unbound/root.key" val-log-level: 2 val-clean-additional: yes # Permettre à Unbound d'interroger localhost (pour NSD) do-not-query-localhost: no # Logs verbosity: 1 use-syslog: yes # Zone faisant autorité : déléguée à NSD stub-zone: name: "$VOTRE_NDD" stub-addr: 127.0.0.1@53530 stub-no-cache: yes # Forwarder optionnel (si vous voulez utiliser un DNS externe) # forward-zone: # name: "." # forward-addr: 1.1.1.1 # forward-addr: 9.9.9.9 3.2. Redémarrer Unbound sudo systemctl restart unbound sudo systemctl enable unbound 3.3. Vérifier Unbound dig @127.0.0.1 $VOTRE_NDD dig @$VOTRE_IP $VOTRE_NDD Si les deux commandes renvoient l’adresse $VOTRE_IP, tout fonctionne. 4. Configuration du routeur OpenWrt (GL-MT6000) 4.1. Configurer le DNS du routeur lui-même * Dans LuCI : Network → Interfaces. * Modifier l’interface WAN. * Onglet Advanced Settings. * Use custom DNS servers : $VOTRE_IP. * Décocher "Use DNS servers advertised by peer". * Save & Apply. 4.2. Annoncer le DNS aux clients via DHCP * Network → Interfaces → LAN → Edit → DHCP Server. * Onglet Advanced Settings. * DHCP-Options : ajouter 6,$VOTRE_IP (le 6 est le code DHCP pour les DNS). * Save & Apply. 4.3. Rediriger toutes les requêtes DNS vers le serveur (optionnel) Pour forcer tous les appareils du LAN à utiliser votre DNS (même ceux qui ont un DNS statique comme 8.8.8.8) : Méthode via LuCI : * Network → Firewall → Port Forwards. * Ajouter une règle : * Name : Intercept-DNS * Protocol : TCP+UDP * Source zone : lan * Source port : 53 * Destination address : $VOTRE_IP * Destination port : 53 * Save & Apply. Méthode via SSH (si LuCI ne suffit pas) : # Éditer le fichier de configuration du firewall vi /etc/config/firewall # Ajouter ce bloc config redirect option name 'Intercept-DNS' option src 'lan' option src_dport '53' option proto 'tcp udp' option family 'any' option target 'DNAT' option dest_ip '$VOTRE_IP' option dest_port '53' option enabled '1' # Redémarrer le firewall /etc/init.d/firewall restart 4.4. Redémarrer les services /etc/init.d/dnsmasq restart /etc/init.d/firewall restart 5. Tests de validation Depuis le serveur Debian # Vérifier que NSD répond dig @127.0.0.1 -p 53530 $VOTRE_NDD # Vérifier qu'Unbound répond dig @127.0.0.1 $VOTRE_NDD dig @$VOTRE_IP $VOTRE_NDD # Vérifier la résolution externe dig @$VOTRE_IP google.com Depuis un poste du LAN nslookup $VOTRE_NDD $VOTRE_IP nslookup google.com $VOTRE_IP Depuis l’extérieur (une fois l’IP publique configurée) dig @VOTRE_IP_PUBLIQUE $VOTRE_NDD 6. Sécurisation 6.1. Ne pas exposer NSD sur Internet NSD écoute uniquement sur 127.0.0.1:53530. Il n’est donc pas accessible depuis l’extérieur. Seul Unbound est exposé (sur le port 53) si vous ouvrez le port dans votre pare‑feu. 6.2. Ouvrir le port 53 sur le serveur (si accès externe souhaité) sudo ufw allow 53 sudo ufw reload 6.3. Sur le routeur (si accès externe) * Network → Firewall → Port Forwards. * Ajouter une règle pour rediriger le port 53 vers $VOTRE_IP:53. 6.4. Restreindre les requêtes externes (optionnel) Dans unbound.conf, ajoutez : access-control: VOTRE_IP_PUBLIQUE/32 allow # si IP fixe # ou access-control: 0.0.0.0/0 refuse 7. Résumé des fichiers de configuration Fichier Rôle * /etc/nsd/nsd.conf Configuration de NSD (écoute sur 127.0.0.1:53530) * /etc/nsd/db.$VOTRE_NDD Zone DNS pour $VOTRE_NDD * /etc/unbound/unbound.conf Configuration d'Unbound (écoute sur 0.0.0.0:53, stub vers NSD) * /etc/config/firewall (OpenWrt) Redirection DNS vers $VOTRE_IP Votre serveur DNS est maintenant opérationnel en LAN. Pour l’exposer sur Internet, il vous reste à configurer votre registrar (OVH, Gandi, etc.) avec les enregistrements NS et A appropriés, et à ouvrir le port 53 sur votre routeur.