ISC Bind9 – Serveur DNS secondaire

ISC_DNS

Bind9 est une implémentation Open Source des protocoles DNS (Domain Name System) pour l’Internet, sous licence Mozilla Public License 2.0, née au début des années 80 et destinée principalement aux systèmes UNIX. Bind9 signifie Berkeley Internet Name Domain version 9 car le projet a été initié à l’Université de Californie à Berkeley (UCB). Ce projet est actuellement développé par l’Internet Systems Consortium (ISC) et la version 9 date de 2000.

 

Objectif

 

L’objectif de cet article est l’installation et la configuration d’un serveur DNS secondaire, ou slave, utilisant l’implémentation Bind9, sur une distribution Linux Debian Jessie 8.4 32bits.

 

Schéma logique

 

slave

 
Le serveur DNS slave consulte le serveur DNS master en comparant le serial de son SOA (pour les zones déclarées) avec ce dernier.
Si son serial est inférieur, le slave demande un transfert de zones au serveur primaire, en TCP sur le port 53.
Ceci fait, le slave dispose d’enregistrements de zones à jour.
Un client DNS peut donc requêter le slave (en UDP sur le port 53) et recevoir des données cohérentes.

 

Pré-requis

 

1. Pré-requis avant réalisation

  • Un serveur Debian Jessie 8.4 32 bits fonctionnel (installation basique avec utilitaires usuels du système et service SSH) qui hébergera le service DNS secondaire ou slave
  • Packages de base supplémentaires : sudo, resolvconf, aptitude
  • Domaine utilisé : opensharing.priv

 

2. Configuration réseau initiale

Serveur DNS Slave
FQDN dns2-test.opensharing.priv
Adresse IP 192.168.1.12
Réseau 192.168.1.0/24
Passerelle 192.168.1.1
dns-nameservers 192.168.1.11 127.0.0.1
dns-search opensharing.priv

 
Contenu initial du fichier /etc/network/interfaces :

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
	address 192.168.1.12
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.1
	dns-search opensharing.priv
	dns-nameservers 192.168.1.11 127.0.0.1

 
Contenu initial du fichier /etc/hosts :

127.0.0.1	localhost.localdomain	localhost
192.168.1.12	dns2-test.opensharing.priv	dns2-test

Rmq : L’adresse 127.0.1.1 doit être retirée sur un serveur à IP fixe et remplacée par cette dernière, tel que l’exemple ci-dessus.
 
Contenu initial du fichier /etc/host.conf :

order hosts, bind
multi on

 

Contenu initial du fichier /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.11
nameserver 127.0.0.1
search opensharing.priv

Rmq :
Le fichier /etc/resolv.conf ne doit pas être édité dès lors que le paquet resolvconf a été installé.

Pour prendre en compte les modifications des fichiers de configuration relatifs au réseau, redémarrage du service réseau :

# /etc/init.d/networking restart

 

Réalisation

 

0. Mise à jour préalable du système et des paquets installés

# aptitude update
# aptitude upgrade

 

1. Installation des packages sur le serveur DNS slave

# aptitude install bind9 bind9-doc

 

2. Configuration du serveur DNS master

 

2.1. Fichier /etc/bind/named.conf.local

zone "opensharing.priv" IN {
	type master;
	file "/var/cache/bind/db.opensharing.priv";
	allow-update { localhost; };
	allow-transfer { localhost; 192.168.1.12; };
	notify yes;
};

zone "1.168.192.in-addr.arpa" IN {
	type master;
	file "/var/cache/bind/db.opensharing.priv.inv";
        allow-update { localhost; };
        allow-transfer { localhost; 192.168.1.12; };
	notify yes;
};

Le serveur primaire est désigné comme master pour les deux zones.
On autorise le transfert de zones seulement depuis le slave (192.168.1.12) et depuis lui-même (pour tester le transfert avec dig axfr en local).
Les notifications sont activées et seront envoyées, par défaut, aux serveurs de noms NS définis dans les fichiers de zones pour leur signifier une modification de ces derniers.
 

2.2. Fichier /etc/bind/named.conf.options

options {
	directory "/var/cache/bind";
};

On retrouve le même fichier pour le slave.
C’est le fichier automatiquement créé à l’installation de Bind9, épuré de quelques options inutiles pour le moment.
Par défaut, l’écoute se fait sur toutes les interfaces et sur le port 53.
 

