Bind » Historique » Version 21
Laurent GUERBY, 18/08/2014 09:46
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 | 20 | Laurent GUERBY | h3. Délégation d'un reverse « classless » |
354 | 6 | Fabien Dupont | |
355 | 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. |
356 | 1 | Fabien Dupont | |
357 | 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é. |
358 | 6 | Fabien Dupont | |
359 | 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 ». |
360 | 20 | Laurent GUERBY | |
361 | 20 | Laurent GUERBY | Ainsi pour déléguer 91.224.149.142/32 dans la zone 149.224.91.in-addr.arpa. : |
362 | 6 | Fabien Dupont | <pre> |
363 | 6 | Fabien Dupont | 142/32 IN NS dns.kafe-in.net. |
364 | 9 | Fabien Dupont | 142 IN CNAME 142.142/32.149.224.91.in-addr.arpa. |
365 | 6 | Fabien Dupont | </pre> |
366 | 6 | Fabien Dupont | |
367 | 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. |
368 | 10 | Laurent GUERBY | |
369 | 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. |
370 | 6 | Fabien Dupont | |
371 | 6 | Fabien Dupont | Dans named.conf : |
372 | 6 | Fabien Dupont | <pre> |
373 | 6 | Fabien Dupont | zone "142/32.149.224.91.in-addr.arpa" IN { |
374 | 6 | Fabien Dupont | type master; |
375 | 6 | Fabien Dupont | file "wan/142-32.149.224.91.in-addr.arpa.zone"; |
376 | 6 | Fabien Dupont | }; |
377 | 6 | Fabien Dupont | </pre> |
378 | 6 | Fabien Dupont | |
379 | 6 | Fabien Dupont | Et dans 142-32.149.224.91.in-addr.arpa.zone : |
380 | 6 | Fabien Dupont | <pre> |
381 | 6 | Fabien Dupont | $ORIGIN . |
382 | 6 | Fabien Dupont | $TTL 864000 |
383 | 6 | Fabien Dupont | 142/32.149.224.91.in-addr.arpa IN SOA dns.kafe-in.net. fab.kafe-in.net. ( |
384 | 6 | Fabien Dupont | 2012071201 ; serial |
385 | 6 | Fabien Dupont | 3600 ; refresh |
386 | 6 | Fabien Dupont | 900 ; retry |
387 | 6 | Fabien Dupont | 1209600 ; expire |
388 | 6 | Fabien Dupont | 43200 ; default_ttl |
389 | 6 | Fabien Dupont | ) |
390 | 6 | Fabien Dupont | |
391 | 6 | Fabien Dupont | $ORIGIN 142/32.149.224.91.in-addr.arpa. |
392 | 6 | Fabien Dupont | IN NS dns.kafe-in.net. |
393 | 6 | Fabien Dupont | 142 IN PTR muscat.kafe-in.net. |
394 | 6 | Fabien Dupont | </pre> |
395 | 6 | Fabien Dupont | |
396 | 20 | Laurent GUERBY | Lors d'une résolution, cela done : |
397 | 6 | Fabien Dupont | <pre> |
398 | 6 | Fabien Dupont | # dig +trace -x 91.224.149.142 |
399 | 6 | Fabien Dupont | |
400 | 6 | Fabien Dupont | ; <<>> DiG 9.8.1-P1 <<>> +trace -x 91.224.149.142 |
401 | 6 | Fabien Dupont | ;; global options: +cmd |
402 | 6 | Fabien Dupont | . 136994 IN NS b.root-servers.net. |
403 | 6 | Fabien Dupont | . 136994 IN NS k.root-servers.net. |
404 | 6 | Fabien Dupont | . 136994 IN NS a.root-servers.net. |
405 | 6 | Fabien Dupont | . 136994 IN NS l.root-servers.net. |
406 | 6 | Fabien Dupont | . 136994 IN NS g.root-servers.net. |
407 | 6 | Fabien Dupont | . 136994 IN NS f.root-servers.net. |
408 | 6 | Fabien Dupont | . 136994 IN NS m.root-servers.net. |
409 | 6 | Fabien Dupont | . 136994 IN NS i.root-servers.net. |
410 | 6 | Fabien Dupont | . 136994 IN NS c.root-servers.net. |
411 | 6 | Fabien Dupont | . 136994 IN NS d.root-servers.net. |
412 | 6 | Fabien Dupont | . 136994 IN NS e.root-servers.net. |
413 | 6 | Fabien Dupont | . 136994 IN NS h.root-servers.net. |
414 | 6 | Fabien Dupont | . 136994 IN NS j.root-servers.net. |
415 | 6 | Fabien Dupont | ;; Received 512 bytes from 91.224.149.254#53(91.224.149.254) in 25 ms |
416 | 6 | Fabien Dupont | |
417 | 6 | Fabien Dupont | in-addr.arpa. 172800 IN NS a.in-addr-servers.arpa. |
418 | 6 | Fabien Dupont | in-addr.arpa. 172800 IN NS b.in-addr-servers.arpa. |
419 | 6 | Fabien Dupont | in-addr.arpa. 172800 IN NS c.in-addr-servers.arpa. |
420 | 6 | Fabien Dupont | in-addr.arpa. 172800 IN NS d.in-addr-servers.arpa. |
421 | 6 | Fabien Dupont | in-addr.arpa. 172800 IN NS e.in-addr-servers.arpa. |
422 | 6 | Fabien Dupont | in-addr.arpa. 172800 IN NS f.in-addr-servers.arpa. |
423 | 6 | Fabien Dupont | ;; Received 432 bytes from 128.63.2.53#53(128.63.2.53) in 131 ms |
424 | 6 | Fabien Dupont | |
425 | 6 | Fabien Dupont | n-addr.arpa. 86400 IN NS ns3.nic.fr. |
426 | 6 | Fabien Dupont | 91.in-addr.arpa. 86400 IN NS pri.authdns.ripe.net. |
427 | 6 | Fabien Dupont | 91.in-addr.arpa. 86400 IN NS sec1.apnic.net. |
428 | 6 | Fabien Dupont | 91.in-addr.arpa. 86400 IN NS sec3.apnic.net. |
429 | 6 | Fabien Dupont | 91.in-addr.arpa. 86400 IN NS sns-pb.isc.org. |
430 | 6 | Fabien Dupont | 91.in-addr.arpa. 86400 IN NS tinnie.arin.net. |
431 | 6 | Fabien Dupont | ;; Received 201 bytes from 196.216.169.10#53(196.216.169.10) in 209 ms |
432 | 6 | Fabien Dupont | |
433 | 6 | Fabien Dupont | 149.224.91.in-addr.arpa. 172800 IN NS ns2.tetaneutral.net. |
434 | 6 | Fabien Dupont | 149.224.91.in-addr.arpa. 172800 IN NS ns1.tetaneutral.net. |
435 | 6 | Fabien Dupont | ;; Received 96 bytes from 2001:660:3006:1::1:1#53(2001:660:3006:1::1:1) in 17 ms |
436 | 6 | Fabien Dupont | |
437 | 6 | Fabien Dupont | 142.149.224.91.in-addr.arpa. 86400 IN CNAME 142.142/149.224.91.in-addr.arpa. |
438 | 6 | Fabien Dupont | 142/32.149.224.91.in-addr.arpa. 86400 IN NS dns.kafe-in.net. |
439 | 6 | Fabien Dupont | ;; Received 213 bytes from 2a01:6600:8000::3#53(2a01:6600:8000::3) in 14 ms |
440 | 6 | Fabien Dupont | |
441 | 6 | Fabien Dupont | # dig -x 91.224.149.142 |
442 | 6 | Fabien Dupont | |
443 | 6 | Fabien Dupont | ; <<>> DiG 9.8.1-P1 <<>> -x 91.224.149.142 |
444 | 6 | Fabien Dupont | ;; global options: +cmd |
445 | 6 | Fabien Dupont | ;; Got answer: |
446 | 6 | Fabien Dupont | ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7168 |
447 | 6 | Fabien Dupont | ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 |
448 | 6 | Fabien Dupont | |
449 | 6 | Fabien Dupont | ;; QUESTION SECTION: |
450 | 6 | Fabien Dupont | ;142.149.224.91.in-addr.arpa. IN PTR |
451 | 6 | Fabien Dupont | |
452 | 6 | Fabien Dupont | ;; ANSWER SECTION: |
453 | 6 | Fabien Dupont | 142.149.224.91.in-addr.arpa. 86359 IN CNAME 142.142/32.224.91.in-addr.arpa. |
454 | 6 | Fabien Dupont | 142.142/32.224.91.in-addr.arpa. 172795 IN PTR muscat.kafe-in.net. |
455 | 6 | Fabien Dupont | |
456 | 6 | Fabien Dupont | ;; AUTHORITY SECTION: |
457 | 6 | Fabien Dupont | 142.142/32.224.91.in-addr.arpa. 172795 IN NS dns.kafe-in.net. |
458 | 6 | Fabien Dupont | |
459 | 6 | Fabien Dupont | ;; ADDITIONAL SECTION: |
460 | 6 | Fabien Dupont | dns.kafe-in.net. 6732 IN A 80.67.176.156 |
461 | 6 | Fabien Dupont | |
462 | 6 | Fabien Dupont | ;; Query time: 1 msec |
463 | 6 | Fabien Dupont | ;; SERVER: 91.224.149.254#53(91.224.149.254) |
464 | 6 | Fabien Dupont | ;; WHEN: Sat Aug 4 09:48:12 2012 |
465 | 6 | Fabien Dupont | ;; MSG SIZE rcvd: 229 |
466 | 6 | Fabien Dupont | </pre> |
467 | 21 | Laurent GUERBY | |
468 | 21 | Laurent GUERBY | h3. IPv6 |
469 | 21 | Laurent GUERBY | |
470 | 21 | Laurent GUERBY | Dans /etc/bind/named.conf : |
471 | 21 | Laurent GUERBY | <pre> |
472 | 21 | Laurent GUERBY | zone "4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa" IN { |
473 | 21 | Laurent GUERBY | type master; |
474 | 21 | Laurent GUERBY | file "/etc/bind/4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa.zone"; |
475 | 21 | Laurent GUERBY | }; |
476 | 21 | Laurent GUERBY | </pre> |
477 | 21 | Laurent GUERBY | |
478 | 21 | Laurent GUERBY | Dans /etc/bind/4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa.zone : |
479 | 21 | Laurent GUERBY | <pre> |
480 | 21 | Laurent GUERBY | $ORIGIN 4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa. |
481 | 21 | Laurent GUERBY | $TTL 864000 |
482 | 21 | Laurent GUERBY | @ SOA ipgsm.tetaneutral.net. root.ipgsm.tetaneutral.net. ( |
483 | 21 | Laurent GUERBY | 2014081808 ; serial |
484 | 21 | Laurent GUERBY | 3600 ; refresh |
485 | 21 | Laurent GUERBY | 900 ; retry |
486 | 21 | Laurent GUERBY | 1209600 ; expire |
487 | 21 | Laurent GUERBY | 43200 ; default_ttl |
488 | 21 | Laurent GUERBY | ) |
489 | 21 | Laurent GUERBY | |
490 | 21 | Laurent GUERBY | |
491 | 21 | Laurent GUERBY | @ IN NS ipgsm.tetaneutral.net. |
492 | 21 | Laurent GUERBY | |
493 | 21 | Laurent GUERBY | $ORIGIN 0.0.4.5.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa. |
494 | 21 | Laurent GUERBY | |
495 | 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. |
496 | 21 | Laurent GUERBY | </pre> |
497 | 21 | Laurent GUERBY | |
498 | 21 | Laurent GUERBY | Dans /etc/bind/named.conf.options |
499 | 21 | Laurent GUERBY | <pre> |
500 | 21 | Laurent GUERBY | options { |
501 | 21 | Laurent GUERBY | ... |
502 | 21 | Laurent GUERBY | |
503 | 21 | Laurent GUERBY | allow-recursion { 127.0.0.1; }; |
504 | 21 | Laurent GUERBY | }; |
505 | 21 | Laurent GUERBY | </pre> |