New-look DNS Workbench

Quickly and effectively test multiple (authoritative) name server implementations

We've comprehensively upgraded and freshened up our DNS WorkbenchLink opens in new tab. It had started to look a little jaded, but is now ready for another spell of active service. We've also made the code open sourceLink opens in new tab. So this seems like a good time to remind people what the DNS Workbench is and why it remains popular with a select group of (advanced) users.

What is the DNS Workbench?

Several years ago, we were looking for a way of quickly and effectively testing and comparing multiple (authoritative) name server implementations. We didn't only have conventional, obvious settings in mind. After all, they have usually been well implemented and tested by software developers. We were thinking more of 'corner cases' and less commonplace test scenarios. That led to creation of the DNS Workbench, which soon attracted the interest of people outside SIDNLink opens in new tab. We therefore decided to make the Workbench available as a free on-line serviceLink opens in new tab.

The DNS Workbench is an integration of five open-source name server products: BIND9Link opens in new tab, PowerDNSLink opens in new tab, KnotLink opens in new tab, YADIFALink opens in new tab and NSDLink opens in new tab. Each of the name servers acts as primary (master) server for no fewer than 421 zone filesLink opens in new tab automatically generated specifically for the purpose. The zone files can be divided into the following groups:

RR types

Zone files with various RR typesLink opens in new tab, including types that have been declared obsolete and various exotic types, which are rarely encountered in the field, but which name servers may still support. You might like to try the following test:

dig GPOS gpos.types.wb.sidnlabs.nl [@knot.sidnlabs.nl]

The query above concerns the rare GPOS type, and is addressed to the Knot server. To request the much more commonplace AAAA type, the syntax would be:

dig AAAA aaaa.types.wb.sidnlabs.nl [@bind9.sidnlabs.nl]

(to the BIND9-server)

One thing that the experiment shows is that not all name servers support all RR types by default. For example, YADIFA requires conversion to RFC3597Link opens in new tab format before it will load the zone file. PowerDNS loads the zone, but the AXFR (zone transfer) process proves problematic. In other words, our tests brought certain bugsLink opens in new tab to light. YADIFA even crashed with:

dig +tcp ANY delegations.wb.sidnlabs.nl @yadifa.sidnlabs.nl

The bug that caused that crash has now been fixed and we're running an improved version on the Workbench, compiled from the YADIFA source code. Where the other name server software is concerned, we're running the packages supplied with Ubuntu 18.04 for as long as we can.

We offer the zone file with the special RR types in both signedLink opens in new tab and unsignedLink opens in new tab form.

Validation tests

This group consists of an extensive 'DNS tree'Link opens in new tab (called 'bad-dnssec') of zones that feature various types of signing error, which can be used for purposes such as testing DNSSEC validation softwareLink opens in new tab.

Illustration: 'ok.ok.ok.bad-dnssec.wb.sidnlabs.nlLink opens in new tab' is (the only) faultlessly delegated and signed zone in the group. However, the zone 'signotincepted.ok.ok.bad-dnssec.wb.sidnlabs.nlLink opens in new tab' ends (with the leftmost label) in a delegation that is signed in the future, meaning that the digital signature is not yet valid.

Combinations are also possible. For example, 'signotincepted.nods.ok.bad-dnssec.wb.sidnlabs.nlLink opens in new tab' is similarly signed in the future, but additionally lacks a parent-zone DS record. The differences can be identified by using DNSvizLink opens in new tab to examine the latter zone. DNSviz is a very handy debug tool, which can also be tested using the DNS Workbench. The first of the above zones is 'bogus', while the second is actually 'insecure', because its parent zone doesn't contain a DS for it. This experiment provides a range of variations for testing with validating resolvers. From it, we know that most resolvers validate top-down, while some also operate bottom-up, which may have direct consequences for the test scenario described above, for example.

Other errors deliberately included in the 'bad-dnssec' tree are: a digital signature with bogus data, a digital signature that has expiredLink opens in new tab, and a signature set using an unknown, fictitious algorithmLink opens in new tab.

Delegations

This experiment is intended to test the various (signed) delegation combinations. For example, the zone 'bind9.powerdns.knot.delegations.wb.sidnlabs.nlLink opens in new tab' is delegated to Knot, which redelegates it to PowerDNS, which in turn redelegates it to BIND9. In other words, the zone is actually held on a BIND9 name server, but a resolver has to go via a Knot server and a PowerDNS server to resolve a domain name. That yields this complex DNSviz visualisationLink opens in new tab.

Transfers and TSIGs

All the Workbench zone files are publicly available by means of a DNS zone transfer (AXFR)Link opens in new tab. The transfer can be performed with or without TSIG keys (various algorithms), e.g.:

dig axfr ok.bad-dnssec.wb.sidnlabs.nl @nsd4.sidnlabs.nl

or

dig -y "wb_md5:Wu/utSasZUkoeCNku152Zw==" \
axfr ok.bad-dnssec.wb.sidnlabs.nl  @bind9.sidnlabs.nl

Other experiments

Finally, at our users' request, we have added three further zone filesLink opens in new tab. One is a zone file with a CNAME under the APEXLink opens in new tab, which is not permitted by the standard. Another of the new zone filesLink opens in new tab is designed for NSEC3 opt-outLink opens in new tab testing.

Suggestions welcome!

Together, the experiments described above enable a wide variety of tests for observing software behaviour and establishing how different tooling handles the various errors deliberately introduced to the DNS zone files.

If you'd like to suggest further refinements, please get in touch! We've already got a few ideas of our own. For example, we'd like to add some more modern signing algorithms such as ECDSALink opens in new tab to the test set, plus experiments that focus on IDNLink opens in new tabs.

If you're already using the Workbench, we'd like to hear from you too. We'd love to know what you use it for, and whether you can think of any improvements that would make it more useful to you.

The Workbench is available from https://workbench.sidnlabs.nl/Link opens in new tab and the source code from https://github.com/SIDN/workbenchLink opens in new tab.