Projet

Général

Profil

Bind » Historique » Version 24

Laurent GUERBY, 07/10/2014 20:10

1 1 Fabien Dupont
h1. Installation et configuration de bind
2 1 Fabien Dupont
3 2 Fabien Dupont
{{>toc}}
4 2 Fabien Dupont
5 20 Laurent GUERBY
h2. Principe général
6 4 Fabien Dupont
7 20 Laurent GUERBY
Un serveur de nom *primaire* pour une zone est un serveur hébergeant la zone déclarée en type « *master* » et étant déclaré en tant que « NS » pour cette zone.
8 4 Fabien Dupont
9 20 Laurent GUERBY
Un serveur de nom *secondaire* pour une zone est un serveur hébergeant la zone déclarée en type « *slave* » et étant déclaré en tant que « NS » pour cette zone.
10 4 Fabien Dupont
11 20 Laurent GUERBY
Du point de vue du client DNS, celui qui interroge le serveur pour résoudre un nom, il n'y a pas de notion de primaire ou secondaire. Tous les serveurs déclarés sur une zone seront interrogés tour à tout avec du round-robin pour répartir la charge.
12 4 Fabien Dupont
13 4 Fabien Dupont
<pre>
14 4 Fabien Dupont
    temps          primaire              secondaire
15 4 Fabien Dupont
      |               |                      |