2.3. Fichier /var/cache/bind/db.opensharing.priv

$ORIGIN opensharing.priv.
$TTL 86400
@		IN	SOA	dns1-test.opensharing.priv.	adminsys.opensharing.priv. (
				2016060501	; serial
				21600		; refresh 6h
				3600		; retry 1h
				604800		; expire 1 week
				86400 )		; minimum TTL 1 day

		IN	NS	dns1-test.opensharing.priv.
		IN	NS	dns2-test.opensharing.priv.

		IN	MX	10	mail1-test.opensharing.priv.
		IN	MX	20	mail2-test.opensharing.priv.

		IN	A	192.168.1.14
dns1-test	IN	A	192.168.1.11
dns2-test	IN	A	192.168.1.12

opsi-test	IN	A	192.168.1.13
wp-test		IN	A	192.168.1.14
mail1-test	IN	A	192.168.1.15
mail2-test	IN	A	192.168.1.16

dns1		IN	CNAME	dns1-test
dns2		IN	CNAME	dns2-test
dhcp1		IN	CNAME	dns1-test
mail1		IN	CNAME	mail1-test
mail2		IN	CNAME	mail2-test
www		IN	CNAME	wp-test
opsi		IN	CNAME	opsi-test

 

Fichier /var/cache/bind/db.opensharing.priv.inv

$ORIGIN 1.168.192.in-addr.arpa.
$TTL 86400
@		IN	SOA	dns1-test.opensharing.priv.	adminsys.opensharing.priv. (
				2016060501	; serial
				21600		; refresh 6h
				3600		; retry 1h
				604800		; expire 1 week
				86400 )		; minimum TTL 1 day
		IN	NS	dns1-test.opensharing.priv.
		IN	NS	dns2-test.opensharing.priv.
11		IN	PTR	dns1-test.opensharing.priv.
12		IN	PTR	dns2-test.opensharing.priv.
11		IN	PTR	dhcp1.opensharing.priv.
11		IN	PTR	dns1.opensharing.priv.
12		IN	PTR	dns2.opensharing.priv.

13		IN	PTR	opsi.opensharing.priv.

14		IN	PTR	www.opensharing.priv.

15		IN	PTR	mail1.opensharing.priv.
16		IN	PTR	mail2.opensharing.priv.

 

3. Configuration du serveur DNS slave

 

3.1. Fichier /etc/bind/named.conf.local

zone "opensharing.priv" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.slv";
        allow-transfer { localhost; };
        notify no;
};

zone "1.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.inv.slv";
        allow-transfer { localhost; };
        notify no;
};

Le serveur est défini comme slave pour les deux zones et n’a pas besoin d’envoyer de notifications puisque seules celles du master importent.
Le DNS master est, quant à lui, défini comme master de celles-ci.
 

3.2. Redémarrage du service Bind9 et analyse des logs

Sur le serveur DNS slave :

# /etc/init.d/bind9 restart
# tail -f /var/log/syslog
Jun 17 14:26:58 dns2-test named[2557]: zone opensharing.priv/IN: Transfer started.
Jun 17 14:26:58 dns2-test named[2557]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: connected using 192.168.1.12#49915
Jun 17 14:26:58 dns2-test named[2557]: zone opensharing.priv/IN: transferred serial 2016060501
Jun 17 14:26:58 dns2-test named[2557]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: Transfer completed: 1 messages, 20 records, 482 bytes, 0.001 secs (482000 bytes/sec)
Jun 17 14:26:58 dns2-test named[2557]: zone opensharing.priv/IN: sending notifies (serial 2016060501)
Jun 17 14:26:58 dns2-test named[2557]: zone 1.168.192.in-addr.arpa/IN: Transfer started.
Jun 17 14:26:58 dns2-test named[2557]: transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.11#53: connected using 192.168.1.12#59960
Jun 17 14:26:58 dns2-test named[2557]: zone 1.168.192.in-addr.arpa/IN: transferred serial 2016060501
Jun 17 14:26:58 dns2-test named[2557]: transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.11#53: Transfer completed: 1 messages, 12 records, 352 bytes, 0.001 secs (352000 bytes/sec)
Jun 17 14:26:58 dns2-test named[2557]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2016060501)

Sur le serveur DNS master au même moment :

