Projet

Général

Profil

Bind » Historique » Version 3

Fabien Dupont, 28/07/2012 11:56

1 1 Fabien Dupont
h1. Installation et configuration de bind
2 1 Fabien Dupont
3 2 Fabien Dupont
{{>toc}}
4 2 Fabien Dupont
5 1 Fabien Dupont
h2. Installation de bind « chrooté »
6 1 Fabien Dupont
7 1 Fabien Dupont
h3. Installation
8 1 Fabien Dupont
9 1 Fabien Dupont
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é ».
10 1 Fabien Dupont
11 1 Fabien Dupont
<pre>
12 1 Fabien Dupont
# aptitude -t wheezy install bind
13 1 Fabien Dupont
</pre>
14 1 Fabien Dupont
15 1 Fabien Dupont
h3. Création de l'environnement chrooté
16 1 Fabien Dupont
17 1 Fabien Dupont
<pre>
18 1 Fabien Dupont
# mkdir -p /var/bind9/chroot/{etc,dev,var/named/pri,var/named/sec,var/run/named}
19 1 Fabien Dupont
# mknod /var/bind9/chroot/dev/null c 1 3
20 1 Fabien Dupont
# mknod /var/bind9/chroot/dev/random c 1 8
21 1 Fabien Dupont
# chmod 660 /var/bind9/chroot/dev/{null,random}
22 1 Fabien Dupont
# mv /etc/bind /var/bind9/chroot/etc/bind
23 1 Fabien Dupont
# ln -sv /var/bind9/chroot/etc/bind /etc/bind
24 1 Fabien Dupont
# chown -R bind:bind /var/bind9/chroot/etc/bind
25 1 Fabien Dupont
# chmod 775 /var/bind9/chroot/var/{named/pri,named/sec,run/named}
26 1 Fabien Dupont
# chgrp bind /var/bind9/chroot/var/{named/pri,named/sec,run/named}
27 1 Fabien Dupont
</pre>
28 1 Fabien Dupont
29 3 Fabien Dupont
h3. Configuration des scripts de démarrage de bind et de rsyslog
30 1 Fabien Dupont
31 1 Fabien Dupont
<pre>
32 1 Fabien Dupont
# sed -i -e 's/^OPTIONS=.*$/OPTIONS="-u bind -t \/var\/bind9\/chroot"/' /etc/default/bind9
33 1 Fabien Dupont
# sed -i -e 's/^PIDFILE=.*$/PIDFILE=\/var\/bind9\/chroot\/var\/run\/named\/named.pid/' /etc/init.d/bind9
34 1 Fabien Dupont
# echo "\$addUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind9-chrooted.conf
35 1 Fabien Dupont
</pre>
36 1 Fabien Dupont
37 1 Fabien Dupont
h3. Configuration de bind
38 1 Fabien Dupont
39 1 Fabien Dupont
/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é ».
40 1 Fabien Dupont
41 1 Fabien Dupont
<pre>
42 1 Fabien Dupont
include "/etc/bind/named.conf.options";
43 1 Fabien Dupont
include "/etc/bind/named.conf.local";
44 1 Fabien Dupont
include "/etc/bind/named.conf.default-zones";
45 1 Fabien Dupont
include "/etc/bind/named.conf.zones";
46 1 Fabien Dupont
</pre>
47 1 Fabien Dupont
48 1 Fabien Dupont
/etc/bind/named.conf.options : Options du daemon.
49 1 Fabien Dupont
50 1 Fabien Dupont
<pre>
51 1 Fabien Dupont
options {
52 1 Fabien Dupont
        directory "/var/named";
53 1 Fabien Dupont
54 1 Fabien Dupont
        // If there is a firewall between you and nameservers you want
55 1 Fabien Dupont
        // to talk to, you may need to fix the firewall to allow multiple
56 1 Fabien Dupont
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
57 1 Fabien Dupont
58 1 Fabien Dupont
        // If your ISP provided one or more IP addresses for stable
59 1 Fabien Dupont
        // nameservers, you probably want to use them as forwarders.
60 1 Fabien Dupont
        // Uncomment the following block, and insert the addresses replacing
61 1 Fabien Dupont
        // the all-0's placeholder.
62 1 Fabien Dupont
63 1 Fabien Dupont
        // forwarders {
64 1 Fabien Dupont
        //      0.0.0.0;
65 1 Fabien Dupont
        // };
66 1 Fabien Dupont
67 1 Fabien Dupont
        auth-nxdomain no;    # conform to RFC1035
68 1 Fabien Dupont
        listen-on-v6 { any; };
69 1 Fabien Dupont
};
70 1 Fabien Dupont
71 1 Fabien Dupont
controls {
72 1 Fabien Dupont
        inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
73 1 Fabien Dupont
};
74 1 Fabien Dupont
75 1 Fabien Dupont
include "/etc/bind/rndc.key";
76 1 Fabien Dupont
</pre>
77 1 Fabien Dupont
78 1 Fabien Dupont
/etc/bind/named.conf.local : zones des reverses RFC1918. Le fichier /etc/bind/zones.rfc1918 est fourni par debian.
79 1 Fabien Dupont
80 1 Fabien Dupont
<pre>
81 1 Fabien Dupont
//
82 1 Fabien Dupont
// Do any local configuration here
83 1 Fabien Dupont
//
84 1 Fabien Dupont
85 1 Fabien Dupont
// Consider adding the 1918 zones here, if they are not used in your
86 1 Fabien Dupont
// organization
87 1 Fabien Dupont
include "/etc/bind/zones.rfc1918";
88 1 Fabien Dupont
</pre>
89 1 Fabien Dupont
90 1 Fabien Dupont
/etc/bind/named.conf.default-zones : zones par « défaut » (serveurs root, localhost, reverse 127.0.0.0/8), fichiers fournis par debian.
91 1 Fabien Dupont
92 1 Fabien Dupont
<pre>
93 1 Fabien Dupont
// prime the server with knowledge of the root servers
94 1 Fabien Dupont
zone "." {
95 1 Fabien Dupont
        type hint;
96 1 Fabien Dupont
        file "/etc/bind/db.root";
97 1 Fabien Dupont
};
98 1 Fabien Dupont
99 1 Fabien Dupont
// be authoritative for the localhost forward and reverse zones, and for
100 1 Fabien Dupont
// broadcast zones as per RFC 1912
101 1 Fabien Dupont
102 1 Fabien Dupont
zone "localhost" {
103 1 Fabien Dupont
        type master;
104 1 Fabien Dupont
        file "/etc/bind/db.local";
105 1 Fabien Dupont
};
106 1 Fabien Dupont
107 1 Fabien Dupont
zone "127.in-addr.arpa" {
108 1 Fabien Dupont
        type master;
109 1 Fabien Dupont
        file "/etc/bind/db.127";
110 1 Fabien Dupont
};
111 1 Fabien Dupont
112 1 Fabien Dupont
zone "0.in-addr.arpa" {
113 1 Fabien Dupont
        type master;
114 1 Fabien Dupont
        file "/etc/bind/db.0";
115 1 Fabien Dupont
};
116 1 Fabien Dupont
117 1 Fabien Dupont
zone "255.in-addr.arpa" {
118 1 Fabien Dupont
        type master;
119 1 Fabien Dupont
        file "/etc/bind/db.255";
120 1 Fabien Dupont
};
121 1 Fabien Dupont
</pre>
122 1 Fabien Dupont
123 1 Fabien Dupont
/etc/bind/named.conf.zones : Définition des zones primaires ou secondaires (voir plus loin) hébergées par le serveur.
124 1 Fabien Dupont
125 1 Fabien Dupont
<pre>
126 1 Fabien Dupont
zone "kafe-in.net" IN {
127 1 Fabien Dupont
        type slave;
128 1 Fabien Dupont
        file "sec/kafe-in.net.zone";
129 1 Fabien Dupont
        allow-notify { 2001:910:109c:2::53/128; };
130 1 Fabien Dupont
        masters { 2001:910:109c:2::53/128; };
131 1 Fabien Dupont
};
132 1 Fabien Dupont
133 1 Fabien Dupont
zone "k-f.in" IN {
134 1 Fabien Dupont
        type master;
135 1 Fabien Dupont
        file "pri/k-f.in.zone";
136 1 Fabien Dupont
        allow-transfer { 2001:910:109c:2::53/128; };
137 1 Fabien Dupont
};
138 1 Fabien Dupont
</pre>
139 1 Fabien Dupont
140 1 Fabien Dupont
Pour que les modifications soient prises en compte, il faut redémarrer rsyslog et bind9.
141 1 Fabien Dupont
142 1 Fabien Dupont
<pre>
143 1 Fabien Dupont
# /etc/init.d/rsyslog restart
144 1 Fabien Dupont
# /etc/init.d/bind9 restart
145 1 Fabien Dupont
</pre>
146 1 Fabien Dupont
147 1 Fabien Dupont
h2. Configuration d'un serveur primaire
148 1 Fabien Dupont
149 1 Fabien Dupont
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.
150 1 Fabien Dupont
151 1 Fabien Dupont
Example pour la zone k-f.in :
152 1 Fabien Dupont
153 1 Fabien Dupont
<pre>
154 1 Fabien Dupont
# cat /var/bind9/chroot/var/named/k-f.in.zone
155 1 Fabien Dupont
$TTL 864000
156 1 Fabien Dupont
@ IN SOA dns2.kafe-in.net. fab.kafe-in.net. (
157 1 Fabien Dupont
                2012061701      ; serial
158 1 Fabien Dupont
                3600            ; refresh
159 1 Fabien Dupont
                900             ; retry
160 1 Fabien Dupont
                1209600         ; expire
161 1 Fabien Dupont
                43200           ; default_ttl
162 1 Fabien Dupont
)
163 1 Fabien Dupont
164 1 Fabien Dupont
@                     IN NS     dns.kafe-in.net.
165 1 Fabien Dupont
@                     IN NS     dns2.kafe-in.net.
166 1 Fabien Dupont
167 1 Fabien Dupont
@               28800 IN MX     10 mail.kafe-in.net.
168 1 Fabien Dupont
@               28800 IN MX     20 mail2.kafe-in.net.
169 1 Fabien Dupont
170 1 Fabien Dupont
                28800 IN A      91.224.149.142
