Serveur DNS Bind9
Sources de la documentation : https://blog.foulquier.info/tutoriels/systeme/installation-et-parametrage-d-un-resolveur-dns-avec-bind-9-sur-debian-7
Procédure validée sur Debian 12.
Présentation du projet
Nous souhaitons installer un serveur DNS pour la zone réseau example.com. Dans cette documentation, le nom de domaine du serveur est ns.example.com et a pour IP 10.42.0.1. Nous le paramétrerons également afin d'être un serveur DNS récursif pour des clients sur le réseau. Nous utiliserons le logiciel Bind9.
Pré-requis
Modifier le nom d'hôte dans le fichier /etc/hosts :
127.0.0.1 localhost 127.0.1.1 ns.example.com ns
Modifier également le nom d'hôte dans le fichier /etc/hostname :
ns.example.com
Nous allons installer les paquets Bind9 :
apt -y install bind9 dnsutils nftables
Autoriser le trafic vers le serveur DNS et en loopback en modifiant le fichier /etc/nftables.conf. Adapter selon les autres services déjà installés :
#!/usr/sbin/nft -f flush ruleset table inet tableinet { chain input { type filter hook input priority filter; policy drop; iifname lo accept udp dport 53 accept ct state {established,related} accept } chain forward { type filter hook forward priority filter; } chain output { type filter hook output priority filter; } }
Activer et redémarrer nftables :
systemctl enable nftables.service systemctl restart nftables.service
Modifier le résolveur dans le fichier /etc/resolv.conf :
domain example.com search example.com nameserver 10.42.0.1
Création de la zone de résolution
Créer le fichier /etc/bind/db.example.com suivant cet exemple :
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.example.com. root.example.com. (2020120401 604800 86400 2419200 604800) ; @ IN NS ns.example.com. @ IN A 10.42.0.1 ns IN A 10.42.0.1 www IN A 10.42.0.2 www IN AAAA fe80::74cf:64ad:6cfa:9604 mail IN CNAME www
Création de la zone de résolution inverse
Si vous possédez des enregistrements IPv6, il est nécessaire de faire deux zones de résolutions inverses distinctes IPv4 et IPv6.
Créer le fichier pour la zone IPv4 /etc/bind/db.example.com.inv suivant cet exemple :
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA ns.example.com. root.example.com. (2020120401 604800 86400 2419200 604800) ; @ IN NS ns.example.com. 1 IN PTR ns.example.com. 2 IN PTR www.example.com.
Créer le fichier pour la zone IPv6 /etc/bind/db.example.com.inv6 suivant cet exemple :
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA ns.example.com. root.example.com. (2020120401 604800 86400 2419200 604800) ; @ IN NS ns.example.com. 4.0.6.9.a.f.c.f.d.a.4.6.f.c.4.7.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. IN PTR www.example.com.
Paramétrage des zones
Modifier le fichier /etc/bind/named.conf.local afin de paramétrer les zones :
zone "example.com" { type master; file "/etc/bind/db.example.com"; forwarders{}; }; zone "0.42.10.in-addr.arpa" { type master; file "/etc/bind/db.example.com.inv"; forwarders{}; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa" { type master; file "/etc/bind/db.example.com.inv6"; forwarders{}; };
Activer la résolution récursive
Modifier le fichier /etc/bind/named.conf.options :
options { directory "/var/cache/bind"; // forwarders { // 0.0.0.0; // }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-recursion { any; }; };
Redémarrer le service :
service bind9 restart
Tester la résolution :
dig @127.0.0.1 www.example.com dig @127.0.0.1 antoinepernot.fr