# tail -f /var/log/syslog
Jun 17 14:26:58 dns1-test named[2215]: client 192.168.1.12#49915 (opensharing.priv): transfer of 'opensharing.priv/IN': AXFR started
Jun 17 14:26:58 dns1-test named[2215]: client 192.168.1.12#49915 (opensharing.priv): transfer of 'opensharing.priv/IN': AXFR ended
Jun 17 14:26:58 dns1-test named[2215]: client 192.168.1.12#59960 (1.168.192.in-addr.arpa): transfer of '1.168.192.in-addr.arpa/IN': AXFR started
Jun 17 14:26:58 dns1-test named[2215]: client 192.168.1.12#59960 (1.168.192.in-addr.arpa): transfer of '1.168.192.in-addr.arpa/IN': AXFR ended

Le transfert des deux zones a bien été effectué, initié par le slave.
 

3.3. Arborescence du dossier /var/cache/bind

Suite au redémarrage du service Bind9 sur le serveur slave, le dossier /var/cache/bind contient :

-rw-r--r--  1 bind bind  720 juin  17 14:24 managed-keys.bind
-rw-r--r--  1 bind bind 1222 juin  17 14:26 db.opensharing.priv.slv
-rw-r--r--  1 bind bind  738 juin  17 14:26 db.opensharing.priv.inv.slv

Nos deux fichiers de zones ont ainsi été créés et peuplés des enregistrements du serveur master comme le montre la commande dig exécutée sur le slave :

# dig @127.0.0.1 opensharing.priv AXFR

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @127.0.0.1 opensharing.priv AXFR
; (1 server found)
;; global options: +cmd
opensharing.priv.	86400	IN	SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016060501 21600 3600 604800 86400
opensharing.priv.	86400	IN	A	192.168.1.14
opensharing.priv.	86400	IN	MX	10 mail1-test.opensharing.priv.
opensharing.priv.	86400	IN	MX	20 mail2-test.opensharing.priv.
opensharing.priv.	86400	IN	NS	dns1-test.opensharing.priv.
opensharing.priv.	86400	IN	NS	dns2-test.opensharing.priv.
dhcp1.opensharing.priv.	86400	IN	CNAME	dns1-test.opensharing.priv.
dns1.opensharing.priv.	86400	IN	CNAME	dns1-test.opensharing.priv.
dns1-test.opensharing.priv. 86400 IN	A	192.168.1.11
dns2.opensharing.priv.	86400	IN	CNAME	dns2-test.opensharing.priv.
dns2-test.opensharing.priv. 86400 IN	A	192.168.1.12
mail1.opensharing.priv.	86400	IN	CNAME	mail1-test.opensharing.priv.
mail1-test.opensharing.priv. 86400 IN	A	192.168.1.15
mail2.opensharing.priv.	86400	IN	CNAME	mail2-test.opensharing.priv.
mail2-test.opensharing.priv. 86400 IN	A	192.168.1.16
opsi.opensharing.priv.	86400	IN	CNAME	opsi-test.opensharing.priv.
opsi-test.opensharing.priv. 86400 IN	A	192.168.1.13
wp-test.opensharing.priv. 86400	IN	A	192.168.1.14
www.opensharing.priv.	86400	IN	CNAME	wp-test.opensharing.priv.
opensharing.priv.	86400	IN	SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016060501 21600 3600 604800 86400
;; Query time: 6 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jun 17 16:10:31 CEST 2016
;; XFR size: 20 records (messages 1, bytes 482)

Ou encore :

# dig @127.0.0.1 1.168.192.in-addr.arpa AXFR

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @127.0.0.1 1.168.192.in-addr.arpa AXFR
; (1 server found)
;; global options: +cmd
1.168.192.in-addr.arpa.	86400	IN	SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016060501 21600 3600 604800 86400
1.168.192.in-addr.arpa.	86400	IN	NS	dns1-test.opensharing.priv.
1.168.192.in-addr.arpa.	86400	IN	NS	dns2-test.opensharing.priv.
11.1.168.192.in-addr.arpa. 86400 IN	PTR	dns1.opensharing.priv.
11.1.168.192.in-addr.arpa. 86400 IN	PTR	dhcp1.opensharing.priv.
11.1.168.192.in-addr.arpa. 86400 IN	PTR	dns1-test.opensharing.priv.
12.1.168.192.in-addr.arpa. 86400 IN	PTR	dns2.opensharing.priv.
12.1.168.192.in-addr.arpa. 86400 IN	PTR	dns2-test.opensharing.priv.
13.1.168.192.in-addr.arpa. 86400 IN	PTR	opsi.opensharing.priv.
14.1.168.192.in-addr.arpa. 86400 IN	PTR	www.opensharing.priv.
15.1.168.192.in-addr.arpa. 86400 IN	PTR	mail1.opensharing.priv.
16.1.168.192.in-addr.arpa. 86400 IN	PTR	mail2.opensharing.priv.
1.168.192.in-addr.arpa.	86400	IN	SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016060501 21600 3600 604800 86400
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jun 17 16:10:47 CEST 2016
;; XFR size: 12 records (messages 1, bytes 352)

