Ressources informatiques

Ressources informatiques

Ressources informatiques

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-get update
root@debian:~# apt-get install bind9
...
Les NOUVEAUX paquets suivants seront installés :
  bind9 bind9utils libirs141 net-tools

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 :

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 :

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 :

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:

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
debian		IN	A	192.168.1.34

box		IN	A	192.168.1.254
serv1 		IN	A	192.168.1.2
raspberrypi     IN	A	192.168.1.11

www		IN 	CNAME	raspberrypi
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 :

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.

254	IN	PTR	box.mazone.lan.
2	IN	PTR	serv1.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

Valider

root@debian:~# systemctl status bind9
root@debian:~# systemctl status bind9
 bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   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
auto 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)
...