Ceci est une ancienne révision du document !
Architecture cible
Voici l’architecture que nous allons mettre en place :
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
4.2. Annoncer le DNS aux clients via DHCP
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 :
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)
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
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.