La section Pour aller plus loin revient plus en détails sur les champs utilisés.

PAPL01
 

4. Test de transfert de zone initial du master vers le slave

Le serveur DNS master envoie des notifications au DNS slave à chaque fois que son service Bind9 est redémarré. De plus, à intervalle régulier, défini par la valeur time-to-refresh de la zone concernée, le slave effectue une vérification du serial du SOA sur le master.

Sur le master :

# /etc/init.d/bind9 restart

Sur le slave, au même moment :

Jun 17 16:32:29 dns2-test named[2766]: client 192.168.1.11#59216: received notify for zone 'opensharing.priv'
Jun 17 16:32:29 dns2-test named[2766]: zone opensharing.priv/IN: notify from 192.168.1.11#59216: zone is up to date
Jun 17 16:32:30 dns2-test named[2766]: client 192.168.1.11#40507: received notify for zone '1.168.192.in-addr.arpa'
Jun 17 16:32:30 dns2-test named[2766]: zone 1.168.192.in-addr.arpa/IN: notify from 192.168.1.11#40507: zone is up to date

Le slave vérifie alors si le serial du SOA du master est supérieur au sien. Si c’est le cas, alors le slave fait une requête de transfert de zone pour mettre à jour sa base de données DNS. Si le fichier de zone du master est modifié mais que son SOA reste le même alors le slave ne recevra pas les mises à jour puisque c’est le SOA qui sert de référence.

Maintenant imaginons que nous modifiions un enregistrement de la zone opensharing.priv du master et son SOA avec la date du jour et la version, comme ceci :

Etat initial sur le master :

  • serial 2016060501
  • opsi-test 192.168.1.13
[...]
				2016060501	; serial
[...]
opsi-test	IN	A	192.168.1.13
[...]
opsi		IN	CNAME	opsi-test

Modification sur le master :

  • serial 2016061901
  • opsi-test 192.168.1.20
[...]
				2016061901	; serial
[...]
opsi-test	IN	A	192.168.1.20
[...]
opsi		IN	CNAME	opsi-test

 

Faisons de même pour la zone de recherche inversée 1.168.192.in-addr.arpa, sur le master :

Etat initial sur le master :

  • serial 2016060501
  • 192.168.1.13 opsi
[...]
                                2016060501      ; serial
[...]
13              IN      PTR     opsi.opensharing.priv.
[...]

Modification sur le master :

  • serial 2016061901
  • 192.168.1.20 opsi
[...]
                                2016061901      ; serial
[...]
20              IN      PTR     opsi.opensharing.priv.
[...]

Puis redémarrage du service Bind9 sur le master :

# /etc/init.d/bind9 restart

On observe alors le transfert de zone initié par la notification du master :

Jun 19 18:32:41 dns1-test named[3024]: zone opensharing.priv/IN: sending notifies (serial 2016061901)
Jun 19 18:32:41 dns1-test named[3024]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2016061901)
Jun 19 18:32:41 dns1-test named[3024]: client 192.168.1.12#35208 (opensharing.priv): transfer of 'opensharing.priv/IN': AXFR-style IXFR started
Jun 19 18:32:41 dns1-test named[3024]: client 192.168.1.12#35208 (opensharing.priv): transfer of 'opensharing.priv/IN': AXFR-style IXFR ended
Jun 19 18:32:41 dns1-test named[3024]: client 192.168.1.12#57637 (1.168.192.in-addr.arpa): transfer of '1.168.192.in-addr.arpa/IN': AXFR-style IXFR started
Jun 19 18:32:41 dns1-test named[3024]: client 192.168.1.12#57637 (1.168.192.in-addr.arpa): transfer of '1.168.192.in-addr.arpa/IN': AXFR-style IXFR ended

Et, au même moment, sur le slave :

