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 11.

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

Modifier le résolveur dans le fichier /etc/resolv.conf :

domain example.com
search example.com
nameserver 10.42.0.1

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