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> |