Jun 19 18:32:41 dns2-test named[3248]: client 192.168.1.11#50759: received notify for zone 'opensharing.priv'
Jun 19 18:32:41 dns2-test named[3248]: zone opensharing.priv/IN: Transfer started.
Jun 19 18:32:41 dns2-test named[3248]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: connected using 192.168.1.12#35208
Jun 19 18:32:41 dns2-test named[3248]: zone opensharing.priv/IN: transferred serial 2016061901
Jun 19 18:32:41 dns2-test named[3248]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: Transfer completed: 1 messages, 20 records, 482 bytes, 0.002 secs (241000 bytes/sec)
Jun 19 18:32:41 dns2-test named[3248]: zone opensharing.priv/IN: sending notifies (serial 2016061901)
Jun 19 18:32:41 dns2-test named[3248]: client 192.168.1.11#46668: received notify for zone '1.168.192.in-addr.arpa'
Jun 19 18:32:41 dns2-test named[3248]: zone 1.168.192.in-addr.arpa/IN: Transfer started.
Jun 19 18:32:41 dns2-test named[3248]: transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.11#53: connected using 192.168.1.12#57637
Jun 19 18:32:41 dns2-test named[3248]: zone 1.168.192.in-addr.arpa/IN: transferred serial 2016061901
Jun 19 18:32:41 dns2-test named[3248]: transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.11#53: Transfer completed: 1 messages, 12 records, 352 bytes, 0.001 secs (352000 bytes/sec)
Jun 19 18:32:41 dns2-test named[3248]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2016061901)

Vérification sur le slave avec un dig synthétique :

# dig @127.0.0.1 opsi.opensharing.priv +short
opsi-test.opensharing.priv.
192.168.1.20
# dig @127.0.0.1 -x 192.168.1.20 +short
opsi.opensharing.priv.

La section Pour aller plus loin revient plus en détails sur les champs utilisés.

PAPL02
 

Pour aller plus loin

 
PAPL01

Affichage des fichiers de zones répliqués sur le slave

Les fichiers zones répliqués sur le slave sont au format binaire RAW, contrairement au master où ils sont au format texte.

# cd /var/cache/bind/
# file db.opensharing.priv.slv db.opensharing.priv.inv.slv
db.opensharing.priv.slv:     data
db.opensharing.priv.inv.slv: data

Ceci a pour but d’améliorer les performances. En contrepartie, les données qu’ils contiennent ne sont pas lisibles.