171 1 Fabien Dupont
                28800 IN AAAA   2a01:6600:8081:8e00::fab
172 1 Fabien Dupont
173 1 Fabien Dupont
; FDN
174 1 Fabien Dupont
roussane        28800 IN A      80.67.176.156
175 1 Fabien Dupont
roussane        28800 IN AAAA   2001:910:109c:1::2
176 1 Fabien Dupont
177 1 Fabien Dupont
; Tetaneutral
178 1 Fabien Dupont
muscat          28800 IN A      91.224.149.142
179 1 Fabien Dupont
muscat          28800 IN AAAA   2a01:6600:8081:8e00::fab
180 1 Fabien Dupont
181 1 Fabien Dupont
; Services
182 1 Fabien Dupont
www             28800 IN CNAME  muscat
183 1 Fabien Dupont
</pre>
184 1 Fabien Dupont
185 1 Fabien Dupont
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 »).
186 1 Fabien Dupont
187 1 Fabien Dupont
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 :
188 1 Fabien Dupont
189 1 Fabien Dupont
<pre>
190 1 Fabien Dupont
zone "k-f.in" IN {
191 1 Fabien Dupont
        type master;
192 1 Fabien Dupont
        file "pri/k-f.in.zone";
193 1 Fabien Dupont
        allow-transfer { 2a01:6600:8081:8e00::fab/128; };
194 1 Fabien Dupont
};
195 1 Fabien Dupont
</pre>
196 1 Fabien Dupont
197 1 Fabien Dupont
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 transférer lors de mises à  jour de la zone.
198 1 Fabien Dupont
199 1 Fabien Dupont
h2. Configuration d'un serveur secondaire
200 1 Fabien Dupont
201 1 Fabien Dupont
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.
202 1 Fabien Dupont
203 1 Fabien Dupont
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 :
204 1 Fabien Dupont
205 1 Fabien Dupont
<pre>
206 1 Fabien Dupont
zone "k-f.in" IN {
207 1 Fabien Dupont
        type slave;
208 1 Fabien Dupont
        file "sec/k-f.in.zone";
209 1 Fabien Dupont
        allow-notify { 2001:910:109c:2::53/128; };
210 1 Fabien Dupont
        masters { 2001:910:109c:2::53/128; };
211 1 Fabien Dupont
212 1 Fabien Dupont
};
213 1 Fabien Dupont
</pre>
214 1 Fabien Dupont
215 1 Fabien Dupont
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 transfèrera la zone mise à  jour sur le serveur 2001:910:109c:2::53/128 (ici le même, mais pas forcément).
216 1 Fabien Dupont
217 1 Fabien Dupont
h2. Gestion des zones
218 1 Fabien Dupont
219 1 Fabien Dupont
h3. Forcer le transfert d'une zone depuis un serveur secondaire :
220 1 Fabien Dupont
221 1 Fabien Dupont
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 ».
222 1 Fabien Dupont
223 1 Fabien Dupont
Sur le secondaire :
224 1 Fabien Dupont
225 1 Fabien Dupont
<pre>
226 1 Fabien Dupont
# rndc retransfer kafe-in.net
227 1 Fabien Dupont
# tail /var/log/daemon.log
228 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: received control channel command 'retransfer kafe-in.net'
229 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: zone kafe-in.net/IN: Transfer started.
230 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
231 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: zone kafe-in.net/IN: transferred serial 2012072701
232 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)
233 1 Fabien Dupont
Jul 28 11:31:14 muscat named[22111]: zone kafe-in.net/IN: sending notifies (serial 2012072701)
234 1 Fabien Dupont
</pre>
235 1 Fabien Dupont
236 1 Fabien Dupont
Sur le primaire :
237 1 Fabien Dupont
238 1 Fabien Dupont
<pre>
239 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
240 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
241 1 Fabien Dupont
</pre>
242 1 Fabien Dupont
243 1 Fabien Dupont
h3. Forcer la notification d'une zone
244 1 Fabien Dupont
245 1 Fabien Dupont
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 ».
246 1 Fabien Dupont
247 1 Fabien Dupont
Sur le primaire :
248 1 Fabien Dupont
249 1 Fabien Dupont
<pre>
250 1 Fabien Dupont
# rndc -k rndc.key notify kafe-in.net
251 1 Fabien Dupont
zone notify queued
252 1 Fabien Dupont
# tail /var/log/daemon.log
253 1 Fabien Dupont
Jul 28 11:39:36 ve-jail named[288]: zone kafe-in.net/IN: sending notifies (serial 2012072701)
254 1 Fabien Dupont
</pre>
255 1 Fabien Dupont
256 1 Fabien Dupont
Sur le secondaire :
257 1 Fabien Dupont
<pre>
258 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'
259 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
260 1 Fabien Dupont
</pre>