22
0
Fork 0

Relecture et améliorations

This commit is contained in:
Gregory Colpart 2017-07-22 12:38:15 +02:00
parent 66f91a59cf
commit 8e71067cff
1 changed files with 294 additions and 251 deletions

View File

@ -1,171 +1,204 @@
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
# Howto Bind
## Installation et configuration de Bind
---
categories: web system
title: Howto Bind
...
Sous Debian Squeeze, la version de Bind est 9.7.3
* Documentation : <https://www.isc.org/downloads/bind/doc/bind-9-10/>
* DNS et Bind : <http://www.zytrax.com/books/dns/>
* Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/show/bind>
Afin d'installer Bind, lancez les commandes suivantes :
[Bind](https://www.isc.org/downloads/bind/) est le serveur DNS le plus utilisé sur Internet.
## Installation
~~~
# aptitude install bind9
# apt install bind9
$ /usr/sbin/named -V
BIND 9.10.3-P4-Debian <id:ebd72b3>
built by make with '--prefix=/usr' '--mandir=/usr/share/man' '--libdir=/usr/lib/x86_64-linux-gnu' '--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--with-python=python3' '--localstatedir=/' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-gost=no' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-geoip=/usr' '--with-atf=no' '--enable-ipv6' '--enable-rrl' '--enable-filter-aaaa' '--enable-native-pkcs11' '--with-pkcs11=/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so' '--with-randomdev=/dev/urandom' 'CFLAGS=-g -O2 -fdebug-prefix-map=/build/bind9-iBGKO7/bind9-9.10.3.dfsg.P4=. -fstack-protector-strong -Wformat -Werror=format-security -fno-strict-aliasing -fno-delete-null-pointer-checks -DNO_VERSION_DATE -DDIG_SIGCHASE' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
compiled by GCC 6.3.0 20170516
compiled with OpenSSL version: OpenSSL 1.0.2l 25 May 2017
linked to OpenSSL version: OpenSSL 1.0.2l 25 May 2017
compiled with libxml2 version: 2.9.4
linked to libxml2 version: 20904
~~~
L'installation terminée, débutez la configuration en exécutant le script chroot-bind.sh que vous aurez téléchargé
sur [<https://forge.evolix.org/projects/chroot-bind/repository>], et placé dans /root :
## Configuration
Les options de Bind sont dans `/etc/default/bind9`.
Fichiers de configuration :
~~~
# cd /root
# wget <https://forge.evolix.org/projects/chroot-bind/repository/revisions/master/raw/chroot-bind.sh>
# sh chroot-bind.sh
/etc/bind
├── bind.keys
├── db.0
├── db.127
├── db.255
├── db.empty
├── db.local
├── db.root
├── named.conf
├── named.conf.default-zones
├── named.conf.local
├── named.conf.options
├── rndc.key
└── zones.rfc1918
~~~
Ajoutez `-t /var/chroot-bind` dans la variable OPTIONS du fichier /etc/default/bind9 :
### serveur DNS récursif
Lorsque Bind est utilisé en serveur DNS récursif pour une ou plusieurs machines, on conseille d'activer la résolution DNS inverse pour les zones RFC1918 dans le fichier `/etc/bind/named.conf.local` (c'est important car de nombreux outils vérifient les [reverses DNS](#Reverse-DNS)) :
~~~
RESOLVCONF=no
OPTIONS=" -u bind -t /var/chroot-bind"
# Si pas d'IPv6 :
#OPTIONS="-4 -u bind -t /var/chroot-bind"
include "/etc/bind/zones.rfc1918";
~~~
Une fois fait, ouvrez le fichier /etc/bind/named.conf.options et modifiez et/ou ajoutez les lignes suivantes :
Puis ajuster les options via `/etc/bind/named.conf.options` :
~~~
options {
directory "/var/cache/bind";
directory "/var/cache/bind";
version "Bingo";
auth-nxdomain no;
listen-on-v6 { ::1; };
listen-on { 127.0.0.1; };
allow-recursion { ::1; 127.0.0.1; };
}
logging {
category default { default_file; };
channel default_file {
file "/var/log/bind.log";
severity info;
};
};
~~~
> *Note* : dans l'exemple, Bind n'écoute que pour la machine locale. Si l'on veut l'interroger avec d'autres machines, on ajustera les options _listen-*_ et _allow-recursion_ (on pourra notamment utiliser [l'ACL _localnets_](#ACL)
### serveur DNS faisant autorité
Lorsque Bind est utilisé en serveur DNS faisant autorité, on conseille de le sécuriser en [l'enfermant dans un chroot](#chroot).
On va ensuite configurer via le fichier `/etc/bind/named.conf.options` :
~~~
acl "foo" {
::ffff:192.0.2.21; 192.0.2.21;
2001:db8::21;
};
options {
directory "/var/cache/bind";
version "Bingo";
auth-nxdomain no;
//listen-on-v6 { any; };
masterfile-format text;
statistics-file "/var/run/named.stats";
allow-query { localhost;};
listen-on-v6 { any; };
listen-on { any; };
allow-query { localhost; };
allow-recursion { localhost; };
allow-transfer { localhost; };
//allow-query { localhost; localnets; };
//allow-recursion { localhost; localnets; };
//listen-on { 127.0.0.1; [IP LOCALE]; [IP PUBLIQUE];};
};
logging {
//category default { default_syslog; default_debug; };
category default { default_debug; };
category default { default_file; };
category queries { query_logging; };
channel default_syslog {
syslog daemon;
severity info;
};
channel default_debug {
file "/var/log/bind.log";
severity debug;
};
};
~~~
Ensuite, créez le fichier /etc/bind/named.conf.acl et ajoutez des ACL du type
~~~
acl "ACL-kivabien" {
::ffff:62.212.111.216; 62.212.111.216; // Nerim
::ffff:88.179.18.233; 88.179.18.233; // Free
::ffff:85.31.205.33; 85.31.205.33;
::ffff:85.118.59.1; 85.118.59.1;
channel default_file {
file "/var/log/bind.log";
severity info;
};
channel query_logging {
file "/var/log/bind_queries.log" versions 2 size 128M;
print-category yes;
print-severity yes;
print-time yes;
};
};
~~~
Dans le fichier /etc/bind/named.conf, ajustez :
~~~
include "/etc/bind/named.conf.acl";
include "/etc/bind/named.conf.options";
~~~
Puis redémarrez Bind :
~~~
# /etc/init.d/bind9 restart
~~~
Créez le fichier /etc/bind/named.conf.local et ajouter le bloc de lignes suivant autant de fois que ce que vous comptez gérer de domaines en remplaçant 'example.com' par le domaine en question :
On peut ensuite ajouter ses domaines pour lesquels Bind fait autorité dans le fichier `/etc/bind/named.conf.local`, par exemple pour _example.com_ avec un serveur secondaire dans l'ACL _foo_ :
~~~
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-query { any; };
allow-transfer { "ACL-kivabien"; };
allow-transfer { "foo"; };
};
~~~
Ensuite, pour chaque bloc créé, il vous faudra créer autant de fichiers correspondant au 'file' de l'étape précédente, qui contiendra les lignes suivantes
(en remplacant les 'example.com' par votre domaine, et les '[IP PUBLIQUE]' par l'adresse IP numérique adéquate :
Puis enfin les fichiers de zone, exemple avec un `/etc/bind/db.example.com` simple :
~~~
$TTL 1800
@ IN SOA ns1.ns-example.com. dnsmaster.example.com. (
2011090101 ; serial
@ IN SOA ns1.example.net. dnsmaster.example.com. (
2017072107 ; serial
2h ; rafraichissement slave->master
1h ; en cas d'echec du refraichissement, nouvel essai
5w ; expiration des enregistrements en cache par le slave
10m ) ; TTL negatif
IN A [IP PUBLIQUE]
A 192.0.2.80
IN NS ns1.ns-example.com.
NS ns2.ns-example.com.
NS ns1.example.net.
NS ns2.example.org.
; IN MX 10 mail
ns1 IN A [IP PUBLIQUE]
;mail IN A [IP PUBLIQUE]
MX 0 .
TXT "v=spf1 -all"
www IN CNAME @
ftp IN CNAME ftp.debian.org.
www CNAME @
ftp CNAME ftp.example.net.
~~~
~~~
où ns1.ns-example.com correspond au nom du serveur primaire et dnsmaster.example.com correspond à un mail dnsmaster@example.com qui doit être valide.
> *Note* : on s'assurera que les fichiers de zone sont lisibles par l'utilisateur _bind_ en faisant `chown bind:bind /etc/bind/db.example.com`
Poursuivez dans le fichier /etc/bind/named.conf et rajoutez la ligne suivante en toute fin de fichier :
## chroot
Pour enfermer Bind dans une prison _chroot_ nous utilisons le script [chroot-bind.sh](https://forge.evolix.org/projects/chroot-bind/repository) :
~~~
include "/etc/bind/named.conf.CLIENT";
~~~
Enfin, vérifiez que l'ensemble des fichiers que vous avez créé et/ou modifié sont bien en accès lecture pour l'utilisateur bind:bind,
soit par un chown, soit par un chmod 644. Redémarrez Bind par la commande :
~~~
# /etc/init.d/bind9 restart
# cd /root
# wget https://forge.evolix.org/projects/chroot-bind/repository/revisions/master/raw/chroot-bind.sh
# sh chroot-bind.sh
~~~
Et testez avec _dig_ le couteau suisse du DNS !
## Mise à jour dynamique
Il est possible de mettre à jour une zone DNS avec nsupdate et une clef DNSSEC sans devoir éditer le fichier db.
Dans ce cas, Bind génère un ficher de journal binaire contenant l'historique des modifications apportées à la zone.
Ce fichier n'est pas "flushé" en temps réel et la zone au format texte peut être désynchronisée quelques temps après une modification (elle est mise à jour avec le journal environ toutes les 15min), il faut donc faire attention lors d'une mise à jour manuelle :
Puis ajoutez `-t /var/chroot-bind` dans la variable OPTIONS du fichier `/etc/default/bind9 :
~~~
rndc freeze domain.tld
[Modification manuelle de la zone]
rndc thaw domain.tld
rndc reload domain.tld
RESOLVCONF=no
OPTIONS=" -u bind -t /var/chroot-bind"
~~~
Vous devez alors relancer Bind :
~~~
# systemctl restart bind9
~~~
À chaque mise à jour du paquet _bind9_ ou de l'une de ses dépendances (_libc6_, _libcap2_, _libssl_, etc.) vous devrez relancer le script _chroot-bind.sh_ et Bind ensuite.
## Rotation des logs
Voici un exemple de configuration logrotate, qui effectue la rotation du fichier bind.log à l'intérieur du chroot :
On utilise [logrotate](HowtoLogrotate) pour la rotation des logs.
Voici le fichier `/etc/logrotate.d/bind` que l'on utilise pour un serveur récursif :
~~~
/var/chroot-bind/var/log/bind.log {
/var/log/bind.log {
weekly
missingok
rotate 4
rotate 8
create 640 bind bind
sharedscripts
postrotate
@ -174,6 +207,89 @@ Voici un exemple de configuration logrotate, qui effectue la rotation du fichier
}
~~~
Pour un serveur faisant autorité, on doit préciser le path des fichiers dans le _chroot_ :
~~~
/var/chroot-bind/var/log/bind.log {
weekly
missingok
rotate 52
create 640 bind bind
sharedscripts
postrotate
rndc reload > /dev/null
endscript
}
~~~
> *Note* : la rotation du fichier `/var/chroot-bind/var/log/bind_queries.log` est assurée par Bind sous réserve d'avoir bien précisé l'option _versions_ dans les paramètres de logging Bind
## ACL
<http://www.zytrax.com/books/dns/ch7/address_match_list.html>
Au sein des différentes directives _allow-*_ on peut utiliser des ACLs.
Par défaut, les ACLs suivantes sont prédéfinies :
* _none_ : aucune adresse IP
* _any_ : toutes les adresses IP
* _localhost_ : toutes les adresses IP de la machine (127.0.0.1 mais aussi les adresses configurées sur les différentes interfaces réseau)
* _localnets_ : tous les sous-réseaux dans lesquels la machine possède une adresse IP
On peut également définir ses propres ACLs :
~~~
acl "bar" {
::ffff:192.0.2.21; 192.0.2.21;
::ffff:192.0.2.42; 192.0.2.42;
2001:db8::21; 2001:db8::42;
};
~~~
## Master/Slave
Dans une configuration master/slave, le serveur DNS slave, réplique tout ou partie de ses fichiers de zone à partir d'un serveur DNS master.
Si l'on reprend le cas de la zone master suivante :
~~~
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-query { any; };
allow-transfer { "foo"; };
};
~~~
Sur le serveur DNS slave, on spécifiera l'adresse IP du serveur master ainsi qu'un fichier pour sauvegarder la zone en local :
~~~
zone "example.com" {
type slave;
file "/etc/bind/bak.example.com";
allow-query { any; };
masters { 192.0.2.53; };
};
~~~
> *Note* : pour avoir le fichier de zone en clair sur le serveur slave (ce qui est pratique notamment en cas d'incident avec le serveur master), il faut s'assurer d'avoir l'option `masterfile-format text` dans la configuration de Bind.
## Mise à jour dynamique
Il est possible de mettre à jour une zone DNS sans éditer le fichier avec `nsupdate`.
Dans ce cas, Bind génère un ficher de journal binaire contenant l'historique des modifications apportées à la zone.
> *Note* : la synchronisation avec le fichier réel de zone n'est pas faite en temps réel, cela se fait toutes les 15 minutes en général : il faut donc faire attention si l'on veut éditer le fichier de zone, il faudra forcer la synchronisation ainsi :
> ~~~
> rndc freeze domain.tld
> [Modification manuelle de la zone]
> rndc thaw domain.tld
> rndc reload domain.tld
> ~~~
## Reverse DNS
Un reverse DNS est un nom de domaine associé à une adresse IP. Exemples :
@ -196,181 +312,90 @@ $ dig -x 2a01:9500::3
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.9.1.0.a.2.ip6.arpa. 43200 IN PTR forge.evolix.net.
~~~
Cela fonctionne avec un nom de domaine "virtuel" : .in-addr.arpa en IPv4 et .ip6.arpa en IPv6 !
Cela fonctionne avec un nom de domaine "virtuel" : `.in-addr.arpa` en IPv4 et `.ip6.arpa` en IPv6 !
Et il est important de configurer les reverse DNS, car certains services les vérifient : Postfix, MySQL, CUPS, etc.
...notamment, sur un réseau avec des adresses privés qui ne doivent pas être propagés sur Internet ([
des serveurs DNS de IANA répondent tout de même pour ces demandes... mais sans aucune garantie de bon fonctionnement !!](http://www.iana.org/abuse/answers))
Il est important de configurer les reverse DNS, car ils sont souvent vérifiés par les serveurs SMTP, et certains logiciels les vérifient également (Postfix, MySQL, CUPS, SSH, etc.). Sur un réseau avec des adresses privées, il également important de renvoyer au minimum une réponse DNS _NXDOMAIN_ ce qui peut être fait facilement grâce au fichier `/etc/bind/zones.rfc1918`.
On ajoutera ainsi systématiquement dans son named.conf.local :
À noter que [les DNS de IANA répondent tout de même pour ces demandes... mais sans garantie de bon fonctionnement !](http://www.iana.org/abuse/answers)
## Monitoring
### dnstop
L'outil **dnstop** permet de surveiller en direct l'activité DNS en analysant les paquets réseau qui circulent :
~~~
zone "10.in-addr.arpa" {
type master;
file "/etc/bind/db.nxdomain";
};
# apt install dnstop
# dnstop -l3 eth0
zone "168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.nxdomain";
};
zone "16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.nxdomain";
};
zone "17.172.in-addr.arpa" {
type master;
file "/etc/bind/db.nxdomain";
};
[...]
zone "30.172.in-addr.arpa" {
type master;
file "/etc/bind/db.nxdomain";
};
zone "31.172.in-addr.arpa" {
type master;
file "/etc/bind/db.nxdomain";
};
~~~
Avec un fichier /etc/bind/db.nxdomain du type :
~~~
$TTL 1800
@ IN SOA ns1.ns-example.com. dnsmaster.example.com. (
2011090101 ; serial
2h ; rafraichissement slave->master
1h ; en cas d'echec du refraichissement, nouvel essai
5w ; expiration des enregistrements en cache par le slave
10m ) ; TTL negatif
IN NS ns1.ns-example.com.
~~~
## Master/Slave
Dans une configuration master/slave, un serveur DNS (le slave), réplique tout ou partie de ses fichiers de zone à partir d'un master.
Voici les directives à positionner pour cela :
Sur le master, chaque zone devant être répliquée doit autoriser les transferts à partir du slave, à l'aide de la directive `allow-transfer`. Exemple :
~~~
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-query { any; };
allow-transfer { IP_DU_SLAVE; };
};
~~~
Sur le slave, chaque zone répliquée doit spécifier l'adresse IP du master à partir duquel le transfert sera fait,
et autoriser également les notifications de modification de zone provenant de celui-ci (directive `allow-notify`) :
~~~
zone "example.com" {
type slave;
file "/etc/bind/slave/example.com";
masters { IP_DU_MASTER; };
allow-query { any; };
allow-notify { IP_DU_MASTER; };
};
~~~
Une fois cela en place, recharger la configuration du master puis du slave, et valider le bon fonctionnement en vérifiant la présence du fichier `/etc/bind/slave/example.com` que Bind doit créer. Effectuer également une vérification sur le slave à l'aide de l'outil dig par exemple.
## Surveillance
L'outil "dnstop" (paquet Debian du même nom), peut être utilisé pour analyser le trafic DNS d'un serveur.
On lui passe en paramètre l'interface réseau sur laquelle écouter. Example :
~~~
# dnstop eth0
s - Sources list
d - Destinations list
t - Query types
o - Opcodes
r - Rcodes
1 - 1st level Query Names ! - with Sources
2 - 2nd level Query Names @ - with Sources
3 - 3rd level Query Names # - with Sources
4 - 4th level Query Names $ - with Sources
5 - 5th level Query Names % - with Sources
6 - 6th level Query Names ^ - with Sources
7 - 7th level Query Names & - with Sources
8 - 8th level Query Names * - with Sources
9 - 9th level Query Names ( - with Sources
^R - Reset counters
^X - Exit
~~~
### Munin
Des plugins munin officiel permettent de tracer des courbes par rapport aux requêtes que le serveur à reçu.
#### Graphs des accès via un fichier de log
Pour cela il faut configurer une partie logs dans bind, simillaire à ceci :
Pour activer les plugins Munin pour Bind :
~~~
logging {
channel query_logging {
file "/var/log/queries.log" versions 2 size 5M;
print-category yes;
print-severity yes;
print-time yes;
};
category queries { query_logging; };
# cd /etc/munin/plugins
# ln -s /usr/share/munin/plugins/bind9_rndc
# ln -s /usr/share/munin/plugins/bind9
~~~
Ensuite il faut configurer le [wiki:HowtoMunin#Lepluginbind plugin munin] pour lui dire d'aller lire ce fichier.
#### Graphs des stats via rndc
Configurer le chemin des statisques bind, dans `named.conf.options`
Le plugin *bind9_rndc* s'appuye sur le fichier `/var/run/named.stats` (option _statistics-file_ de Bind) et *bind9* s'appuie un fichier de logs (channel *query_logging* dans les logs Bind). Il donc s'assurer d'avoir bien configurer ces deux fichiers puis on indique à Munin via `/etc/munin/plugin-conf.d/munin-node` :
~~~
statistics-file "/var/cache/bind/named.stats";
[bind*]
user root
env.logfile /var/chroot-bind/var/log/bind_queries.log
env.querystats /var/chroot-bind/var/run/named.stats
env.MUNIN_PLUGSTATE /var/lib/munin
timeout 120
~~~
Ensuite il faut configurer le [wiki:HowtoMunin#Lepluginbind_rndc plugin munin] pour lui dire d'aller lire ce fichier.
Assurez-vous du bon fonctionnement de la commande `rndc status`
### Log2mail
Pour être alerté en cas de fichiers de zone incorrect, on peut rajouter ceci dans la conf de log2mail :
Pour être alerté en cas de fichiers de zone incorrect, on peut rajouter ceci dans la conf de [Log2mail](HowtoLog2mail) :
~~~
file = /var/chroot-bind/var/log/bind.log
pattern = "not loaded due to errors"
mailto = alert@example.com
file = /var/log/syslog
pattern = "not loaded due to errors"
mailto = postmaster@example.com
template = /etc/log2mail/template.bind
pattern = "fatal error"
mailto = alert@example.com
pattern = "loading configuration: failure"
mailto = alert@example.com
~~~
Et le contenu de _/etc/log2mail/template.bind_ :
~~~
From: %f
To: %t
Subject: Bind problem
## géolocalisation
Hello!
We have matched your pattern "%m" in "%F" %n times:
%l
Yours,
log2mail.
~~~
## Bind et GeoIP
On peut faire du GeoDNS de 2 façons avec Bind :
Bind peut répondre une réponse différente selon l'adresse IP qui l'interroge, on peut faire cela de deux façons :
* à l'aide de ce [patch](http://code.google.com/p/bind-geoip/). Le principe est de faire une recherche suivant un arbre binaire (binary search tree) sur la base de données de MaxMind. Cela n'impacte pas les temps de réponse mais nécessite de maintenir un Bind patché ;
* en se basant sur le système de vue/acl de Bind. Le principe est de récupérer les plages d'adresses par pays auprès de MaxMind et de générer des fichiers d'acl à l'aide de ce [script](http://phix.me/geodns/). Les performances sont en théorie moins bonnes (mais pas vraiment constaté dans la pratique), mais l'installation est bien plus simple à maintenir.
* en se basant sur le système de vuel de Bind. Le principe est de récupérer les plages d'adresses par pays auprès de MaxMind et de générer des fichiers d'acl à l'aide de ce [script](http://phix.me/geodns/). Les performances sont en théorie moins bonnes (mais pas vraiment constaté dans la pratique), mais l'installation est bien plus simple à maintenir.
### À l'aide de vues/acl
### À l'aide de vues
* Récupérer le script :
~~~
$ wget <http://phix.me/geodns/GeoIP.py>
~~~
* installer les dépendances nécessaires :
* On récupère le script [GeoIP.py](http://phix.me/geodns/GeoIP.py) et on installe les dépendances nécessaires :
~~~
# apt install python-mpmath
@ -417,9 +442,9 @@ view "other" {
};
};
~~~
Le script peut être mis en cron pour conserver des ACL à jour.
## FAQ
### journal out of sync
@ -456,26 +481,28 @@ En lançant votre démon, celui-ci est stoppé immédiatement avec un simple mes
received control channel command 'stop'
~~~
...vérifiez si vous n'avez pas oublié l'option -f tout en utilisant systemd.
...vérifiez si vous n'avez pas oublié l'option `-f` tout en utilisant systemd.
### Zone slave avec Bind 9.9
À partir de Bind 9.9, le stockage des zones slave se fait en binaire.
Avec une ancienne configuration vous aurez des :
Avec une ancienne configuration vous aurez des erreurs :
~~~
zone example.com/IN: loading from master file /etc/bind/bak.example.com failed: not implemented
zone example.com/IN: unable to load from '/etc/bind/bak.example.com'; renaming file to '/etc/bind/db-5GoiCpdc' for failure analysis and retransferring.
~~~
Pour conserver l'ancien comportement il faut ajouter dans votre configuration : masterfile-format text;
Pour conserver l'ancien comportement il faut ajouter dans la configuration :
~~~
masterfile-format text;
~~~
Voir <http://geekdom.wesmo.com/2014/06/05/bind9-dns-slave-file-format/>
### Vérifier la configuration
~~~
# named-checkconf /etc/bind/named.conf
~~~
@ -488,3 +515,19 @@ Sur le slave :
# rndc reload example.com
zone refresh queued
~~~
### Pas d'IPv6 ou souci d'IPv6
Si malheureusement vous n'avez pas d'IPv6 sur votre serveur ou alors si la qualité de votre connexion IPv6 est insuffisante, vous devez forcer Bind à n'utiliser que l'IPv4.
Vous allez le forcer à ne pas écouter en IPv6 ainsi :
~~~
listen-on-v6 { none; };
~~~
Et via le fichier `/etc/default/bind9` vous allez le forcer à n'effectuer des requêtes qu'en IPv4 :
~~~
OPTIONS="-u bind -4 -t /var/chroot-bind"
~~~