Configurer un serveur DNS
Documentations : Documentation Debian | Documentation Ubuntu | Documentation de Bind9
Installer
(Devenir l'utilisateur root)
doe@debian:~$ su - root Mot de passe :
Télécharger le paquetage
root@debian:~# apt update root@debian:~# apt install bind9
Configurer le serveur DNS
Copier les fichiers de configuration d'origine
root@debian:~# cp /etc/bind/named.conf.options /etc/bind/named.conf.options.origin root@debian:~# cp /etc/bind/named.conf.local /etc/bind/named.conf.local.origin
Configurer le comportement du serveur DNS (les options) : fichier /etc/bind/named.conf.options
Il faut définir :
- Le ou les réseaux IP depuis lesquels on accepte les requêtes : directive
allow-query
- La ou les interfaces réseaux sur lesquelles on écoute les requêtes : directive
listen-on port
- Le (ou les) serveur DNS auquel on transfert les requêtes qui ne nous sont pas destinées : directive
forwarders
Dans l'exemple ci-dessous, mon serveur DNS a pour adresse IP 192.168.1.34/24
et le serveur DNS
faisant
le lien avec Internet a pour adresse IP 192.168.1.254/24
Utilisez un éditeur pour modifier le fichier de configuration. Exemple : nano
, vi
, ...
Attention aux points-virgules !
root@debian:~# nano /etc/bind/named.conf.options
Résultat de la modification :
root@debian:~# cat /etc/bind/named.conf.options options { directory "/var/cache/bind"; # Serveur DNS auquel il faut transmettre les requêtes concernant les zones que l'on ne gère pas forwarders { 192.168.1.254; }; # dnssec-validation auto; dnssec-validation no; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; # Le serveur écoute les requêtes reçues sur 127.0.0.1 et 192.168.1.34 listen-on {127.0.0.1; 192.168.1.34;}; # Réseaux IP depuis lesquels les requêtes sont autorisées allow-query {127.0.0.0/8; 192.168.1.0/24;}; # Permet de transmettre la requête à un autre serveur si le notre ne peut pas la résoudre recursion yes; };
Définir les zones gérées par notre serveur DNS : fichier /etc/bind/named.conf.local
Supposons que nous gérons la zone directe mazone.lan
et la zone inverse 1.168.192.in-addr.arpa
. Le nom de la zone inverse
est construit en prenant l'identifiant réseau à l'envers et en ajoutant le suffixe .in-addr.arpa
Pour chacune des zones, il faut définir son nom, indiquer s'il s'agit du serveur principal de la zone et indiquer le nom du fichier de zone correspondant. Les directives
utilisées sont les suivantes :
zone
: nom de la zonetype master
: zone principalefile
: nom du fichier de zone (à placer dans le répertoire/etc/bind/
)
Utilisez un éditeur pour modifier le fichier de configuration. Exemple : nano
, vi
, ...
root@Ddebian:~# nano /etc/bind/named.conf.local
Résultat de la modification :
root@debian:~# cat /etc/bind/named.conf.local zone "mazone.lan" IN { type master; file "/etc/bind/db.mazone.lan"; }; zone "1.168.192.in-addr.arpa" IN { type master; file "/etc/bind/db.1.168.192"; };
Verifier la syntaxe des fichiers de configuration
Si la commande ci-dessous ne renvoie aucun message c'est que la syntaxe des fichiers de configuration est correcte.
root@debian:~# named-checkconf
Compléter les fichiers de zones
Nous allons créer la configuration suivante :
- Notre serveur DNS est hébergé sur l'hôte ayant pour nom FQDN
debian.mazone.lan
possédant l'adresse IP192.168.1.34
- le nom
box.mazone.lan
est associé à l'adresse IP192.168.1.254
- le nom
serv1.mazone.lan
est associé à l'adresse IP192.168.1.2
- le nom
raspberrypi.mazone.lan
est associé à l'adresse IP192.168.1.11
www.mazone.lan
est un autre nom (alias) pourraspberrypi.mazone.lan
La zone directe mazone.lan
Créer le fichier de la zone directe
Utilisez un éditeur pour créer le fichier de configuration /etc/bind/db.mazone.lan
afin d'effectuer les correspondances nom <---> adresse IP souhaitées.
Les directives à utiliser sont les suivantes:
$TTL
: durée maximale pendant laquelle un enregistrementDNS
(Resource Record - RR) peut être gardé en cache$ORIGIN
: permet de fixer un nom de domaine par défaut pour lesRR
qui ne sont pas terminé par un point. Le point final est donc très important.SOA (Start of authority)
: donne le nom du serveur et l'adresse mail du responsableSerial
: numéro de version- Temps en secondes :
- le temps au bout duquel les informations doivent être mises à jour.
- le temps au bout duquel un nouvel essai sera effectué en cas d'échec de la mise à jours des enregistrements.
- le temps au bout duquel les informations seront obsolètes.
- la durée de vie minimale des
RR
dans le cache NS (Name Server)
: indique le nom d'un serveur de noms. Il DOIT y avoir unNS
par serveur (primaire ou secondaire) pour la zone.A (Address)
: indique l'adresse d'une machine.CNAME
: indique un alias.
Résultat :
root@debian:~# cat /etc/bind/db.mazone.lan $TTL 86400; 1 jour $ORIGIN mazone.lan. @ IN SOA debian.mazone.lan. root.mazone.lan. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS debian IN MX 10 serveurMail ; Définit le nom du serveur de mail du domaine debian IN A 192.168.1.34 serveurMail IN A 192.168.1.35 box IN A 192.168.1.254 serveur IN A 192.168.1.2 raspberrypi IN A 192.168.1.11 www IN CNAME raspberrypi serveurMail IN CNAME mail
Tester le fichier de zone directe
Syntaxe : named-checkzone <nom de la zone> <nom du fichier de zone>
root@debian:~# named-checkzone mazone.lan /etc/bind/db.mazone.lan zone mazone.lan/IN: loaded serial 2 OK
La zone inverse 1.168.192.in-addr.arpa
Créer le fichier de la zone inverse
Utilisez un éditeur pour créer le fichier de configuration /etc/bind/db.1.168.192
afin d'effectuer les correspondances adresse IP <---> nom souhaitées.
Attention de ne pas oublier le point final à la fin de chaque nom pour que l'ORIGIN
ne soit pas ajoutée en suffixe des noms.
Pour effectuer la correspondance adresse IP <---> nom
la directive ci-dessous doit être utilisée :
PTR
: permet de faire correspondre une adresse IP à un nom. L'adresse IP se lit ici à l'envers (en commençant par le poids faible). Seule la partieidentifiant de l'hôte
de l'hôte est indiquée. La partieidentifiant réseau
est présente dans la directive$ORIGIN
en commençant par le poids faible.
Résultat de la modification :
root@debian:~# cat /etc/bind/db.1.168.192 $TTL 86400 $ORIGIN 1.168.192.in-addr.arpa. @ IN SOA debian.mazone.lan. root.mazone.lan. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS debian.mazone.lan. 34 IN PTR debian.mazone.lan. 35 IN PTR serveurMail.mazone.lan. 254 IN PTR box.mazone.lan. 2 IN PTR serveur.mazone.lan. 11 IN PTR raspberrypi.mazone.lan.
Tester le fichier de zone inverse
root@debian:~# named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.1.168.192 zone 1.168.192.in-addr.arpa/IN: loaded serial 2 OK
Tester la configuration complète
root@debian:~# named-checkconf -z zone mazone.lan/IN: loaded serial 2 zone 1.168.192.in-addr.arpa/IN: loaded serial 2 zone localhost/IN: loaded serial 2 zone 127.in-addr.arpa/IN: loaded serial 1 zone 0.in-addr.arpa/IN: loaded serial 1 zone 255.in-addr.arpa/IN: loaded serial 1
Rédémarrer le serveur de noms
Redémarrer
root@debian:~# systemctl restart bind9
OU suivant les implantations
root@debian:~# systemctl restart named
Afficher l'état du serveur
root@debian:~# systemctl status bind9
OU suivant les implantations
root@debian:~# systemctl status named
............... - BIND Domain Name Server Active: active (running) ... ................. debian named[2602]: zone 0.in-addr.arpa/IN: loaded serial 1 ................. debian named[2602]: zone 127.in-addr.arpa/IN: loaded serial 1 ................. debian named[2602]: zone mazone.lan/IN: loaded serial 2 ................. debian named[2602]: zone 255.in-addr.arpa/IN: loaded serial 1 ................. debian named[2602]: zone 1.168.192.in-addr.arpa/IN: loaded serial 2 ................. debian named[2602]: zone localhost/IN: loaded serial 2 ................. debian named[2602]: all zones loaded ................. debian named[2602]: running
Effectuer la configuration client DNS
Cette configuration client DNS
doit être faite sur le serveur ainsi que sur tous les postes ayant besoin de contacter le serveur DNS
Modifier le fichier /etc/network/interfaces
Il est nécessaire de modifier ou d'ajouter dans ce fichier la directive dns-nameservers
indiquant l'adresse IP du serveur DNS et
la directive dns-domain
indiquant le nom de la zone.
Vous pouvez consulter Affecter une adresse IP Statique
et www.debian.org : Configuration du réseau : chapitre 5.5.5
Résultat de la modification :
root@debian:~# cat /etc/network/interfaces ... #interface enp0s3 allow-hotplug enp0s3 iface enp0s3 inet static address 192.168.1.34/24 gateway 192.168.1.254 dns-nameservers 192.168.1.34 dns-domain mazone.lan
Rédémarrer l'interface réseau
root@debian:~# systemctl restart networking
Vérifier la prise en compte des modifications
root@debian:~# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168.1.34 search mazone.lan
Effectuer les tests
Afin de séparer les problèmes éventuels, il est utile d'effectuer les tests ci-dessous depuis le serveurs DNS, puis depuis n'importe quel autre poste configuré en client DNS.
Installer la commande dig
root@debian:~# apt-get install dnsutils
Tester la zone directe
root@debian:~# dig mazone.lan ... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ... mazone.lan. 86400 IN SOA debian.mazone.lan. root.mazone.lan. 2 604800 86400 2419200 604800 ... ;; SERVER: 192.168.1.34#53(192.168.1.34) ...
Tester la zone inverse
root@debian:~# dig 1.168.192.in-addr.arpa ... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ... ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN SOA debian.mazone.lan. root.mazone.lan. 2 604800 86400 2419200 604800 ... ;; SERVER: 192.168.1.34#53(192.168.1.34) ...
Tester la résolution nom -> adresse IP
A l'aide de la commande dig
doe@debian:~$ dig box.mazone.lan ... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, ... ... box.mazone.lan. 86400 IN A 192.168.1.254 ...
A l'aide de la commande nslookup
doe@debian:~$ nslookup box.mazone.lan Server: 192.168.1.34 Address: 192.168.1.34#53 Name: box.mazone.lan Address: 192.168.1.254
A l'aide de la commande host
Avec le suffixe de zone
doe@debian:~$ host box.mazone.lan box.mazone.lan has address 192.168.1.254
Sans le suffixe de zone
doe@debian:~$ host box box.mazone.lan has address 192.168.1.254
Tester la résolution inverse adresse IP -> nom
A l'aide de la commande dig
doe@debian:~$ dig -x 192.168.1.254 ... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, ... ;; ANSWER SECTION: 254.1.168.192.in-addr.arpa. 86400 IN PTR box.mazone.lan. ...
A l'aide de la commande nslookup
doe@debian:~$ nslookup 192.168.1.254 Server: 192.168.1.34 Address: 192.168.1.34#53 254.1.168.192.in-addr.arpa name = box.mazone.lan.
A l'aide de la commande host
doe@debian:~$ host 192.168.1.254 254.1.168.192.in-addr.arpa domain name pointer box.mazone.lan.
Tester le relais DNS (directive forwarders
du fichier /etc/bind/named.conf.options
)
doe@debian:~$ dig ressourcesinformatiques.com ... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, ... ... ressourcesinformatiques.com. 3600 IN A 213.186.33.16 ... ;; SERVER: 192.168.1.34#53(192.168.1.34) ...