The NLnet Labs Name Server Daemon (NSD) is an authoritative, RFC compliant DNS nameserver. https://nlnetlabs.nl/nsd
  • C 80.6%
  • Shell 4.6%
  • M4 4%
  • Python 3.3%
  • Roff 3%
  • Other 4.3%
Find a file
W.C.A. Wijngaards c30ca23b7e - Fix that when DNAME is limited due to the maximum CNAME chain
length, it copies the final DNAME with its CNAME into the
  packet. Also fix unit test for limit on CNAME chain length.
2026-07-29 14:35:39 +02:00
.github - Fix to update github ci actions/checkout to v7. 2026-06-19 09:28:16 +02:00
compat - Fix conditional expressions with parentheses for bitwise and. 2025-06-11 16:59:33 +02:00
contrib contrib/nsd.openrc.in: support both supervisors in reload() 2026-05-09 17:33:36 -04:00
dnstap - For #458: Add configure check for fstrm_tcp_writer_options_init 2025-09-11 10:22:30 +02:00
doc - Fix that when DNAME is limited due to the maximum CNAME chain 2026-07-29 14:35:39 +02:00
simdzone@93b70fcd4b Log oots SvcParam support 2026-07-16 11:58:15 +02:00
tpkg - Fix that when DNAME is limited due to the maximum CNAME chain 2026-07-29 14:35:39 +02:00
util - Fix PROXYv2 header read and consume, it checks the header size. Thanks to Qifan Zhang, Palo Alto Networks for the report. 2026-06-15 10:34:27 +02:00
.gitignore Merge branch 'master' into features/af-xdp 2025-05-15 11:42:05 +02:00
.gitmodules Replace Flex+Bison based parser with simdzone 2024-04-19 15:18:00 +02:00
.readthedocs.yaml Fix readthedocs build 2025-05-15 13:53:36 +02:00
acx_nlnetlabs.m4 - Update acx_nlnetlabs.m4 to version 51, with nonstring unknown 2025-11-06 15:04:36 +01:00
answer.c - proxy-protocol, handle udp proxy header. 2023-04-25 09:27:03 +02:00
answer.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
axfr.c - Fix that AXFR out for a zone with an oversize record does not loop. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-07-14 08:56:25 +02:00
axfr.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
bitset.c Add cpu affinity and socket partitioning 2020-01-16 11:24:46 +01:00
bitset.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
buffer.c Replace Flex+Bison based parser with simdzone 2024-04-19 15:18:00 +02:00
buffer.h EDNS0 padding option support with DoT 2026-07-02 12:41:00 +02:00
configlexer.lex - Fix #137: Adds tcp-listen-queue: number config option to set 2025-10-02 09:36:27 +02:00
configparser.y - Fix #137: Adds tcp-listen-queue: number config option to set 2025-10-02 09:36:27 +02:00
configure.ac Set maximum CNAME chain to return to 18 2026-07-14 08:57:33 +02:00
convert-release-notes.sh Determine version not just for mail in convert-release-notes helper 2026-03-19 14:42:51 +01:00
dbaccess.c - direct-rdata-storage, work on packed rr pointer array storage. 2025-05-19 17:07:27 +02:00
dbcreate.c - direct-rdata-storage, implement in dbcreate.c. 2025-01-31 14:52:59 +01:00
difffile.c Increase verbosity level to warn about unfound RRs to be deleted (from IXFR) 2026-07-14 09:02:24 +02:00
difffile.h Fix pedantic/CodeQL issues in core sources (#481) 2026-04-24 14:15:06 +02:00
dname.c Fix overflow for NSEC3 zones with 255-octet name 2026-06-18 17:04:30 +02:00
dname.h - direct-rdata-storage, review fixes. 2025-05-01 14:08:17 +02:00
dns.c The HHIT and BRID RR types 2026-07-15 12:23:56 +02:00
dns.h The oots SvcParam (draft-johani-dnsop-svcb-oots-00) 2026-07-16 11:12:08 +02:00
edns.c - Fix Y2038 bug, where the server process would fail with undefined behaviour, if it was built with address sanitizer undefined checks enabled, for the timestamp in EDNS cookies. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-07-14 09:05:14 +02:00
edns.h EDNS0 padding option support with DoT 2026-07-02 12:41:00 +02:00
ipc.c - Fix conditional expressions with parentheses for bitwise and. 2025-06-11 16:59:33 +02:00
ipc.h Pass notifies from serve processes to xfrd 2024-10-18 15:59:56 +02:00
iterated_hash.c Fixup for iterated hash ctx destroy. 2021-07-30 17:34:51 +02:00
iterated_hash.h udbzone work, include "config.h" is used. 2011-03-22 16:46:59 +00:00
ixfr.c - Fix that IXFR out for a zone with an oversize record does not loop. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-07-14 08:56:56 +02:00
ixfr.h - Fix duplicate serial in IXFR is rejected. Also fix for loop detection in serial journal, when writing to file and serving IXFR queries. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-06-26 11:37:24 +02:00
ixfrcreate.c Merge branch 'master' into direct-rdata-storage 2025-04-23 15:40:09 +02:00
ixfrcreate.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
LICENSE - Fix #551: change Regent to Copyright holder in the LICENSE, 2014-02-07 13:41:00 +00:00
lookup3.c correct some spelling mistakes 2022-01-01 23:20:04 +11:00
lookup3.h - Fix #551: change Regent to Copyright holder in the LICENSE, 2014-02-07 13:41:00 +00:00
makedist.sh Set the releases key as the default for signing 2026-02-16 11:44:22 +01:00
Makefile.in Revert "Make metrics.o a COMMON_OBJ in the Makefile" 2026-06-29 14:53:58 +02:00
metrics.c Include inttypes.h from metrics.c 2026-07-07 13:08:04 +02:00
metrics.h Inline static function to get rid of warning 2026-06-29 15:09:35 +02:00
mini_event.c - Fix bitwise operators in conditional expressions with parentheses. 2025-06-11 15:21:21 +02:00
mini_event.h - Fix compilation without libevent and compilation of nsd-mem. 2022-06-14 13:46:47 +02:00
mkinstalldirs fixed a few long tests 2008-06-12 08:10:36 +00:00
namedb.c - Fix nsec3_dszone for overlapping nsec3 zone and zone addition and removal. It checks if the zone exists, and it also clears and partially precompiles the nsec3 in the zone above the added and deleted zone, if that zone uses nsec3. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-06-26 14:31:08 +02:00
namedb.h - direct-rdata-storage, remove accessor functions for rrset->rrs, the 2025-05-22 11:44:38 +02:00
netio.c - Fix conditional expressions with parentheses for bitwise and. 2025-06-11 16:59:33 +02:00
netio.h Replace Flex+Bison based parser with simdzone 2024-04-19 15:18:00 +02:00
nsd-checkconf.8.in Update man pages 2024-08-19 15:42:32 +02:00
nsd-checkconf.c Add metrics options to nsd-checkconf 2025-03-10 14:54:35 +01:00
nsd-checkzone.8.in Update man pages 2024-08-19 15:42:32 +02:00
nsd-checkzone.c Replace Flex+Bison based parser with simdzone 2024-04-19 15:18:00 +02:00
nsd-control-setup.sh.in Sync nsd-control-setup with unbound-control-setup 2022-02-05 18:36:30 +01:00
nsd-control.8.in --with-cookiesecretsfile=path for configure 2024-08-21 14:17:27 +02:00
nsd-control.c - Fix for OpenSSL 3.0 deprecated functions. 2024-06-17 12:37:53 +02:00
nsd-mem.c Let nsd-mem also report recycle bin usage 2025-12-20 09:53:47 +01:00
nsd.8.in Update man pages 2024-08-19 15:42:32 +02:00
nsd.c Merge branch 'master' into features/af-xdp 2025-05-15 11:42:05 +02:00
nsd.conf.5.in Document zonestats label in prometheus metrics 2026-06-29 13:47:35 +02:00
nsd.conf.sample.in - For #137: Change default for the listen TCP backlog to -1 on 2025-11-03 16:03:52 +01:00
nsd.h Merge branch 'master' into features/af-xdp 2025-08-04 11:22:05 +02:00
nsec3.c Leave out NSEC3s with wrong non-base32hex chars in owner label 2026-07-14 09:04:13 +02:00
nsec3.h - Fix nsec3_dszone for overlapping nsec3 zone and zone addition and removal. It checks if the zone exists, and it also clears and partially precompiles the nsec3 in the zone above the added and deleted zone, if that zone uses nsec3. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-06-26 14:31:08 +02:00
options.c Guard zonestats option validity check for metrics label 2026-06-29 14:53:58 +02:00
options.h Fix transfer of zone without client cert over TCP 2026-06-24 16:57:58 +02:00
packet.c - direct-rdata-storage, fix rdlength for read rr in diffile and packet read. 2025-03-06 09:49:29 +01:00
packet.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
popen3.c Port zone verification from CreDNS to NSD 2022-06-14 12:29:44 +02:00
popen3.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
query.c - Fix that when DNAME is limited due to the maximum CNAME chain 2026-07-29 14:35:39 +02:00
query.h Add query create and query buffer replace functions 2024-09-06 11:23:35 +02:00
radtree.c - Fix not reachable annotation in radix_find_prefix_node. 2021-09-03 14:49:35 +02:00
radtree.h packed radtree. 2017-08-29 14:01:03 +00:00
rbtree.c ixfr can result in nsec3 hash tree null node deletion 2025-08-03 11:18:42 -04:00
rbtree.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
rdata.c Update rdata.c 2026-07-16 11:43:44 +02:00
rdata.h The HHIT and BRID RR types 2026-07-15 12:23:56 +02:00
README.md change mailing list to forum 2026-06-08 21:58:46 +02:00
region-allocator.c Tell were cookies came from 2024-08-29 11:35:56 +02:00
region-allocator.h Tell were cookies came from 2024-08-29 11:35:56 +02:00
remote.c Don't crash zonestatus with multiple catalog consumers 2026-07-14 09:05:56 +02:00
remote.h Fix compilation with metrics disabled 2025-03-10 14:54:35 +01:00
rrl.c - proxy-protocol, handle udp proxy header. 2023-04-25 09:27:03 +02:00
rrl.h correct some spelling mistakes 2022-01-01 23:20:04 +11:00
SECURITY.md add SECURITY.md, based on krill 2022-07-05 16:36:54 +02:00
server.c Merge branch 'release-4.14.3' 2026-06-25 17:16:13 +02:00
siphash.c Get rid of C90 warnings 2021-06-09 11:44:37 +02:00
systemd.m4 - configure --enable-systemd (needs pkg-config and libsystemd) can 2018-06-26 09:18:07 +00:00
tsig-openssl.c - Fix to compile with OpenSSL 3.0.0beta2. 2021-07-30 14:11:58 +02:00
tsig-openssl.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
tsig.c - Fix sanitizer warning in tsig write of zero length mac and otherdata. 2025-03-14 14:15:59 +01:00
tsig.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
udb.c - Fix code analyzer large value with assertion. 2022-03-02 12:06:41 +01:00
udb.h Fix pedantic/CodeQL issues in core sources (#481) 2026-04-24 14:15:06 +02:00
util.c Merge branch 'master' into direct-rdata-storage 2025-05-01 09:40:40 +02:00
util.h Merge branch 'master' into direct-rdata-storage 2025-05-01 09:40:40 +02:00
verify.c Fix pedantic/CodeQL issues in core sources (#481) 2026-04-24 14:15:06 +02:00
verify.h - Fix #270: reserved identifier violation. 2023-02-23 14:04:09 +01:00
xdp-dns-redirect_kern.c Fix formatting 2025-08-04 10:49:25 +02:00
xdp-server.c Resolve warnings about mixed declaration and code and unused variable 2025-09-11 11:03:17 +02:00
xdp-server.h Remove unused returns 2025-08-04 10:48:53 +02:00
xdp-util.c Reduce implicit integer type conversions 2024-10-11 16:28:30 +02:00
xdp-util.h Reduce implicit integer type conversions 2024-10-11 16:28:30 +02:00
xfr-inspect.c Remove on-disk binary database 2023-11-01 16:42:21 +01:00
xfrd-catalog-zones.c - Fix catalog consumer zone with long name for member unique label that is long, so that it does not crash on that. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-06-26 11:18:59 +02:00
xfrd-catalog-zones.h consumer member zones in rbtree... 2024-01-10 21:23:55 +01:00
xfrd-disk.c - direct-rdata-storage, implement in xfrd-disk.c. 2025-01-31 13:39:08 +01:00
xfrd-disk.h - Save backoff timeout into xfrd.state file, this file has a higher 2016-10-25 12:29:49 +00:00
xfrd-notify.c Nits that came out of clang analysis 2024-12-04 15:03:40 +01:00
xfrd-notify.h - Fix 3392: Fix regression in 4.1.18 for notify lists with ip4 2017-12-06 15:45:12 +00:00
xfrd-tcp.c Fix pedantic/CodeQL issues in core sources (#481) 2026-04-24 14:15:06 +02:00
xfrd-tcp.h - Merge #449: Add useful logging for XoT transfers. 2025-07-18 11:51:29 +02:00
xfrd.c - Fix to have failed zone transfers retry after a time, instead of in a loop, for transfers with failed contents. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-07-14 09:01:15 +02:00
xfrd.h - Fix nsd-control assoc_tsig, if that interrupts a zone transfer in progress, to not crash. It restarts the transfer from the primary. Thanks to Qifan Zhang, Palo Alto Networks, for the report. 2026-06-26 09:20:03 +02:00
zonec.c Fix to clean up left over RRs from batch wise processing 2026-02-16 11:01:23 +01:00
zonec.h When applying XFRs, commit RRs within RRsets in batches 2026-02-02 21:25:45 +01:00

NSD

GitHub Build Status Coverity Scan Status Packaging status CII Best Practices Mastodon Follow

The NLnet Labs Name Server Daemon (NSD) is an authoritative DNS name server. It has been developed for operations in environments where speed, reliability, stability and security are of high importance. If you have any feedback, we would love to hear from you. Dont hesitate to create an issue on Github or post a message on our community forum. You can learn more about NSD by reading our documentation.

Building

Make sure you have the following installed:

  • C toolchain (the set of tools to compile C such as a compiler, linker, and assembler)
  • OpenSSL, with its include files (usually these are included in the "dev" version of the library)
  • libevent, with its include files (usually these are included in the "dev" version of the library)
  • flex
  • bison

When building from Git, the configure script and simdzone sources are missing, use the following commands to get started (note that the configure script and sources are included in release tarballs and do not need to be generated/downloaded):

$ git submodule update --init
$ autoreconf -fi

autoreconf should install the required auxiliary files (e.g. config.sub and config.guess). Older versions of autoreconf may not do so, try running libtoolize -fi -c first in that case.

Compile and install using:

$ ./configure && make && make install

NSD configuration

The configuration options for NSD are described in the man pages, which are installed (use man nsd.conf) and are available on the NSD documentation page.

An example configuration file is located in nsd.conf.sample.