Projet

Général

Profil

NSD » Historique » Version 8

alarig alarig, 27/09/2015 19:44

1 1 alarig alarig
h1. NSD
2 1 alarig alarig
3 1 alarig alarig
"NSD":https://www.nlnetlabs.nl/projects/nsd/ est une alternative à bind pour la gestion d’une zone DNS
4 1 alarig alarig
5 1 alarig alarig
h2. Principe général
6 1 alarig alarig
7 1 alarig alarig
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 1 alarig alarig
9 1 alarig alarig
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 1 alarig alarig
11 1 alarig alarig
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 1 alarig alarig
13 1 alarig alarig
<pre>
14 1 alarig alarig
    temps          primaire              secondaire
15 1 alarig alarig
      |               |                      |
16 1 alarig alarig
      |    [modification d'une zone]         |
17 1 alarig alarig
      |               |                      |
18 1 alarig alarig
      |               |-----notificaiton---->|
19 1 alarig alarig
      |               |        NOTIFY        |
20 1 alarig alarig
      |               |                      |
21 1 alarig alarig
      |               |<---téléchargement----|
22 1 alarig alarig
      |               |      AXFR/IXFR       |
23 1 alarig alarig
      |               |                      |
24 1 alarig alarig
      |               |                      |
25 1 alarig alarig
      |               |                      |
26 1 alarig alarig
      |               |              [expiration du TTL]
27 1 alarig alarig
      |               |                      |
28 1 alarig alarig
      |               |<---téléchargement----|
29 1 alarig alarig
      |               |      AXFR/IXFR       |
30 1 alarig alarig
      |               |                      |
31 1 alarig alarig
      v               v                      v
32 1 alarig alarig
</pre>
33 1 alarig alarig
34 1 alarig alarig
Le serveur secondaire télécharge la zone depuis le primaire dans deux cas :
35 1 alarig alarig
36 1 alarig alarig
* 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 1 alarig alarig
* 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 1 alarig alarig
39 1 alarig alarig
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 1 alarig alarig
41 1 alarig alarig
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 1 alarig alarig
43 1 alarig alarig
h2. Installation de NSD
44 2 alarig alarig
45 1 alarig alarig
Ce guide est écrit pour nsd4 et debian jessie, mais ça ne change pas grand chose avec nsd3 et debian wheezy (ou même gentoo ou arch)
46 1 alarig alarig
<pre>
47 1 alarig alarig
root@debianjessie:~ # apt-get install nsd
48 1 alarig alarig
</pre>
49 1 alarig alarig
50 1 alarig alarig
h3. Configuration de NSD
51 2 alarig alarig
52 1 alarig alarig
<pre>
53 1 alarig alarig
root@debianjessie:~# vim /etc/nsd/nsd.conf
54 1 alarig alarig
</pre>
55 1 alarig alarig
56 1 alarig alarig
Votre fichier de configuration doit ressembler à un truc du genre :
57 3 alarig alarig
<pre>
58 1 alarig alarig
server:
59 1 alarig alarig
	ip-address:	192.0.2.1
60 1 alarig alarig
	ip-address:	198.51.100.1
61 1 alarig alarig
	ip-address:	2001:db8:1::192
62 1 alarig alarig
	ip-address:	2001:db8:3::198
63 1 alarig alarig
	port:		53
64 1 alarig alarig
65 1 alarig alarig
	# ici ça va jouer sur ce qu’un nmap verra
66 1 alarig alarig
	hide-version:	no
67 1 alarig alarig
	identity:	"Mon cher petit poney, voilà qui va éclairer ton nmap"
68 1 alarig alarig
69 1 alarig alarig
	# Si l’on veut logguer les requêtes et faire des statistiques 
70 1 alarig alarig
	logfile:	"/var/log/nsd.log"
71 1 alarig alarig
	statistics:	3600
72 1 alarig alarig
73 1 alarig alarig
	pidfile:	"/var/run/nsd/nsd.pid"
74 1 alarig alarig
75 1 alarig alarig
	# nombre de serveurs démarrés
76 1 alarig alarig
	server-count:	1
77 1 alarig alarig
78 1 alarig alarig
	username:	nsd
79 1 alarig alarig
80 1 alarig alarig
	zonesdir:	"/etc/nsd/"
81 1 alarig alarig
	xfrdfile:	"/var/lib/nsd/xfrd.state"
82 1 alarig alarig
	verbosity:	0
83 5 alarig alarig
84 5 alarig alarig
	# Nombre de requêtes par seconde et par IP, voir https://www.nlnetlabs.nl/blog/2012/10/11/nsd-ratelimit/
85 1 alarig alarig
	rrl-ratelimit:	20
86 1 alarig alarig
87 1 alarig alarig
remote-control:
88 1 alarig alarig
	# Enable remote control with nsd-control(8) here.
89 1 alarig alarig
	# set up the keys and certificates with nsd-control-setup.
90 1 alarig alarig
	control-enable: yes
91 1 alarig alarig
92 1 alarig alarig
	# what interfaces are listened to for control, default is on localhost.
93 1 alarig alarig
	control-interface: 127.0.0.1
94 1 alarig alarig
	control-interface: ::1
95 1 alarig alarig
96 1 alarig alarig
	# port number for remote control operations (uses TLS over TCP).
97 1 alarig alarig
	control-port: 8952
98 1 alarig alarig
99 1 alarig alarig
	# nsd server key file for remote control.
100 1 alarig alarig
	server-key-file: "/etc/nsd/nsd_server.key"
101 1 alarig alarig
102 1 alarig alarig
	# nsd server certificate file for remote control.
103 1 alarig alarig
	server-cert-file: "/etc/nsd/nsd_server.pem"
104 1 alarig alarig
105 1 alarig alarig
	# nsd-control key file.
106 1 alarig alarig
	control-key-file: "/etc/nsd/nsd_control.key"
107 1 alarig alarig
108 1 alarig alarig
	# nsd-control certificate file.
109 1 alarig alarig
	control-cert-file: "/etc/nsd/nsd_control.pem"
110 1 alarig alarig
111 1 alarig alarig
key:
112 1 alarig alarig
	name: tsig-name
113 1 alarig alarig
	algorithm: hmac-sha256
114 1 alarig alarig
	secret: "secret"
115 1 alarig alarig
116 1 alarig alarig
### masters ###
117 1 alarig alarig
118 1 alarig alarig
zone:
119 4 alarig alarig
	name:		"swordarmor.fr"
120 4 alarig alarig
	zonefile:	"swordarmor.fr.zone"
121 1 alarig alarig
122 1 alarig alarig
	notify:		2a01:6600:8081:c600::1	NOKEY
123 1 alarig alarig
	provide-xfr:	2a01:6600:8081:c600::1	NOKEY
124 1 alarig alarig
	notify:		217.70.177.40		NOKEY
125 1 alarig alarig
	provide-xfr:	217.70.177.40		NOKEY
126 1 alarig alarig
	notify:		2001:910:1318::1	tsig-name
127 1 alarig alarig
	provide-xfr:	2001:910:1318::1	tsig-name
128 1 alarig alarig
129 1 alarig alarig
130 1 alarig alarig
### reverses ###
131 1 alarig alarig
132 1 alarig alarig
# ttn.swordarmor.fr v4 (délégation sur CNAME)
133 1 alarig alarig
zone:
134 1 alarig alarig
	name:		"198/32.149.224.91.in-addr.arpa"
135 1 alarig alarig
	zonefile:	"ttn.swordarmor.fr.reversev4"
136 1 alarig alarig
137 1 alarig alarig
	notify:		2a01:6600:8081:c600::1 NOKEY
138 1 alarig alarig
	provide-xfr:	2a01:6600:8081:c600::1 NOKEY
139 1 alarig alarig
140 1 alarig alarig
# ttn.swordarmor.fr v6
141 1 alarig alarig
zone:
142 1 alarig alarig
	name:		"6.c.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa"
143 1 alarig alarig
	zonefile:	"ttn.swordarmor.fr.reversev6"
144 1 alarig alarig
145 1 alarig alarig
	notify:		2a01:6600:8081:c600::1 NOKEY
146 1 alarig alarig
	provide-xfr:	2a01:6600:8081:c600::1 NOKEY
147 1 alarig alarig
148 1 alarig alarig
149 1 alarig alarig
150 1 alarig alarig
### slaves ###
151 1 alarig alarig
zone:
152 1 alarig alarig
	name:		"gozmail.net"
153 1 alarig alarig
	zonefile:	"gozmail.net.zone"
154 1 alarig alarig
155 1 alarig alarig
	allow-notify:	2a02:a80:0:2216::2 NOKEY
156 1 alarig alarig
	request-xfr:	2a02:a80:0:2216::2 NOKEY
157 1 alarig alarig
158 1 alarig alarig
	notify-retry:	5
159 1 alarig alarig
</pre>
160 4 alarig alarig
161 6 alarig alarig
h3. Redémarrage
162 6 alarig alarig
163 4 alarig alarig
Une fois les modifications faites, il faut redémarrer NSD pour qu’elles soient prises en compte :
164 4 alarig alarig
<pre>
165 4 alarig alarig
root@debianjessie:~# service nsd restart 
166 4 alarig alarig
</pre>
167 4 alarig alarig
168 4 alarig alarig
h2. Exemples de zones
169 6 alarig alarig
170 4 alarig alarig
h3. Zone principale (master)
171 4 alarig alarig
172 6 alarig alarig
Pour savoir comment remplir le SOA, je vous conseille de jeter un œil à "l’artcile wikipédia":https://fr.wikipedia.org/wiki/DNS#SOA_record
173 8 alarig alarig
Le format des zones est le même qu’avec [[Bind]]
174 6 alarig alarig
<pre>
175 6 alarig alarig
$TTL	10800
176 6 alarig alarig
@	IN	SOA	pokedex.swordarmor.fr. hostmaster.swordarmor.fr. (
177 6 alarig alarig
			148           ; Serial
178 6 alarig alarig
			3600          ; Refresh [1h]
179 6 alarig alarig
			900           ; Retry   [15m]
180 6 alarig alarig
			604800        ; Expire  [1w]
181 6 alarig alarig
			600	      ; Negative Cache TTL [10m]
182 6 alarig alarig
                        )
183 6 alarig alarig
	IN	NS	pokedex.swordarmor.fr.
184 6 alarig alarig
	IN	NS	alarig.tetaneutral.net.
185 6 alarig alarig
	IN	NS	pokedex.glucas.fr.
186 6 alarig alarig
	IN	MX	1 pokedex.swordarmor.fr.
187 6 alarig alarig
	IN	MX	5 ttn.swordarmor.fr.
188 6 alarig alarig
	IN	SPF	"v=spf1 mx -all"
189 6 alarig alarig
190 6 alarig alarig
pokedex	10800	IN	A	89.234.140.133
191 6 alarig alarig
	10800	IN	AAAA	2001:470:1f13:138:715d:2fa0:b591:532f
192 6 alarig alarig
	10800	IN	AAAA	2a00:5881:4008:400::1
193 6 alarig alarig
	10800	IN	AAAA	2a01:240:fe00:82af:764f:b47e:d131:85e4
194 6 alarig alarig
195 6 alarig alarig
courriel	IN	A	91.224.149.198
196 6 alarig alarig
			A	89.234.140.133
197 6 alarig alarig
			AAAA	2a01:6600:8081:c600::1
198 6 alarig alarig
			AAAA	2001:470:1f13:138:715d:2fa0:b591:532f
199 6 alarig alarig
			AAAA	2a00:5881:4008:400::1
200 6 alarig alarig
			AAAA	2a01:240:fe00:82af:764f:b47e:d131:85e4
201 6 alarig alarig
202 6 alarig alarig
vote	10800	IN	CNAME	pokedex
203 6 alarig alarig
204 6 alarig alarig
$ORIGIN _domainkey.swordarmor.fr.
205 6 alarig alarig
_adsp	10800	IN	TXT	"all"
206 6 alarig alarig
default	10800	IN	TXT	"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfU42VmyfgW7S2Oui8ksSfJwQCfz0jWupl/cJI1Z7wV5o3FNo+DPOz/tpeGtsbYX11xK5AXjzaV4xnI5jGajQvxAYsER0Qbg8LPS9ShPIYrrJHeE30ktWdHr8dQKgrJVw4ZIx2kUpfnLwZkm+MqnVDTzDDhHBEc9vo3P29fQC2RwIDAQAB"
207 6 alarig alarig
208 6 alarig alarig
; reste de la zone
209 6 alarig alarig
210 6 alarig alarig
</pre>
211 6 alarig alarig
212 4 alarig alarig
h3. Zone secondaire (slave)
213 4 alarig alarig
214 4 alarig alarig
Dans le cas d’une zone secondaire, c’est le serveur principal et qui envoie la zone, et votre serveur l’écrit tout seul où on lui a demandé
215 1 alarig alarig
216 6 alarig alarig
h3. Zone reverse v4
217 1 alarig alarig
218 6 alarig alarig
Reverse pour 91.224.149.198 (ancien modèle)
219 6 alarig alarig
<pre>
220 6 alarig alarig
$ORIGIN 149.224.91.in-addr.arpa.
221 6 alarig alarig
198\04732	864000	IN	SOA	ns0.swordarmor.fr. hostmaster.swordarmor.fr. (
222 6 alarig alarig
		2 3600 900 1209600 43200 )
223 6 alarig alarig
	864000	IN	NS	ns1.pennvad.eu.
224 6 alarig alarig
	864000	IN	NS	alarig.tetaneutral.net.
225 6 alarig alarig
$ORIGIN 198\04732.149.224.91.in-addr.arpa.
226 6 alarig alarig
198	864000	IN	PTR	ttn.swordarmor.fr.
227 6 alarig alarig
</pre>
228 6 alarig alarig
229 6 alarig alarig
h3. Zone reverse v6
230 6 alarig alarig
231 6 alarig alarig
<pre>
232 6 alarig alarig
$ORIGIN 5.c.3.8.c.b.0.1.0.0.2.ip6.arpa.
233 6 alarig alarig
6	864000	IN	SOA	ns1.pennvad.eu. hostmaster.swordarmor.fr. (
234 6 alarig alarig
		5 3600 900 1209600 43200 )
235 6 alarig alarig
	864000	IN	NS	ns1.pennvad.eu.
236 6 alarig alarig
	864000	IN	NS	ttn.swordarmor.fr.
237 6 alarig alarig
$ORIGIN 0.1.0.6.5.c.3.8.c.b.0.1.0.0.2.ip6.arpa.
238 6 alarig alarig
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0	864000	IN	PTR	ginette.swordarmor.fr.
239 6 alarig alarig
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1	864000	IN	PTR	rodolphe.swordarmor.fr.
240 6 alarig alarig
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1	864000	IN	PTR	robert.swordarmor.fr.
241 6 alarig alarig
</pre>
242 6 alarig alarig
243 4 alarig alarig
h2. Commandes principales
244 1 alarig alarig
245 6 alarig alarig
* nsd-control reload : recharger une zone après modification, bien penser à incrémenter le SOA avant
246 6 alarig alarig
Exemples :
247 6 alarig alarig
<pre>
248 6 alarig alarig
nsd-control reload swordarmor.fr
249 6 alarig alarig
nsd-control reload 6.5.c.3.8.c.b.0.1.0.0.2.ip6.arpa
250 6 alarig alarig
</pre>
251 6 alarig alarig
* nsd-control force_transfer : Forcer la mise à jour d’une zone vers les escalves
252 6 alarig alarig
Exemples :
253 7 alarig alarig
<pre>
254 6 alarig alarig
nsd-control force_transfer swordarmor.fr # pour swordarmor.fr
255 6 alarig alarig
nsd-control force_transfer # pour toutes les zones
256 6 alarig alarig
</pre>
257 6 alarig alarig
258 4 alarig alarig
h2. Notes complémentaires
259 1 alarig alarig
260 6 alarig alarig
NSD a l’avantage d’être plus léger que bind, en grande partie car il n’est pas récursif, il ne fait que autorité. Si vous voulez installer un serveur récursif, son frère est unbound.
261 5 alarig alarig
Voir aussi "le blog Bortz":https://www.bortzmeyer.org/nsd4.html