xref: /netbsd-src/external/bsd/nsd/dist/doc/README (revision 7330f729ccf0bd976a06f95fad452fe774fc7fd1)
11.0 Introduction
21.1 ... Basic theory of operation
31.2 ... Quick build & install
42.0 Building nsd
52.1 ... Unpacking the source
62.2 ... Configuring NSD
72.3 ... Building
82.4 ... Installing
93.0 Running NSD
103.1 ... Logging
113.2 ... AXFR access
123.3 ... Using TSIG
133.4 ... Zone expiry of secondary zones
143.5 ... Diagnosing NSD log entries
153.6 ... Interfaces
164.0 Support and Feedback
174.1 ... Your Support
18
19
201.0 Introduction
21
22This is NSD Name Server Daemon (NSD) version 4.1.27.
23
24The NLnet Labs Name Server Daemon (NSD) is an authoritative RFC compliant
25DNS nameserver. It was first conceived to allow for more genetic
26diversity for DNS server implementations used by the root-server system
27and it has been developed for operations in environments where speed,
28reliability, stability, and security are of high importance. NSD is
29currently used on root servers such as k.root-servers.net and is also in
30use by several top-level domain registries.
31
32NSD is a complete implementation of an authoritative DNS name server.
33For further information about what NSD is and what NSD is not please
34consult the REQUIREMENTS document which is a part of this distribution.
35
36If you are a BIND user (the named daemon) consult NSD_FOR_BIND_USERS.
37
38The source code is available for download from:
39
40         http://www.nlnetlabs.nl/downloads
41
42
431.1 Basic Theory of Operation
44
45NSD consists of two programs: the zone compiler 'zonec' and the name
46server 'nsd' itself. The name server works with an intermediate
47database prepared by the zone compiler from standard zone files.
48
49For NSD operation this means that zones have to be compiled by zonec
50before NSD can use them.
51
52All this can be controlled via rc.d (SIGTERM, SIGHUP) or nsd-control,
53and uses a simple configuration file 'nsd.conf'.
54
55
561.2 Quick build and install
57
58Step 1: Unpack the source with gtar -xzvf nsd-4.1.27.tar.gz
59
60Step 2: Create user nsd or any other unprivileged user of your
61        choice. In case of later make sure to use
62        --with-user=<username> while running configure.
63	You can also set "username: <name>" in the nsd.conf file later.
64	Install openssl and libevent.
65
66Step 3: ./configure
67
68Step 4: make all	(or simply 'make').
69
70Step 5: make install
71
72Step 6: Create and edit /etc/nsd/nsd.conf file possibly from
73        nsd.conf.sample template that comes with the distribution.
74	(installed by default at /etc/nsd/nsd.conf.sample)
75	Here you need to configure the zones you want to serve.
76	TSIG keys used for secure zone transfers must be included.
77	Also server parameters can be set, see nsd.conf(5) man page.
78
79	If you have a NSD 2 nsd.zones config file take a look at the
80	python script contrib/nsd.zones2nsd.conf, it will convert
81	zone and TSIG key settings for you.
82
83Step 7: Copy necessary master zone files into appropriate directories
84        under /etc/nsd/primary & /etc/nsd/secondary.
85
86Step 8: Run nsd-control start
87
88Step 9: Test the NSD with dig, drill or host.
89
90Step 10: If you're happy add a rc.d script to start into your OS boot up
91	 sequence. The format of the rc.d startup script depends on
92	 the platform.  Also stop it in the shutdown sequence.
93	 You can use SIGTERM to stop, or nsd-control stop.
94
95Step 11: If desired add 'nsd-control write' to your superuser crontab to
96         update the zone files with the content transferred from master
97	 servers periodically, such as once per day.
98
99         Got any problems or questions with the steps above? Read the
100         rest of this file.
101
102
103
1042.0 Building NSD
105
106
1072.1 Unpacking the source
108
109Use your favorite combination of tar and gnu zip to unpack the source,
110for example
111
112$ gtar -xzvf nsd-4.1.27.tar.gz
113
114will unpack the source into the ./nsd-4.1.27 directory...
115
116
1172.2 Configuring NSD
118
119NSD can be configured using GNU autoconf's configure script. In
120addition to standard configure options, one may use the following:
121
122  CC=compiler
123
124        Specify the C compiler.  The default is gcc or cc.  The
125        compiler must support ANSI C89.
126
127  CPPFLAGS=flags
128
129        Specify the C preprocessor flags.  Such as -I<includedir>.
130
131  CFLAGS=flags
132
133        Specify the C compiler flags.  These include code generation,
134        optimization, warning, and debugging flags.  These flags are
135        also passed to the linker.
136
137        The default for gcc is "-g -O2".
138
139  LD=linker
140
141        Specify the linker (defaults to the C compiler).
142
143  LDFLAGS=flags
144
145        Specify linker flags.
146
147  LIBS=libs
148
149        Specify additional libraries to link with.
150
151  --enable-root-server
152
153        Configure NSD as a root server. Unless this option is
154        specified, NSD will refuse to serve the ``.'' zone as a
155        misconfiguration safeguard.
156
157  --disable-ipv6
158
159        Disables IPv6 support in NSD.
160
161  --enable-checking
162
163        Enable some internal development checks.  Useful if you want
164        to modify NSD.  This option enables the standard C "assert" macro
165	and compiler warnings.
166
167	This will instruct NSD to be stricter when validating its input.
168	This could lead to a reduced service level.
169
170  --enable-bind8-stats
171
172        Enables BIND8-like statistics.
173
174  --enable-ratelimit
175
176	Enables ratelimiting, based on query name, type and source.
177
178   --enable-draft-rrtypes
179
180	Enables draft RRtypes.
181
182  --with-configdir=dir
183
184        Specified, NSD configuration directory, default /etc/nsd
185
186  --with-nsd_conf_file=path
187
188	Pathname to the NSD configuration file, default /etc/nsd/nsd.conf
189
190  --with-pidfile=path
191
192        Pathname to the NSD pidfile, default is platform specific,
193        mostly /var/run/nsd.pid
194
195  --with-dbfile=path
196
197        Pathname to the NSD database, default is /etc/nsd/nsd.db
198
199  --with-zonesdir=dir
200
201        NSD default location for master zone files, default /etc/nsd/
202
203  --with-user=username
204
205        User name or ID to answer the queries with, default is nsd
206
207  --with-facility=facility
208
209        Specify the syslog facility to use.  The default is
210        LOG_DAEMON.  See the syslog(3) manual page for the available
211        facilities.
212
213  --with-libevent=path
214
215  	Specity the location of the libevent library (or libev).
216	--with-libevent=no uses a builtin portable implementation (select()).
217
218  --with-ssl=path
219
220        Specify the location of the OpenSSL libraries.  OpenSSL 0.9.7
221        or higher is required for TSIG support.
222
223  --with-start_priority=number
224
225	Startup priority for NSD.
226
227  --with-kill_priority=number
228
229	Shutdown priority for NSD.
230
231  --with-tcp-timeout=number
232
233	Set the default TCP timeout (in seconds). Default 120 seconds.
234
235  --disable-nsec3
236
237  	Disable NSEC3 support. With NSEC3 support enabled, very large zones,
238	also non-nsec3 zones, use about 20% more memory.
239
240  --disable-minimal-responses
241
242  	Disable minimal responses. If disabled, responses are more likely
243	to get truncated, resulting in TCP fallback.  When enabled (by default)
244	NSD will leave out RRsets to make responses fit inside one datagram,
245	but for shorter responses the full normal response is carried.
246
247  --disable-largefile
248
249	Disable large file support (64 bit file lengths). Makes off_t
250	a 32bit length during compilation.
251
252
2532.3 Building
254
255Use ``make'' to create NSD and support tools.  If you get errors, try to
256use ``gmake'' (gnu version of make), especially on old systems. If so,
257do a `gmake realclean` first, to remove stuff that the make call messed up.
258
259
2602.4 Installing
261
262Become a superuser (if necessary) and type ``make install''
263
264This step should install four binaries
265
266nsd               - the daemon itself
267nsd-control-setup - a shell script that creates keys for nsd-control.
268nsd-control	      - program that connects over SSL to nsd and gives commands.
269nsd-checkconf	  - simple C program to check nsd.conf before use.
270
271Plus the manual pages and a sample configuration file.
272
273
2743.0 Running NSD
275
276Before running NSD you need to create a configuration file for it.
277The config file contains server settings, secret keys and zone settings.
278
279The server settings start with a line with the keyword 'server:'.
280In the server settings set 'database: <file>' with the filename of the name
281database that NSD will use. Set 'chroot: <dir>' to run nsd in a chroot-jail.
282Make sure the zone files, database file, xfrdfile, difffile and pidfile
283can be accessed from the chroot-jail.  Set 'username: <user>' to an
284unprivileged user, for security.
285
286For example:
287	# This is a sample configuration
288	server:
289		database: "/etc/nsd/nsd.db"
290		pidfile: "/etc/nsd/nsd.pid"
291		chroot: "/etc/nsd/"
292		username: nsd
293
294After the global server settings to need to make entries for the
295zones that you wish to serve. For each zone you need to list the zone
296name, the file name with the zone contents, and access control lists.
297
298	zone:
299		name:	"example.com"
300		zonefile: "example.com.zone"
301
302The zonefile needs to be filled with the correct zone information
303for master zones. For secondary zones an empty file will suffice,
304a zone transfer will be initiated to obtain the slave zone contents.
305
306Access control lists are needed for zone transfer and notifications.
307
308For a slave zone list the masters, by IP address. Below is an example
309of a slave zone with two master servers. If a master only supports AXFR
310transfers and not IXFR transfers (like NSD), specify the master as
311"request-xfr: AXFR <ip_address> <key>". By default, all zone transfer requests
312are made over TCP. If you want the IXFR request be transmitted over UDP, use
313"request-xfr: UDP <ip address> <key>".
314
315	zone:
316		name: "example.com"
317		zonefile: "example.com.zone"
318		allow-notify: 168.192.185.33 NOKEY
319		request-xfr: 168.192.185.33 NOKEY
320		allow-notify: 168.192.199.2 NOKEY
321		request-xfr: 168.192.199.2 NOKEY
322
323By default, a slave will fallback to AXFR requests if the master told us it does
324not support IXFR. You can configure the slave not to do AXFR fallback with:
325
326		allow-axfr-fallback: "no"
327
328For a master zone, list the slave servers, by IP address or subnet.
329Below is an example of a master zone with two slave servers.
330
331	zone:
332		name: "example.com"
333		zonefile: "example.com.zone"
334		notify: 168.192.133.75 NOKEY
335		provide-xfr: 168.192.133.75 NOKEY
336		notify: 168.192.5.44 NOKEY
337		provide-xfr: 168.192.5.44 NOKEY
338
339You also can set the outgoing interface for notifies and zone transfer requests
340to satisfy access control lists at the other end:
341
342		outgoing-interface: 168.192.5.69
343
344By default, NSD will retry a notify up to 5 times. You can override that
345value with:
346
347		notify-retry: 5
348
349Zone transfers can be secured with TSIG keys, replace NOKEY with
350the name of the tsig key to use. See section 3.3.
351
352Since NSD is written to be run on the root name servers, the config file
353can to contain something like:
354
355	zone:
356		name: "."
357		zonefile: "root.zone"
358		provide-xfr: 0.0.0.0/0 NOKEY # allow axfr for everyone.
359		provide-xfr: ::0/0 NOKEY
360
361You should only do that if you're intending to run a root server, NSD
362is not suited for running a . cache. Therefore if you choose to serve
363the .  zone you have to make sure that the complete root zone is
364timely and fully updated.
365
366To prevent misconfiguration, NSD configure has the --enable-root-server
367switch, that is by default disabled.
368
369In the config file, you can use patterns.  A pattern can have the
370same configuration statements that a zone can have.  And then you can
371include-pattern: <name-of-pattern> in a zone (or in another pattern)
372to apply those settings.  This can be used to organise the settings.
373
374The nsd-control tool is also controlled from the nsd.conf config file.
375It uses SSL encrypted transport to 127.0.0.1, and if you want to use it
376you have to setup the keys and also edit the config file.  You can leave
377the remote-control disabled (the secure default), or opt to turn it on:
378
379	# generate keys
380	nsd-control-setup
381
382	# edit nsd.conf to add this
383	remote-control:
384		control-enable: yes
385
386By default nsd-control is limited to localhost, as well as encrypted, but
387some people may want to remotely administer their nameserver.  What you
388then do is setup nsd-control to listen to the public IP address, with
389control-interface: <IP> after the control-enable statement.  Furthermore,
390you copy the key files /etc/nsd/nsd_server.pem /etc/nsd/nsd_control.*
391to a remote host on the internet; on that host you can run nsd-control
392with -c <special config file> which references same IP address
393control-interface and references the copies of the key files with
394server-cert-file, control-key-file and control-cert-file config lines
395after the control-enable statement.  The nsd-server authenticates the
396nsd-control client, and also the nsd-control client authenticates the
397nsd-server.
398
399When you are done with the configuration file, check the syntax using
400
401	nsd-checkconf <name of configfile>
402
403The zone files are read by the daemon, which builds 'nsd.db' with their
404contents.  You can start the daemon with
405
406	nsd
407	or with "nsd-control start" (which execs nsd again).
408	or with nsd -c <name of configfile>
409
410To check if the daemon is running look with ps, top, or if you enabled
411nsd-control,
412
413	nsd-control status
414
415To reload changed zone files after you edited them, without stopping
416the daemon, use this to check if files are modified:
417
418	kill -HUP `cat <name of nsd pidfile>`
419
420If you enabled nsd-control, you can reread with
421
422	nsd-control reload
423
424With nsd-control you can also reread the config file (new zones, ..)
425
426	nsd-control reconfig
427
428To restart the daemon
429
430	/etc/rc.d/nsd restart  # or your system(d) equivalent
431
432To shut it down (for example on the system shutdown) do
433
434	kill -TERM <pid of nsd>
435	or nsd-control stop
436
437NSD will automatically keep track of secondary zones and update them
438when needed. When primary zones are updated and reloaded notifications
439are sent to slave servers.
440
441The zone transfers are applied to nsd.db by the daemon.  To write changed
442contents of the zone files for slave zones to disk in the text-based zone
443file format, issue nsd-control write.
444
445NSD will send notifications to slave zones if a master zone is updated.
446NSD will check for updates at master servers periodically and transfer
447the updated zone by AXFR/IXFR and reload the new zone contents. If
448you wish exert manual control use nsd-control notify, transfer and
449force_transfer commands.  The transfer command will check for new versions
450of the secondary zones hosted by this NSD. The notify command will send
451notifications to the slave servers configured in 'notify:' statements.
452
453
4543.1 Logging
455
456NSD doesn't do any logging. We believe that logging is a separate task
457and has to be done independently from the core operation.
458
459This consciously is not part of nsd itself in order to keep nsd
460focused and minimize its complexity. It is better to leave logging and
461tracing to separate dedicated tools. dnsstat can also easily be
462configured and/or modified to suit local statistics requirements
463without any danger of affecting the name server itself. We have run
464dnsstat on the same machine as nsd, we would recommend using a
465multiprocessor if performance is an issue. Of course it can also run
466on a separate machine that has MAC layer access to the network of the
467server.
468
469The nsd-control tool can output some statistics, with nsd-control stats
470and nsd-control stats_noreset.  In contrib/nsd_munin_ there is a munin
471grapher plugin that uses it.  The output of nsd-control stats is easy
472to read (text only) with scripts.  The output values are documented on
473the nsd-control man page.
474
475The CAIDA dnsstat tool referenced is recommended to nsd operators as a
476means of keeping statistics and check on abnormal query loads.
477
478    http://www.caida.org/tools/utilities/dnsstat/dnsstat-3.5.1a.tar.gz
479
480Another tool is the dnstop, that displays DNS statistics on your network.
481
482    http://dns.measurement-factory.com/tools/dnstop/src/dnstop-20060517.tar.gz
483
484A sample invocation of dnsstat:
485
486/usr/local/Coral/bin/crl_dnsstat -D -Ci=60 -Cd=240 -C'filter dst 10.1.1.3'  -h -u if:fxp1
487
488A sample output of a slightly modified version:
489
490# dnsstat output version: 0.2 "dfk"
491
492# begin trace interval at 1025267664.859043, duration 15.000000
493# DNS messages: 74973 (4998.200000/s); DNS queries: 151983 (10132.200000/s)
494# print threshold: 30 messages/sec
495
496#src              op type  class queries    msgs      rd notes
497 208.18.162.10     - -     -         533     533       0
498 "                 0 MX    IN          6
499 "                 0 A     IN        264
500 "                 0 ANY   IN        263
501 209.11.18.248     - -     -         661     661       0
502 "                 0 A     IN        655
503 "                 0 MX    IN          6
504 210.117.65.137    - -     -         745     745       0
505 "                 0 A     IN        745
506 216.54.221.131    - -     -         477     477       0
507 "                 0 A     IN        477
508 193.97.205.80     - -     -         681     681       0
509 "                 0 A     IN          3
510 "                 0 ANY   IN        678
511 168.30.240.11     - -     -         685     685       0
512 "                 0 A     IN        405
513 "                 0 MX    IN        280
514 210.94.6.67       - -     -         742     742       0
515 "                 0 A     IN        742
516 63.66.68.237      - -     -        1375    1375       0
517 "                 0 A     IN       1375
518 168.30.240.12     - -     -         493     493       0
519 "                 0 A     IN        493
520 139.142.205.225   - -     -        5579    5579       0
521 "                 0 A     IN       3006
522 "                 0 MX    IN       2573
523 210.117.65.2      - -     -         700     700       0
524 "                 0 A     IN        700
525# end trace interval
526
527
5283.2 AXFR access
529
530The access list for AXFR should be set with provide-xfr:
531in the nsd config file. This is per zone. See nsd.conf(5).
532For example to grant zone 'example.com' AXFR right to localhost for
533IPv4 and IPv6, use the below config options.
534
535zone:
536	name: "example.com"
537	provide-xfr: 127.0.0.1 NOKEY
538	provide-xfr: ::1 NOKEY
539
540You can use dig @localhost example.com axfr to test this.
541
542
5433.3 Using TSIG
544
545NSD supports TSIG for any query to the server, for zone transfer
546and for notify sending and receiving.
547
548TSIG keys are based on shared secrets. These must be configured
549in the config file. To keep the secret in a separate file use
550include: "filename" to include that file.
551
552An example tsig key named sec1_key.
553
554	key:
555		name: "sec1_key"
556		algorithm: hmac-md5
557		secret: "6KM6qiKfwfEpamEq72HQdA=="
558
559This key can then be used for any query to the NSD server. NSD
560will check if the signature is valid, and if so, return a signed
561answer. Unsigned queries will be given unsigned replies.
562
563The key can be used to restrict the access control lists, for
564example to only allow zone transfer with the key, by listing
565the key name on the access control line.
566
567	# provides AXFR to the subnet when TSIG is used.
568	provide-xfr: 10.11.12.0/24 sec1_key
569	# allow only notifications that are signed
570	allow-notify: 192.168.0.0/16 sec1_key
571
572If the TSIG key name is used in notify or request-xfr lines,
573the key is used to sign the request/notification messages.
574
575
5763.4 Zone expiry of secondary zones
577
578NSD will keep track of the status of secondary zones, according to the
579timing values in the SOA record for the zone.  When the refresh time of a
580zone is reached, the serial number is checked and a zone transfer is
581started if the zone has changed.  Each master server is tried in turn.
582
583Master zones cannot expire.  They are always served.  Zones are master
584zones if they have no 'request-xfr:' statements in the config file.
585
586After the expire timeout (from the SOA record at the zone apex) is reached,
587the zone becomes expired. NSD will return SERVFAIL for expired zones,
588and will attempt to perform a zone transfer from any of the masters.
589After a zone transfer succeeds, or if the master indicates that the SOA
590serial number is still the same, the zone will be OK again.
591
592In contrast with e.g. BIND, the inception time for a slave zone is stored
593on disk (in the xfrdfile: "xfrd.state"), together with timeouts.  If a
594slave zone acquisition time is recent enough, this means that NSD can start
595serving a zone immediately on loading, without querying the master server.
596
597If your slave zone has expired, and no masters can be reached, but you
598still want NSD to serve the zone.  (i.e. ''My network is in shambles, but
599serve the zone dangit!'').  You can delete the file 'xfrd.state',
600but leave the zonefile for the zone intact.  Make sure to stop nsd before
601you delete the file, as NSD writes it on exit.  Upon loading NSD will treat
602the zonefile that you as operator have provided as recent and will serve
603the zone.  Even though NSD will start to serve the zone immediately,
604the zone will expire after the timeout is reached again.  NSD will also
605attempt to confirm that you have provided the correct data by polling
606the masters.  So when the master servers come back up, it will transfer
607the updated zone within <retry timeout from SOA> seconds.
608
609In general it is possible to provide zone files for both master and
610slave zones manually (say from email or rsync). Reload with SIGHUP
611or nsd-control reload to read the new zonefile contents into the name
612database.  When this is done the new zone will be served. For master
613zones, NSD will issue notifications to all configured 'notify:' targets.
614For slave zones the above happens; NSD attempts to validate the zone
615from the master (checking its SOA serial number).
616
617
6183.5 Diagnosing NSD log entries
619
620NSD will print log messages to the system log (or 'logfile:' configuration
621entry). Some of these messages are discussed below. These messages can
622get extra support if errors happen.
623
624- "Reload process <pid> failed with status <s>, continuing with old database"
625
626This log message indicates the reload process of NSD has failed for
627some reason.  The reason can be anything from a missing database file
628to internal errors.  If this happens often, please let us know, this
629error message can be caught in the code, and appropriate action could
630be taken.  We are as of yet not sure what action is appropriate, if any.
631
632- "snipping off trailing partial part of <ixfr.db>"
633
634Please let us know if, and how often, this happens.
635
636What happens is the file ixfr.db contains only part of expected data.
637The corruption is removed by snipping off the trailing part.
638
639- "memory recyclebin holds <num> bytes"
640
641This is printed for every reload. NSD allocates and deallocates memory
642to service IXFR updates. The recyclebin holds deallocated memory ready
643for future use. If the number grows too large, a restart resets it.
644
645- "xfrd: max number of tcp connections (32) reached."
646
647This line is printed when more than 32 zones need a zone transfer at the
648same time.  The value is a compile constant (xfrd-tcp.h), but if this
649happens often for you, we could make this a config option.  NSD will reuse
650existing TCP connections to the same master (determined by IP address)
651to transfer up to 64k zones from that master.  Thus this error should
652only happen with more than 32 masters or more than 64*32=2M zones that
653need to be updated at the same time.
654
655If this happens, more zones have to wait until a zone transfer completes
656(or is aborted) before they can have a zone transfer too. This waiting
657list has no size limit.
658
659- "error: <zone> NSEC3PARAM entry <num> has unknown hash algo <number>"
660
661This error means that the zone has NSEC3 chain(s) with hash algorithms
662that are not supported by this version of NSD, and thus cannot be served
663by NSD.  If there are also no NSECs or NSEC3 chain(s) with known hash
664algorithms, NSD will not be able to serve DNSSEC authenticated denials
665for the zone.
666
667
6683.6 Interfaces
669
670NSD will by default bind itself to the system default interface and
671service ip4 and if available also ip6. It is possible to service only ip4
672or ip6 using the -4, -6 commandline options, or the ip4-only and ip6-only
673config file options.
674
675The commandline option -a and config file option ip-address can be given
676to bind to specific interfaces.  Multiple interfaces can be specified.
677This is useful for two reasons:
678	o The specific interface bound will result in the OS bypassing
679	  routing tables for the interface selection.  This results in
680	  a small performance gain.  It is not the performance gain that
681	  is the problem, sometimes the routing tables can give the
682	  wrong answer, see the next point.
683	o The answer will be routed via the interface the query came from.
684	  This makes sure that the return address on the DNS replies is the
685	  same as the query was sent to.  Many resolvers require the source
686	  address of the replies to be correct.  The ip-address: option is
687	  easier than configuring the OS routing table to return the DNS
688	  replies via the correct interface.
689The above means that even for systems with multiple interfaces where you
690intend to provide DNS service to all interfaces, it is prudent to specify
691all the interfaces as ip-address config file options.
692
693With the config file option ip-transparent you can allow NSD to bind to
694non local addresses.
695
6964.0 Support and Feedback
697
698NLnet Labs is committed to support NSD and its other software products on
699a best effort basis, free of charge. This form of community support is
700offered through a mailing lists and the 'bugzilla' web interface.
701
702	http://www.nlnetlabs.nl/bugs/
703
704If for any reason NLnet Labs would stop community support of NSD such
705would be announced on our web pages at least two years in advance.
706
707The community mailing list nsd-users@nlnetlabs.nl can be used to discuss
708issues with other users of NSD. Subscribe here
709
710	http://open.nlnetlabs.nl/mailman/listinfo/nsd-users
711
712NLnet Labs recognizes that in some corporate environments this commitment to
713community support is not sufficient and that support needs to be codified.
714We therefore offer paid support contracts that come in 3 varieties.
715
716More information about these support varieties can be found at
717	<url on support varieties on www.nlnetlabs.nl>
718
719Alternatively you can contact mailto:nsd-support@nlnetlabs.nl .
720
721Support goes two ways.  By acquiring one of the support contracts you
722also support NLnet Labs to continue to participate in the development
723of the Internet architecture. We do this through our participation in
724the (IETF) standards process and by developing and maintaining
725reference implementations of standards and tools to support operation
726and deployment of new and existing Internet technology.
727
728We are interested in our users and in the environment you use NSD. Please
729drop us a mail when you use NSD. Indicate in what kind of operation you
730deploy NSD and let us know what your positive and negative experiences are.
731http://www.nlnetlabs.nl/nsd  and  mailto:nsd-info@nlnetlabs.nl
732
733
7344.1 Your Support
735
736NLnet Labs offers all of its software products as open source, most are
737published under a BSD license. You can download them, not only from the
738NLnet Labs website but also through the various OS distributions for
739which NSD, ldns, and Unbound are packaged. We therefore have little idea
740who uses our software in production environments and have no direct ties
741with 'our customers'.
742
743Therefore, we ask you to contact us at users@NLnetLabs.nl and tell us
744whether you use one of our products in your production environment,
745what that environment looks like, and maybe even share some praise.
746We would like to refer to the fact that your organization is using our
747products. We will only do that if you explicitly allow us. In all other
748cases we will keep the information you share with us to ourselves.
749
750In addition to the moral support you can also support us
751financially. NLnet Labs is a recognized not-for-profit charity foundation
752that is chartered to develop open-source software and open-standards
753for the Internet. If you use our software to satisfaction please express
754that by giving us a donation. For small donations PayPal can be used. For
755larger and regular donations please contact us at users@NLnetLabs.nl. Also
756see http://www.nlnetlabs.nl/labs/contributors/.
757
758
759$Id: README,v 1.1.1.5 2019/05/25 19:44:44 christos Exp $
760