# cat db.opensharing.priv.slv
Wg�msQ�
              opensharingprivK	dns1-test
                                         opensharingpriadminsys
                                                                opensharingprivx*��T`	:�Q�,Q�
                                                                                                     opensharingpriv��hQ�
                                                                                                                                opensharingpriv

Ou alors il faut effectuer un transfert de zone en local avec la commande dig :

# dig axfr @127.0.0.1 opensharing.priv

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> axfr @127.0.0.1 opensharing.priv
; (1 server found)
;; global options: +cmd
opensharing.priv.	86400	IN	SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016061906 21600 3600 604800 86400
opensharing.priv.	86400	IN	A	192.168.1.14
opensharing.priv.	86400	IN	MX	10 mail1-test.opensharing.priv.
opensharing.priv.	86400	IN	MX	20 mail2-test.opensharing.priv.
opensharing.priv.	86400	IN	NS	dns1-test.opensharing.priv.
opensharing.priv.	86400	IN	NS	dns2-test.opensharing.priv.
dhcp1.opensharing.priv.	86400	IN	CNAME	dns1-test.opensharing.priv.
dns1.opensharing.priv.	86400	IN	CNAME	dns1-test.opensharing.priv.
dns1-test.opensharing.priv. 86400 IN	A	192.168.1.11
dns2.opensharing.priv.	86400	IN	CNAME	dns2-test.opensharing.priv.
dns2-test.opensharing.priv. 86400 IN	A	192.168.1.12
mail1.opensharing.priv.	86400	IN	CNAME	mail1-test.opensharing.priv.
mail1-test.opensharing.priv. 86400 IN	A	192.168.1.15
mail2.opensharing.priv.	86400	IN	CNAME	mail2-test.opensharing.priv.
mail2-test.opensharing.priv. 86400 IN	A	192.168.1.16
opsi.opensharing.priv.	86400	IN	CNAME	opsi-test.opensharing.priv.
opsi-test.opensharing.priv. 86400 IN	A	192.168.1.13
wp-test.opensharing.priv. 86400	IN	A	192.168.1.14
www.opensharing.priv.	86400	IN	CNAME	wp-test.opensharing.priv.
opensharing.priv.	86400	IN	SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016061906 21600 3600 604800 86400
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jun 20 12:51:49 CEST 2016
;; XFR size: 20 records (messages 1, bytes 482)

Une autre possibilité existe : convertir le fichier RAW en fichier TXT lisible :

# named-compilezone -f input-format -F output-format -o output-file zone-name input-file

Si output-file = – alors la sortie se fera sur la sortie standard (stdout)

# named-compilezone -f raw -F text -o db.opensharing.priv.slv.text opensharing.priv db.opensharing.priv.slv
zone opensharing.priv/IN: loaded serial 2016061906
dump zone to db.opensharing.priv.slv.text...done
OK
# file db.opensharing.priv.slv.text 
db.opensharing.priv.slv.text: ASCII text
# cat db.opensharing.priv.slv.text
opensharing.priv.			      86400 IN SOA	dns1-test.opensharing.priv. adminsys.opensharing.priv. 2016061906 21600 3600 604800 86400
opensharing.priv.			      86400 IN NS	dns1-test.opensharing.priv.
opensharing.priv.			      86400 IN NS	dns2-test.opensharing.priv.
opensharing.priv.			      86400 IN A	192.168.1.14
opensharing.priv.			      86400 IN MX	10 mail1-test.opensharing.priv.
opensharing.priv.			      86400 IN MX	20 mail2-test.opensharing.priv.
dhcp1.opensharing.priv.			      86400 IN CNAME	dns1-test.opensharing.priv.
dns1.opensharing.priv.			      86400 IN CNAME	dns1-test.opensharing.priv.
dns1-test.opensharing.priv.		      86400 IN A	192.168.1.11
dns2.opensharing.priv.			      86400 IN CNAME	dns2-test.opensharing.priv.
dns2-test.opensharing.priv.		      86400 IN A	192.168.1.12
mail1.opensharing.priv.			      86400 IN CNAME	mail1-test.opensharing.priv.
mail1-test.opensharing.priv.		      86400 IN A	192.168.1.15
mail2.opensharing.priv.			      86400 IN CNAME	mail2-test.opensharing.priv.
mail2-test.opensharing.priv.		      86400 IN A	192.168.1.16
opsi.opensharing.priv.			      86400 IN CNAME	opsi-test.opensharing.priv.
opsi-test.opensharing.priv.		      86400 IN A	192.168.1.13
wp-test.opensharing.priv.		      86400 IN A	192.168.1.14
www.opensharing.priv.			      86400 IN CNAME	wp-test.opensharing.priv.

Si, pour une raison particulière, on préfère avoir directement des fichiers zone répliqués au format TXT plutôt que RAW, on peut le spécifier sur le slave, dans le fichier /etc/bind/named.conf.local :

zone "opensharing.priv" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.slv";
        allow-transfer { localhost; };
        masterfile-format text;
};

zone "1.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.inv.slv";
        allow-transfer { localhost; };
        masterfile-format text;
};

Après une suppression des fichiers de zones répliqués et redémarrage du service bind9 sur le slave, un nouveau transfert de zones initiés par le slave se lance et on obtient deux fichiers de zones directement au format TXT lisible :

# rm db.opensharing.priv.*
# /etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.
# file db.opensharing.priv.*
db.opensharing.priv.inv.slv: ASCII text
db.opensharing.priv.slv:     ASCII text

 


 
PAPL02

Mise en place de la signature TSIG pour le transfert de zones

Rmq : La clef TSIG tsig-key doit au préalable avoir été générée et incluse dans les fichier /etc/bind/named.conf, comme cela a été montré dans la procédure précédente : ISC Bind9 – Serveur DNS primaire section PAPL.
 

Modification sur le slave :

On définit le lien entre le slave et le master : la clef TSIG, qui permettra de signer les requêtes de transferts de zones.

# nano /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
};

server 192.168.1.11 {
 keys { "tsig-key"; };
};

Modification sur le master :

Même chose que pour le slave, on définit la clef TSIG qui signera les transferts entre le master et le slave :

options {
        directory "/var/cache/bind";
};

server 192.168.1.12 {
 keys { "tsig-key"; };
};

Incrémentation du serial : il passe de 2016061901 à 2016061902

$ORIGIN opensharing.priv.
$TTL 86400
@		IN	SOA	dns1-test.opensharing.priv.	adminsys.opensharing.priv. (
				2016061902	; serial
				21600		; refresh 6h
				3600		; retry 1h
				604800		; expire 1 week
				86400 )		; minimum TTL 1 day

Puis redémarrage du service Bind9 sur le master :

# /etc/init.d/bind9 restart

En suivant les logs sur le master, on observe :

Jun 19 19:35:05 dns1-test named[3696]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2016061902)
Jun 19 19:35:05 dns1-test named[3696]: zone opensharing.priv/IN: sending notifies (serial 2016061902)
Jun 19 19:35:05 dns1-test named[3696]: client 192.168.1.12#53432/key tsig-key (1.168.192.in-addr.arpa): transfer of '1.168.192.in-addr.arpa/IN': AXFR-style IXFR started: TSIG tsig-key
Jun 19 19:35:05 dns1-test named[3696]: client 192.168.1.12#53432/key tsig-key (1.168.192.in-addr.arpa): transfer of '1.168.192.in-addr.arpa/IN': AXFR-style IXFR ended
Jun 19 19:35:06 dns1-test named[3696]: client 192.168.1.12#57865/key tsig-key (opensharing.priv): transfer of 'opensharing.priv/IN': AXFR-style IXFR started: TSIG tsig-key
Jun 19 19:35:06 dns1-test named[3696]: client 192.168.1.12#57865/key tsig-key (opensharing.priv): transfer of 'opensharing.priv/IN': AXFR-style IXFR ended

Et, au même moment, sur le slave :

Jun 19 19:35:05 dns2-test named[3787]: client 192.168.1.11#49681/key tsig-key: received notify for zone '1.168.192.in-addr.arpa': TSIG 'tsig-key'
Jun 19 19:35:05 dns2-test named[3787]: zone 1.168.192.in-addr.arpa/IN: Transfer started.
Jun 19 19:35:05 dns2-test named[3787]: transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.11#53: connected using 192.168.1.12#53432
Jun 19 19:35:05 dns2-test named[3787]: zone 1.168.192.in-addr.arpa/IN: transferred serial 2016061902: TSIG 'tsig-key'
Jun 19 19:35:05 dns2-test named[3787]: transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.11#53: Transfer completed: 1 messages, 13 records, 444 bytes, 0.003 secs (148000 bytes/sec)
Jun 19 19:35:05 dns2-test named[3787]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2016061902)
Jun 19 19:35:06 dns2-test named[3787]: client 192.168.1.11#2464/key tsig-key: received notify for zone 'opensharing.priv': TSIG 'tsig-key'
Jun 19 19:35:06 dns2-test named[3787]: zone opensharing.priv/IN: Transfer started.
Jun 19 19:35:06 dns2-test named[3787]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: connected using 192.168.1.12#57865
Jun 19 19:35:06 dns2-test named[3787]: zone opensharing.priv/IN: transferred serial 2016061902: TSIG 'tsig-key'
Jun 19 19:35:06 dns2-test named[3787]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: Transfer completed: 1 messages, 20 records, 560 bytes, 0.001 secs (560000 bytes/sec)
Jun 19 19:35:06 dns2-test named[3787]: zone opensharing.priv/IN: sending notifies (serial 2016061902)

Le transfert de zones signé par la clef TSIG a bien été effectué. S’il avait échoué, nous aurions la mention REFUSED côté slave et denied côté master.

Jun 20 17:47:26 dns2-test named[1709]: zone opensharing.priv/IN: Transfer started.
Jun 20 17:47:26 dns2-test named[1709]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: connected using 192.168.1.12#55019
Jun 20 17:47:26 dns2-test named[1709]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: failed while receiving responses: REFUSED
Jun 20 17:47:26 dns2-test named[1709]: transfer of 'opensharing.priv/IN' from 192.168.1.11#53: Transfer completed: 0 messages, 0 records, 0 bytes, 0.001 secs (0 bytes/sec)
Jun 20 17:47:27 dns1-test named[1461]: client 192.168.1.12#55019 (opensharing.priv): zone transfer 'opensharing.priv/AXFR/IN' denied

 


 

Aller encore plus loin

Pour continuer à explorer la configuration de Bind9, voir les articles suivants :

 

Références

 

 

Fermer le menu
%d blogueurs aiment cette page :