Projet

Général

Profil

NSD » Historique » Version 1

alarig alarig, 27/09/2015 18:47

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 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)
45 1 alarig alarig
<pre>
46 1 alarig alarig
root@debianjessie:~ # apt-get install nsd
47 1 alarig alarig
</pre>
48 1 alarig alarig
49 1 alarig alarig
h3. Configuration de NSD
50 1 alarig alarig
<pre>
51 1 alarig alarig
root@debianjessie:~# vim /etc/nsd/nsd.conf
52 1 alarig alarig
</pre>
53 1 alarig alarig
54 1 alarig alarig
Votre fichier de configuration doit ressembler à un truc du genre :
55 1 alarig alarig
server:
56 1 alarig alarig
	ip-address:	192.0.2.1
57 1 alarig alarig
	ip-address:	198.51.100.1
58 1 alarig alarig
	ip-address:	2001:db8:1::192
59 1 alarig alarig
	ip-address:	2001:db8:3::198
60 1 alarig alarig
	port:		53
61 1 alarig alarig
62 1 alarig alarig
	# ici ça va jouer sur ce qu’un nmap verra
63 1 alarig alarig
	hide-version:	no
64 1 alarig alarig
	identity:	"Mon cher petit poney, voilà qui va éclairer ton nmap"
65 1 alarig alarig
66 1 alarig alarig
	# Si l’on veut logguer les requêtes et faire des statistiques 
67 1 alarig alarig
	logfile:	"/var/log/nsd.log"
68 1 alarig alarig
	statistics:	3600
69 1 alarig alarig
70 1 alarig alarig
	pidfile:	"/var/run/nsd/nsd.pid"
71 1 alarig alarig
72 1 alarig alarig
	# nombre de serveurs démarrés
73 1 alarig alarig
	server-count:	1
74 1 alarig alarig
75 1 alarig alarig
	username:	nsd
76 1 alarig alarig
77 1 alarig alarig
	zonesdir:	"/etc/nsd/"
78 1 alarig alarig
	xfrdfile:	"/var/lib/nsd/xfrd.state"
79 1 alarig alarig
	verbosity:	0
80 1 alarig alarig
	rrl-ratelimit:	20
81 1 alarig alarig
82 1 alarig alarig
remote-control:
83 1 alarig alarig
	# Enable remote control with nsd-control(8) here.
84 1 alarig alarig
	# set up the keys and certificates with nsd-control-setup.
85 1 alarig alarig
	control-enable: yes
86 1 alarig alarig
87 1 alarig alarig
	# what interfaces are listened to for control, default is on localhost.
88 1 alarig alarig
	control-interface: 127.0.0.1
89 1 alarig alarig
	control-interface: ::1
90 1 alarig alarig
91 1 alarig alarig
	# port number for remote control operations (uses TLS over TCP).
92 1 alarig alarig
	control-port: 8952
93 1 alarig alarig
94 1 alarig alarig
	# nsd server key file for remote control.
95 1 alarig alarig
	server-key-file: "/etc/nsd/nsd_server.key"
96 1 alarig alarig
97 1 alarig alarig
	# nsd server certificate file for remote control.
98 1 alarig alarig
	server-cert-file: "/etc/nsd/nsd_server.pem"
99 1 alarig alarig
100 1 alarig alarig
	# nsd-control key file.
101 1 alarig alarig
	control-key-file: "/etc/nsd/nsd_control.key"
102 1 alarig alarig
103 1 alarig alarig
	# nsd-control certificate file.
104 1 alarig alarig
	control-cert-file: "/etc/nsd/nsd_control.pem"
105 1 alarig alarig
106 1 alarig alarig
key:
107 1 alarig alarig
	name: tsig-name
108 1 alarig alarig
	algorithm: hmac-sha256
109 1 alarig alarig
	secret: "secret"
110 1 alarig alarig
111 1 alarig alarig
### masters ###
112 1 alarig alarig
113 1 alarig alarig
zone:
114 1 alarig alarig
	name:		"exemple.com"
115 1 alarig alarig
	zonefile:	"exemple.com"
116 1 alarig alarig
117 1 alarig alarig
	notify:		2a01:6600:8081:c600::1	NOKEY
118 1 alarig alarig
	provide-xfr:	2a01:6600:8081:c600::1	NOKEY
119 1 alarig alarig
	notify:		217.70.177.40		NOKEY
120 1 alarig alarig
	provide-xfr:	217.70.177.40		NOKEY
121 1 alarig alarig
	notify:		2001:910:1318::1	tsig-name
122 1 alarig alarig
	provide-xfr:	2001:910:1318::1	tsig-name
123 1 alarig alarig
124 1 alarig alarig
125 1 alarig alarig
### reverses ###
126 1 alarig alarig
127 1 alarig alarig
# ttn.swordarmor.fr v4 (délégation sur CNAME)
128 1 alarig alarig
zone:
129 1 alarig alarig
	name:		"198/32.149.224.91.in-addr.arpa"
130 1 alarig alarig
	zonefile:	"ttn.swordarmor.fr.reversev4"
131 1 alarig alarig
132 1 alarig alarig
	notify:		2a01:6600:8081:c600::1 NOKEY
133 1 alarig alarig
	provide-xfr:	2a01:6600:8081:c600::1 NOKEY
134 1 alarig alarig
135 1 alarig alarig
# ttn.swordarmor.fr v6
136 1 alarig alarig
zone:
137 1 alarig alarig
	name:		"6.c.1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa"
138 1 alarig alarig
	zonefile:	"ttn.swordarmor.fr.reversev6"
139 1 alarig alarig
140 1 alarig alarig
	notify:		2a01:6600:8081:c600::1 NOKEY
141 1 alarig alarig
	provide-xfr:	2a01:6600:8081:c600::1 NOKEY
142 1 alarig alarig
143 1 alarig alarig
144 1 alarig alarig
145 1 alarig alarig
### slaves ###
146 1 alarig alarig
zone:
147 1 alarig alarig
	name:		"gozmail.net"
148 1 alarig alarig
	zonefile:	"gozmail.net.zone"
149 1 alarig alarig
150 1 alarig alarig
	allow-notify:	2a02:a80:0:2216::2 NOKEY
151 1 alarig alarig
	request-xfr:	2a02:a80:0:2216::2 NOKEY
152 1 alarig alarig
153 1 alarig alarig
	notify-retry:	5