/JDNSS

A leaf DNS server in Java

Primary LanguageJava

Build Status

JDNSS

An authoritative-only, DNSSEC/TLS/DoH capable, leaf DNS server in Java. See the issues for the known problems with DNSSEC.

It was written to be both more portable and more secure. It is currently intended for use as a "leaf" server as it does not do iterative or recursive lookups for clients, nor does it do any caching. It reads zone files listed on the command line. The other command line arguments are as follows:

Argument Use
--IPaddresses Where to listen in the form of "protocol@address@port" where protocol can be TLS, TCP, UDP, MC, and HTTPS.
--threads=# The maximum number of threads to allow (default: 10).
--keystoreFile The path to the file with the TLS or HTTPS keystore.
--keystorePassword The password for the keystore.
--version Display the JDNSS version number and exit.
--serverSecret Define Server Cookie Secret used.

mvn install

should build it for you.

You can then run it via:

java -jar target/jdnss-2.1.jar [options...] zone..."

where zone... are zone files you want to serve. For a quick test, run JDNSS with:

java -jar target/jdnss-2.1.jar --IPaddresses="UDP@127.0.0.1@5300" test.com

You should be able to run the following queries (from a different window):

  • nslookup -port=5300 test.com localhost
  • nslookup -port=5300 www.test.com localhost
  • nslookup -port=5300 -type=SOA test.com localhost
  • nslookup -port=5300 -type=NS test.com localhost
  • nslookup -port=5300 -type=MX test.com localhost
  • nslookup -port=5300 -type=AAAA www.test.com localhost
  • nslookup -port=5300 -type=TXT one.test.com localhost
  • dig @localhost test.com
  • dig @localhost test.com +cookie="0123456789abcdef"
  • dig @localhost www.test.com AAAA
  • dig @localhost www.test.com +noedns