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