16 4 Fabien Dupont
      |    [modification d'une zone]         |
17 4 Fabien Dupont
      |               |                      |
18 4 Fabien Dupont
      |               |-----notificaiton---->|
19 4 Fabien Dupont
      |               |        NOTIFY        |
20 4 Fabien Dupont
      |               |                      |
21 20 Laurent GUERBY
      |               |<---téléchargement----|
22 4 Fabien Dupont
      |               |      AXFR/IXFR       |
23 4 Fabien Dupont
      |               |                      |
24 4 Fabien Dupont
      |               |                      |
25 4 Fabien Dupont
      |               |                      |
26 4 Fabien Dupont
      |               |              [expiration du TTL]
27 4 Fabien Dupont
      |               |                      |
28 20 Laurent GUERBY
      |               |<---téléchargement----|
29 4 Fabien Dupont
      |               |      AXFR/IXFR       |
30 4 Fabien Dupont
      |               |                      |
31 4 Fabien Dupont
      v               v                      v
32 4 Fabien Dupont
</pre>
33 4 Fabien Dupont
34 20 Laurent GUERBY
Le serveur secondaire télécharge la zone depuis le primaire dans deux cas :
35 4 Fabien Dupont
36 20 Laurent GUERBY
* La zone a été modifiée sur le primaire. Celui-ci notifie alors le secondaire de la présence d'une nouvelle version de la zone. Le secondaire initie le téléchargement par une requête AXFR (transfert de la zone complète) ou IXFR (transfert incrémental).
37 20 Laurent GUERBY
* Le TTL (Time To Live) expire sur le serveur secondaire. Celui-ci récupère une version fraîche de la zone depuis le primaire (idem, AXFR ou IXFR).
38 4 Fabien Dupont
39 20 Laurent GUERBY
Il est possible de forcer l'envoi d'une notification depuis le primaire afin de mettre à jour les zones sur tous les secondaires configurés. Cela est utile dans le cas où le(s) secondaire(s) étaient inaccessibles au moment de la mise à jour d'une zone. Cela permet de ne pas avoir à attendre l'expiration du TTL sur les secondaires.
40 4 Fabien Dupont
41 20 Laurent GUERBY
Dans le cas d'un transfert incrémental (IXFR), le serveur secondaire indique au primaire le numéro de série de la zone qu'il connaît et le serveur primaire retourne uniquement les différences avec la zone active.
42 4 Fabien Dupont
43 20 Laurent GUERBY
h2. Installation de bind « chrooté »
44 1 Fabien Dupont
45 1 Fabien Dupont
h3. Installation
46 1 Fabien Dupont
47 20 Laurent GUERBY
Debian stable (actuellement squeeze) n'est pas très à jour niveau mise à  jour de sécurité de bind. Personnellement, je préfère installer la version « testing » (wheezy) dans un environnement « chrooté ».
48 1 Fabien Dupont
49 1 Fabien Dupont
<pre>
50 1 Fabien Dupont
# aptitude -t wheezy install bind
51 1 Fabien Dupont
</pre>
52 1 Fabien Dupont
53 20 Laurent GUERBY
h3. Création de l'environnement chrooté
54 1 Fabien Dupont
55 1 Fabien Dupont
<pre>
56 1 Fabien Dupont
# mkdir -p /var/bind9/chroot/{etc,dev,var/named/pri,var/named/sec,var/run/named}
57 1 Fabien Dupont
# mknod /var/bind9/chroot/dev/null c 1 3
58 1 Fabien Dupont
# mknod /var/bind9/chroot/dev/random c 1 8
59 1 Fabien Dupont
# chmod 660 /var/bind9/chroot/dev/{null,random}
60 1 Fabien Dupont
# mv /etc/bind /var/bind9/chroot/etc/bind
61 1 Fabien Dupont
# ln -sv /var/bind9/chroot/etc/bind /etc/bind
62 1 Fabien Dupont
# chown -R bind:bind /var/bind9/chroot/etc/bind
63 1 Fabien Dupont
# chmod 775 /var/bind9/chroot/var/{named/pri,named/sec,run/named}
64 1 Fabien Dupont
# chgrp bind /var/bind9/chroot/var/{named/pri,named/sec,run/named}
65 1 Fabien Dupont
</pre>
66 1 Fabien Dupont
67 20 Laurent GUERBY
h3. Configuration des scripts de démarrage de bind et de rsyslog
68 1 Fabien Dupont
69 1 Fabien Dupont
<pre>
70 1 Fabien Dupont
# sed -i -e 's/^OPTIONS=.*$/OPTIONS="-u bind -t \/var\/bind9\/chroot"/' /etc/default/bind9
71 1 Fabien Dupont
# sed -i -e 's/^PIDFILE=.*$/PIDFILE=\/var\/bind9\/chroot\/var\/run\/named\/named.pid/' /etc/init.d/bind9
72 1 Fabien Dupont
# echo "\$addUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind9-chrooted.conf
73 1 Fabien Dupont
</pre>
74 1 Fabien Dupont
75 1 Fabien Dupont
h3. Configuration de bind
76 1 Fabien Dupont
77 20 Laurent GUERBY
/etc/bind/named.conf : Fichier de configuration lu par le daemon au démarrage. Il est préférable de séparer la configuration par « activité ».
78 1 Fabien Dupont
79 1 Fabien Dupont
<pre>
80 1 Fabien Dupont
include "/etc/bind/named.conf.options";
81 1 Fabien Dupont
include "/etc/bind/named.conf.local";
82 1 Fabien Dupont
include "/etc/bind/named.conf.default-zones";
83 1 Fabien Dupont
include "/etc/bind/named.conf.zones";
84 1 Fabien Dupont
</pre>
85 1 Fabien Dupont
86 1 Fabien Dupont
/etc/bind/named.conf.options : Options du daemon.
87 1 Fabien Dupont
88 1 Fabien Dupont
<pre>
89 1 Fabien Dupont
options {
90 1 Fabien Dupont
        directory "/var/named";
91 1 Fabien Dupont
92 1 Fabien Dupont
        // If there is a firewall between you and nameservers you want
93 1 Fabien Dupont
        // to talk to, you may need to fix the firewall to allow multiple
94 1 Fabien Dupont
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
95 1 Fabien Dupont
96 1 Fabien Dupont
        // If your ISP provided one or more IP addresses for stable
97 1 Fabien Dupont
        // nameservers, you probably want to use them as forwarders.
98 1 Fabien Dupont
        // Uncomment the following block, and insert the addresses replacing
99 1 Fabien Dupont
        // the all-0's placeholder.
100 1 Fabien Dupont
101 1 Fabien Dupont
        // forwarders {
102 1 Fabien Dupont
        //      0.0.0.0;
103 1 Fabien Dupont
        // };
104 1 Fabien Dupont
105 1 Fabien Dupont
        auth-nxdomain no;    # conform to RFC1035
106 1 Fabien Dupont
        listen-on-v6 { any; };
107 4 Fabien Dupont
        transfer-source { 80.67.176.156; };
108 4 Fabien Dupont
        transfer-source-v6 { 2001:910:109c:2::53; };
109 1 Fabien Dupont
};
110 1 Fabien Dupont
111 1 Fabien Dupont
controls {
112 1 Fabien Dupont
        inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
113 1 Fabien Dupont
};
114 1 Fabien Dupont
115 1 Fabien Dupont
include "/etc/bind/rndc.key";
116 1 Fabien Dupont
</pre>
117 1 Fabien Dupont
118 20 Laurent GUERBY
Les paramètres transfer-source et transfer-source-v6 permette de définir l'adresse IP source utilisée lors de transferts de zones depuis le primaire vers le secondaire.
119 20 Laurent GUERBY
Par défaut, bind utilise l'interface qui a l'adresse IP la plus « proche » de celle du serveur secondaire (même subnet, en gros).
120 20 Laurent GUERBY
Ce paramètre est très utile dans le cas où un serveur primaire dispose de plusieurs interface réseau.
121 4 Fabien Dupont
122 1 Fabien Dupont
/etc/bind/named.conf.local : zones des reverses RFC1918. Le fichier /etc/bind/zones.rfc1918 est fourni par debian.
123 1 Fabien Dupont
124 1 Fabien Dupont
<pre>
125 1 Fabien Dupont
//
126 1 Fabien Dupont
// Do any local configuration here
127 1 Fabien Dupont
//
128 1 Fabien Dupont
129 1 Fabien Dupont
// Consider adding the 1918 zones here, if they are not used in your
130 1 Fabien Dupont
// organization
131 1 Fabien Dupont
include "/etc/bind/zones.rfc1918";
132 1 Fabien Dupont
</pre>
133 1 Fabien Dupont
134 20 Laurent GUERBY
/etc/bind/named.conf.default-zones : zones par « défaut » (serveurs root, localhost, reverse 127.0.0.0/8), fichiers fournis par debian.
135 1 Fabien Dupont
136 1 Fabien Dupont
<pre>
137 1 Fabien Dupont
// prime the server with knowledge of the root servers
138 1 Fabien Dupont
zone "." {
139 1 Fabien Dupont
        type hint;
140 1 Fabien Dupont
        file "/etc/bind/db.root";
141 1 Fabien Dupont
};
142 1 Fabien Dupont
143 1 Fabien Dupont
// be authoritative for the localhost forward and reverse zones, and for
144 1 Fabien Dupont
// broadcast zones as per RFC 1912
145 1 Fabien Dupont
146 1 Fabien Dupont
zone "localhost" {
147 1 Fabien Dupont
        type master;
148 1 Fabien Dupont
        file "/etc/bind/db.local";
149 1 Fabien Dupont
};
150 1 Fabien Dupont
151 1 Fabien Dupont
zone "127.in-addr.arpa" {
152 1 Fabien Dupont
        type master;
153 1 Fabien Dupont
        file "/etc/bind/db.127";
154 1 Fabien Dupont
};
155 1 Fabien Dupont
156 1 Fabien Dupont
zone "0.in-addr.arpa" {
157 1 Fabien Dupont
        type master;
158 1 Fabien Dupont
        file "/etc/bind/db.0";
159 1 Fabien Dupont
};
160 1 Fabien Dupont
161 1 Fabien Dupont
zone "255.in-addr.arpa" {
162 1 Fabien Dupont
        type master;
163 1 Fabien Dupont
        file "/etc/bind/db.255";
164 1 Fabien Dupont
};
165 1 Fabien Dupont
</pre>
166 1 Fabien Dupont
167 20 Laurent GUERBY
/etc/bind/named.conf.zones : Définition des zones primaires ou secondaires (voir plus loin) hébergées par le serveur.
168 1 Fabien Dupont
169 1 Fabien Dupont
<pre>
170 1 Fabien Dupont
zone "kafe-in.net" IN {
171 1 Fabien Dupont
        type slave;
172 1 Fabien Dupont
        file "sec/kafe-in.net.zone";
173 1 Fabien Dupont
        allow-notify { 2001:910:109c:2::53/128; };
174 1 Fabien Dupont
        masters { 2001:910:109c:2::53/128; };
175 1 Fabien Dupont
};
176 1 Fabien Dupont
177 1 Fabien Dupont
zone "k-f.in" IN {
178 1 Fabien Dupont
        type master;
179 1 Fabien Dupont
        file "pri/k-f.in.zone";
180 1 Fabien Dupont
        allow-transfer { 2001:910:109c:2::53/128; };
181 1 Fabien Dupont
};
182 1 Fabien Dupont
</pre>
183 1 Fabien Dupont
184 20 Laurent GUERBY
Pour que les modifications soient prises en compte, il faut redémarrer rsyslog et bind9.
185 1 Fabien Dupont
186 1 Fabien Dupont
<pre>
187 1 Fabien Dupont
# /etc/init.d/rsyslog restart
188 1 Fabien Dupont
# /etc/init.d/bind9 restart
189 1 Fabien Dupont
</pre>
190 1 Fabien Dupont
191 1 Fabien Dupont
h2. Configuration d'un serveur primaire
192 1 Fabien Dupont
193 1 Fabien Dupont
Example pour la zone k-f.in :
194 1 Fabien Dupont
195 1 Fabien Dupont
<pre>
196 1 Fabien Dupont
# cat /var/bind9/chroot/var/named/k-f.in.zone
197 1 Fabien Dupont
$TTL 864000
198 1 Fabien Dupont
@ IN SOA dns2.kafe-in.net. fab.kafe-in.net. (
199 1 Fabien Dupont
                2012061701      ; serial
200 1 Fabien Dupont
                3600            ; refresh
201 1 Fabien Dupont
                900             ; retry
202 1 Fabien Dupont
                1209600         ; expire
203 1 Fabien Dupont
                43200           ; default_ttl
204 1 Fabien Dupont
)
205 1 Fabien Dupont
206 1 Fabien Dupont
@                     IN NS     dns.kafe-in.net.
207 1 Fabien Dupont
@                     IN NS     dns2.kafe-in.net.
208 1 Fabien Dupont
209 1 Fabien Dupont
@               28800 IN MX     10 mail.kafe-in.net.
210 1 Fabien Dupont
@               28800 IN MX     20 mail2.kafe-in.net.
211 1 Fabien Dupont
212 1 Fabien Dupont
                28800 IN A      91.224.149.142
213 1 Fabien Dupont
                28800 IN AAAA   2a01:6600:8081:8e00::fab
214 1 Fabien Dupont
215 1 Fabien Dupont
; FDN
216 1 Fabien Dupont
roussane        28800 IN A      80.67.176.156
217 1 Fabien Dupont
roussane        28800 IN AAAA   2001:910:109c:1::2
218 1 Fabien Dupont
219 1 Fabien Dupont
; Tetaneutral
220 1 Fabien Dupont
muscat          28800 IN A      91.224.149.142
221 1 Fabien Dupont
muscat          28800 IN AAAA   2a01:6600:8081:8e00::fab
222 1 Fabien Dupont
223 1 Fabien Dupont
; Services
224 1 Fabien Dupont
www             28800 IN CNAME  muscat
225 1 Fabien Dupont
</pre>
226 1 Fabien Dupont
227 20 Laurent GUERBY
Le serveur primaire est dns.kafe-in.net (80.67.176.156 et 2001:910:109c:2::53). Ce n'est pas forcément le premier « NS » défini qui est primaire. C'est celui qui héberge la zone avec un type « master » et qui est défini en « SOA » (« Start of Authority »).
228 1 Fabien Dupont
229 20 Laurent GUERBY
Le zone k-f.in doit donc être déclarée de la façon suivante dans le fichier named.conf.zones du serveur primaire :
230 1 Fabien Dupont
231 1 Fabien Dupont
<pre>
232 1 Fabien Dupont
zone "k-f.in" IN {
233 1 Fabien Dupont
        type master;
234 1 Fabien Dupont
        file "pri/k-f.in.zone";
235 1 Fabien Dupont
        allow-transfer { 2a01:6600:8081:8e00::fab/128; };
236 1 Fabien Dupont
};
237 1 Fabien Dupont
</pre>
238 1 Fabien Dupont
239 20 Laurent GUERBY
La zone k-f.in est de type « master » (serveur primaire) et seul le serveur secondaire 2a01:6600:8081:8e00::fab/128 est autorisé à la demander lors de mises à jour de la zone sur le primaire.
240 1 Fabien Dupont
241 1 Fabien Dupont
h2. Configuration d'un serveur secondaire
242 1 Fabien Dupont
243 20 Laurent GUERBY
La même zone k-f.in doit donc être déclarée de la façon suivante dans le fichier named.conf.zones du serveur secondaire :
244 1 Fabien Dupont
245 1 Fabien Dupont
<pre>
246 1 Fabien Dupont
zone "k-f.in" IN {
247 1 Fabien Dupont
        type slave;
248 1 Fabien Dupont
        file "sec/k-f.in.zone";
249 1 Fabien Dupont
        allow-notify { 2001:910:109c:2::53/128; };
250 1 Fabien Dupont
        masters { 2001:910:109c:2::53/128; };
251 1 Fabien Dupont
252 1 Fabien Dupont
};
253 1 Fabien Dupont
</pre>
254 1 Fabien Dupont
255 20 Laurent GUERBY
La zone est de type « slave » (serveur secondaire) et seul le serveur primaire 2001:910:109c:2::53/128 est autorisé à notifier le serveur secondaire de la présence de modifications. Le serveur secondaire téléchargera la zone mise à jour sur le serveur 2001:910:109c:2::53/128 (ici le même, mais pas forcément).
256 1 Fabien Dupont
257 5 Fabien Dupont
h2. Gestion des logs
258 5 Fabien Dupont
259 20 Laurent GUERBY
Par défaut, bind envoie tous les logs de l'application « en vrac » dans /dev/log. Charge au daemon syslog de les ranger comme on veut. Le problème est qu'il est très difficile de configurer un daemon syslog pour séparer ces logs en catégories afin de faciliter la résolution de problèmes.
260 5 Fabien Dupont
261 20 Laurent GUERBY
Pour rediriger une catégorie de log, il faut d'abord définir un canal (channel) ayant pour destination un fichier puis il faut rediriger une categorie (category) dans ce canal.
262 5 Fabien Dupont
263 20 Laurent GUERBY
Voilà un exemple de configuration séparant chaque catégorie de log dans des fichiers différents :
264 5 Fabien Dupont
265 5 Fabien Dupont
<pre>
266 5 Fabien Dupont
# Configuration des logs
267 5 Fabien Dupont
logging {
268 5 Fabien Dupont
        channel default_file { file "/var/log/named/default.log" versions 3 size 5m; severity dynamic; print-time yes; };
269 5 Fabien Dupont
        channel general_file { file "/var/log/named/general.log" versions 3 size 5m; severity dynamic; print-time yes; };
270 5 Fabien Dupont
        channel database_file { file "/var/log/named/database.log" versions 3 size 5m; severity dynamic; print-time yes; };
271 5 Fabien Dupont
        channel security_file { file "/var/log/named/security.log" versions 3 size 5m; severity dynamic; print-time yes; };
272 5 Fabien Dupont
        channel config_file { file "/var/log/named/config.log" versions 3 size 5m; severity dynamic; print-time yes; };
273 5 Fabien Dupont
        channel resolver_file { file "/var/log/named/resolver.log" versions 3 size 5m; severity dynamic; print-time yes; };
274 5 Fabien Dupont
        channel xfer-in_file { file "/var/log/named/xfer-in.log" versions 3 size 5m; severity dynamic; print-time yes; };
275 5 Fabien Dupont
        channel xfer-out_file { file "/var/log/named/xfer-out.log" versions 3 size 5m; severity dynamic; print-time yes; };
276 5 Fabien Dupont
        channel notify_file { file "/var/log/named/notify.log" versions 3 size 5m; severity dynamic; print-time yes; };
277 5 Fabien Dupont
        channel client_file { file "/var/log/named/client.log" versions 3 size 5m; severity dynamic; print-time yes; };
278 5 Fabien Dupont
        channel unmatched_file { file "/var/log/named/unmatched.log" versions 3 size 5m; severity dynamic; print-time yes; };
279 5 Fabien Dupont
        channel queries_file { file "/var/log/named/queries.log" versions 3 size 5m; severity dynamic; print-time yes; };
280 5 Fabien Dupont
        channel network_file { file "/var/log/named/network.log" versions 3 size 5m; severity dynamic; print-time yes; };
281 5 Fabien Dupont
        channel update_file { file "/var/log/named/update.log" versions 3 size 5m; severity dynamic; print-time yes; };
282 5 Fabien Dupont
        channel dispatch_file { file "/var/log/named/dispatch.log" versions 3 size 5m; severity dynamic; print-time yes; };
283 5 Fabien Dupont
        channel dnssec_file { file "/var/log/named/dnssec.log" versions 3 size 5m; severity dynamic; print-time yes; };
284 5 Fabien Dupont
        channel lame-servers_file { file "/var/log/named/lame-servers.log" versions 3 size 5m; severity dynamic; print-time yes; };
285 5 Fabien Dupont
286 5 Fabien Dupont
        category default { default_file; };
287 5 Fabien Dupont
        category general { general_file; };
288 5 Fabien Dupont
        category database { database_file; };
289 5 Fabien Dupont
        category security { security_file; };
290 5 Fabien Dupont
        category config { config_file; };
291 5 Fabien Dupont
        category resolver { resolver_file; };
292 5 Fabien Dupont
        category xfer-in { xfer-in_file; };
293 5 Fabien Dupont
        category xfer-out { xfer-out_file; };
294 5 Fabien Dupont
        category notify { notify_file; };
295 5 Fabien Dupont
        category client { client_file; };
296 5 Fabien Dupont
        category unmatched { unmatched_file; };
297 5 Fabien Dupont
        category queries { queries_file; };
298 5 Fabien Dupont
        category network { network_file; };
299 5 Fabien Dupont
        category update { update_file; };
300 5 Fabien Dupont
        category dispatch { dispatch_file; };
301 5 Fabien Dupont
        category dnssec { dnssec_file; };
302 5 Fabien Dupont
        category lame-servers { lame-servers_file; };
303 5 Fabien Dupont
};
304 5 Fabien Dupont
</pre>
305 5 Fabien Dupont
306 1 Fabien Dupont
h2. Gestion des zones
307 1 Fabien Dupont
308 1 Fabien Dupont
h3. Forcer le transfert d'une zone depuis un serveur secondaire :
309 1 Fabien Dupont
310 20 Laurent GUERBY
Le transfert d'une zone est généralement déclenché par le serveur primaire (envoi d'un NOTIFY à chaque modification du serial). Mais il est possible de forcer un téléchargement de la zone depuis le serveur secondaire avec la commande « rndc retransfert nom-de-la.zone ».
311 1 Fabien Dupont
312 1 Fabien Dupont
Sur le secondaire :
313 1 Fabien Dupont
314 1 Fabien Dupont
<pre>
315 1 Fabien Dupont
# rndc retransfer kafe-in.net
316 1 Fabien Dupont
# tail /var/log/daemon.log
317 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: received control channel command 'retransfer kafe-in.net'
318 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: zone kafe-in.net/IN: Transfer started.
319 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: transfer of 'kafe-in.net/IN' from 2001:910:109c:2::53#53: connected using 2a01:6600:8081:8e00::fab#46243
320 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: zone kafe-in.net/IN: transferred serial 2012072701
321 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: transfer of 'kafe-in.net/IN' from 2001:910:109c:2::53#53: Transfer completed: 1 messages, 30 records, 749 bytes, 0.105 secs (7133 bytes/sec)
322 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: zone kafe-in.net/IN: sending notifies (serial 2012072701)
323 1 Fabien Dupont
</pre>
324 1 Fabien Dupont
325 1 Fabien Dupont
Sur le primaire :
326 1 Fabien Dupont
327 1 Fabien Dupont
<pre>
328 1 Fabien Dupont
Jul 28 11:31:14 ve-jail named[288]: client 2a01:6600:8081:8e00::fab#46243: view wan: transfer of 'kafe-in.net/IN': AXFR started
329 1 Fabien Dupont
Jul 28 11:31:14 ve-jail named[288]: client 2a01:6600:8081:8e00::fab#46243: view wan: transfer of 'kafe-in.net/IN': AXFR ended
330 1 Fabien Dupont
</pre>
331 1 Fabien Dupont
332 1 Fabien Dupont
h3. Forcer la notification d'une zone
333 1 Fabien Dupont
334 20 Laurent GUERBY
Parfois, surtout pendant la mise en place des serveurs, il faut « forcer » le primaire à notifier les secondaires sur une zone particulière afin qu'ils la téléchargent. Cela se fait avec la commande « rndc notify nom-de-la.zone ».
335 1 Fabien Dupont
336 1 Fabien Dupont
Sur le primaire :
337 1 Fabien Dupont
338 1 Fabien Dupont
<pre>
339 1 Fabien Dupont
# rndc -k rndc.key notify kafe-in.net
340 1 Fabien Dupont
zone notify queued
341 1 Fabien Dupont
# tail /var/log/daemon.log
342 1 Fabien Dupont
Jul 28 11:39:36 ve-jail named[288]: zone kafe-in.net/IN: sending notifies (serial 2012072701)
343 1 Fabien Dupont
</pre>
344 1 Fabien Dupont
345 1 Fabien Dupont
Sur le secondaire :
346 1 Fabien Dupont
<pre>
347 1 Fabien Dupont
Jul 28 11:39:36 muscat named[22111]: client 2001:910:109c:2::53#41892: received notify for zone 'kafe-in.net'
348 1 Fabien Dupont
Jul 28 11:39:36 muscat named[22111]: zone kafe-in.net/IN: notify from 2001:910:109c:2::53#41892: zone is up to date
349 1 Fabien Dupont
</pre>
350 1 Fabien Dupont
351 20 Laurent GUERBY
h2. Reverse
352 6 Fabien Dupont
353 22 Laurent GUERBY
h3. Version simple
354 22 Laurent GUERBY
355 24 Laurent GUERBY
Pour l'IPv4 91.224.149.XXX
356 24 Laurent GUERBY
357 24 Laurent GUERBY
Coté tetaneutral.net dans 149.224.91.in-addr.arpa.zone
358 24 Laurent GUERBY
<pre>
359 24 Laurent GUERBY
XXX IN	NS	ns1.bidule.net.
360 24 Laurent GUERBY
XXX IN	NS	ns2.truc.net.
361 24 Laurent GUERBY
XXX IN	NS	ns3.machin.net.
362 24 Laurent GUERBY
</pre>
363 24 Laurent GUERBY
364 24 Laurent GUERBY
Coté adherent :
365 22 Laurent GUERBY
<pre>
366 22 Laurent GUERBY
zone "XXX.149.224.91.in-addr.arpa" {
367 22 Laurent GUERBY
	type master;
368 22 Laurent GUERBY
	allow-transfer { slaves; };
369 22 Laurent GUERBY
	file "/etc/bind/db.91.224.149.XXX";
370 22 Laurent GUERBY
};
371 22 Laurent GUERBY
</pre>
372 22 Laurent GUERBY
373 23 Laurent GUERBY
374 23 Laurent GUERBY
Et /etc/bind/db.91.224.149.XXX :
375 23 Laurent GUERBY
376 22 Laurent GUERBY
<pre>
377 22 Laurent GUERBY
$TTL 43200
378 22 Laurent GUERBY
@	IN	SOA ns.mon.dns.net.	mail.mon.dns.net.	(
379 22 Laurent GUERBY
		2014100701	; Serial number
380 22 Laurent GUERBY
		8h		; Refresh 8 hours
381 22 Laurent GUERBY
		30m		; Retry 30 minutes
382 22 Laurent GUERBY
		7d		; Expires 7 days
383 22 Laurent GUERBY
		1d )		; Minimum 1 day
384 22 Laurent GUERBY
385 22 Laurent GUERBY
		IN	NS	ns1.bidule.net.
386 22 Laurent GUERBY
		IN	NS	ns2.truc.net.
387 22 Laurent GUERBY
		IN	NS	ns3.machin.net.
388 22 Laurent GUERBY
389 22 Laurent GUERBY
@	IN	PTR	mon.reverse.net.
390 22 Laurent GUERBY
</pre>
391 22 Laurent GUERBY
392 20 Laurent GUERBY
h3. Délégation d'un reverse « classless »
393 6 Fabien Dupont
394 20 Laurent GUERBY
Historiquement, le protocole DNS ne permet pas la délégation de reverses (association IP->nom) pour des préfixes « classless » (autres que /8, /16 et /24). Toutefois, le "RFC 2317":http://www.ietf.org/rfc/rfc2317.txt décrit une astuce permettant cela.
395 1 Fabien Dupont
396 20 Laurent GUERBY
Le principe est plutôt simple : on définit un CNAME pour le reverse en question et il est parfaitement légitime de déléguer la résolution d'un CNAME à un autre NS. Le tour est joué.
397 6 Fabien Dupont
398 20 Laurent GUERBY
Pour l'exemple, disons que tetaneutral.net délègue 91.224.149.142 à dns.kafe-in.net. La convention de nommage du CNAME est « dernier_digit IN CNAME dernier_digit.subnet/netmask ».
399 20 Laurent GUERBY
400 20 Laurent GUERBY
Ainsi pour déléguer 91.224.149.142/32 dans la zone 149.224.91.in-addr.arpa. :
401 6 Fabien Dupont
<pre>
402 6 Fabien Dupont
142/32  IN NS    dns.kafe-in.net.
403 9 Fabien Dupont
142     IN CNAME 142.142/32.149.224.91.in-addr.arpa.
404 6 Fabien Dupont
</pre>
405 6 Fabien Dupont
406 20 Laurent GUERBY
*Attention* : le NS désigné (ici "dns.kafe-int.net") doit avoir un enregistrement A et AAAA et ne dois pas etre un CNAME.
407 10 Laurent GUERBY
408 20 Laurent GUERBY
Sur le serveur DNS de l'adhérent il suffit alors d'héberger une zone 142/32.149.224.91.in-addr.arpa. et d'y positionner le PTR désiré pour son IP.
409 6 Fabien Dupont
410 6 Fabien Dupont
Dans named.conf :
411 6 Fabien Dupont
<pre>
412 6 Fabien Dupont
zone "142/32.149.224.91.in-addr.arpa" IN {
413 6 Fabien Dupont
        type  master;
414 6 Fabien Dupont
        file  "wan/142-32.149.224.91.in-addr.arpa.zone";
415 6 Fabien Dupont
};
416 6 Fabien Dupont
</pre>
417 6 Fabien Dupont
418 6 Fabien Dupont
Et dans 142-32.149.224.91.in-addr.arpa.zone :
419 6 Fabien Dupont
<pre>
420 6 Fabien Dupont
$ORIGIN .
421 6 Fabien Dupont
$TTL 864000
422 6 Fabien Dupont
142/32.149.224.91.in-addr.arpa IN SOA dns.kafe-in.net. fab.kafe-in.net. ( 
423 6 Fabien Dupont
        2012071201 ; serial
424 6 Fabien Dupont
        3600 ; refresh
425 6 Fabien Dupont
        900 ; retry
426 6 Fabien Dupont
        1209600 ; expire
427 6 Fabien Dupont
        43200 ; default_ttl
428 6 Fabien Dupont
) 
429 6 Fabien Dupont
430 6 Fabien Dupont
$ORIGIN 142/32.149.224.91.in-addr.arpa.
431 6 Fabien Dupont
        IN NS   dns.kafe-in.net.
432 6 Fabien Dupont
142     IN PTR  muscat.kafe-in.net.
433 6 Fabien Dupont
</pre>
434 6 Fabien Dupont
435 20 Laurent GUERBY
Lors d'une résolution, cela done :
436 6 Fabien Dupont
<pre>
437 6 Fabien Dupont
# dig +trace -x 91.224.149.142
438 6 Fabien Dupont
439 6 Fabien Dupont
; <<>> DiG 9.8.1-P1 <<>> +trace -x 91.224.149.142
440 6 Fabien Dupont
;; global options: +cmd
441 6 Fabien Dupont
.			136994	IN	NS	b.root-servers.net.
442 6 Fabien Dupont
.			136994	IN	NS	k.root-servers.net.
443 6 Fabien Dupont
.			136994	IN	NS	a.root-servers.net.
444 6 Fabien Dupont
.			136994	IN	NS	l.root-servers.net.
445 6 Fabien Dupont
.			136994	IN	NS	g.root-servers.net.
446 6 Fabien Dupont
.			136994	IN	NS	f.root-servers.net.
447 6 Fabien Dupont
.			136994	IN	NS	m.root-servers.net.
448 6 Fabien Dupont
.			136994	IN	NS	i.root-servers.net.
449 6 Fabien Dupont
.			136994	IN	NS	c.root-servers.net.
450 6 Fabien Dupont
.			136994	IN	NS	d.root-servers.net.
451 6 Fabien Dupont
.			136994	IN	NS	e.root-servers.net.
452 6 Fabien Dupont
.			136994	IN	NS	h.root-servers.net.
453 6 Fabien Dupont
.			136994	IN	NS	j.root-servers.net.
454 6 Fabien Dupont
;; Received 512 bytes from 91.224.149.254#53(91.224.149.254) in 25 ms
455 6 Fabien Dupont
456 6 Fabien Dupont
in-addr.arpa.		172800	IN	NS	a.in-addr-servers.arpa.
457 6 Fabien Dupont
in-addr.arpa.		172800	IN	NS	b.in-addr-servers.arpa.
458 6 Fabien Dupont
in-addr.arpa.		172800	IN	NS	c.in-addr-servers.arpa.
459 6 Fabien Dupont
in-addr.arpa.		172800	IN	NS	d.in-addr-servers.arpa.
460 6 Fabien Dupont
in-addr.arpa.		172800	IN	NS	e.in-addr-servers.arpa.
461 6 Fabien Dupont
in-addr.arpa.		172800	IN	NS	f.in-addr-servers.arpa.
462 6 Fabien Dupont
;; Received 432 bytes from 128.63.2.53#53(128.63.2.53) in 131 ms
463 6 Fabien Dupont
464 6 Fabien Dupont
n-addr.arpa.	86400	IN	NS	ns3.nic.fr.
465 6 Fabien Dupont
91.in-addr.arpa.	86400	IN	NS	pri.authdns.ripe.net.
466 6 Fabien Dupont
91.in-addr.arpa.	86400	IN	NS	sec1.apnic.net.
467 6 Fabien Dupont
91.in-addr.arpa.	86400	IN	NS	sec3.apnic.net.
468 6 Fabien Dupont
91.in-addr.arpa.	86400	IN	NS	sns-pb.isc.org.
469 6 Fabien Dupont
91.in-addr.arpa.	86400	IN	NS	tinnie.arin.net.
470 6 Fabien Dupont
;; Received 201 bytes from 196.216.169.10#53(196.216.169.10) in 209 ms
471 6 Fabien Dupont
472 6 Fabien Dupont
149.224.91.in-addr.arpa. 172800	IN	NS	ns2.tetaneutral.net.
473 6 Fabien Dupont
149.224.91.in-addr.arpa. 172800	IN	NS	ns1.tetaneutral.net.
474 6 Fabien Dupont
;; Received 96 bytes from 2001:660:3006:1::1:1#53(2001:660:3006:1::1:1) in 17 ms
475 6 Fabien Dupont
476 6 Fabien Dupont
142.149.224.91.in-addr.arpa. 86400 IN	CNAME	142.142/149.224.91.in-addr.arpa.
477 6 Fabien Dupont
142/32.149.224.91.in-addr.arpa. 86400 IN	NS	dns.kafe-in.net.
478 6 Fabien Dupont
;; Received 213 bytes from 2a01:6600:8000::3#53(2a01:6600:8000::3) in 14 ms
479 6 Fabien Dupont
480 6 Fabien Dupont
# dig -x 91.224.149.142
481 6 Fabien Dupont
482 6 Fabien Dupont
; <<>> DiG 9.8.1-P1 <<>> -x 91.224.149.142
483 6 Fabien Dupont
;; global options: +cmd
484 6 Fabien Dupont
;; Got answer:
485 6 Fabien Dupont
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7168
486 6 Fabien Dupont
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
487 6 Fabien Dupont
488 6 Fabien Dupont
;; QUESTION SECTION:
489 6 Fabien Dupont
;142.149.224.91.in-addr.arpa.	IN	PTR
490 6 Fabien Dupont
491 6 Fabien Dupont
;; ANSWER SECTION:
492 6 Fabien Dupont
142.149.224.91.in-addr.arpa. 86359 IN	CNAME	142.142/32.224.91.in-addr.arpa.
493 6 Fabien Dupont
142.142/32.224.91.in-addr.arpa. 172795 IN PTR muscat.kafe-in.net.
494 6 Fabien Dupont
495 6 Fabien Dupont
;; AUTHORITY SECTION:
496 6 Fabien Dupont
142.142/32.224.91.in-addr.arpa. 172795 IN NS	dns.kafe-in.net.
497 6 Fabien Dupont
498 6 Fabien Dupont
;; ADDITIONAL SECTION:
499 6 Fabien Dupont
dns.kafe-in.net.	6732	IN	A	80.67.176.156
500 6 Fabien Dupont
501 6 Fabien Dupont
;; Query time: 1 msec
502 6 Fabien Dupont
;; SERVER: 91.224.149.254#53(91.224.149.254)
503 6 Fabien Dupont
;; WHEN: Sat Aug  4 09:48:12 2012
504 6 Fabien Dupont
;; MSG SIZE  rcvd: 229
505 6 Fabien Dupont
</pre>
506 21 Laurent GUERBY
507 21 Laurent GUERBY
h3. IPv6
508 21 Laurent GUERBY
509 21 Laurent GUERBY
Dans /etc/bind/named.conf :
510 21 Laurent GUERBY
<pre>
511 21 Laurent GUERBY
zone "4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa" IN {
512 21 Laurent GUERBY
        type  master;
513 21 Laurent GUERBY
        file  "/etc/bind/4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa.zone";
514 21 Laurent GUERBY
};
515 21 Laurent GUERBY
</pre>
516 21 Laurent GUERBY
517 21 Laurent GUERBY
Dans /etc/bind/4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa.zone :
518 21 Laurent GUERBY
<pre>
519 21 Laurent GUERBY
$ORIGIN 4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa.
520 21 Laurent GUERBY
$TTL 864000
521 21 Laurent GUERBY
@ SOA ipgsm.tetaneutral.net. root.ipgsm.tetaneutral.net. ( 
522 21 Laurent GUERBY
        2014081808 ; serial
523 21 Laurent GUERBY
        3600 ; refresh
524 21 Laurent GUERBY
        900 ; retry
525 21 Laurent GUERBY
        1209600 ; expire
526 21 Laurent GUERBY
        43200 ; default_ttl
527 21 Laurent GUERBY
) 
528 21 Laurent GUERBY
529 21 Laurent GUERBY
530 21 Laurent GUERBY
@       IN NS   ipgsm.tetaneutral.net.
531 21 Laurent GUERBY
532 21 Laurent GUERBY
$ORIGIN 0.0.4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa.
533 21 Laurent GUERBY
534 21 Laurent GUERBY
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR  bas1.toulouse-91-224-149.w31-84.abo.rev.ipgsm.net.
535 21 Laurent GUERBY
</pre>
536 21 Laurent GUERBY
537 21 Laurent GUERBY
Dans /etc/bind/named.conf.options
538 21 Laurent GUERBY
<pre>
539 21 Laurent GUERBY
options {
540 21 Laurent GUERBY
   ...
541 21 Laurent GUERBY
542 21 Laurent GUERBY
   allow-recursion { 127.0.0.1; };
543 21 Laurent GUERBY
};
544 21 Laurent GUERBY
</pre>