Submitted by jelu on

Check My DNS is a custom developed DNS nameserver that creates dynamic delegated subdomains to enable clients to query for never-seen-before resource records in order to support a general-purpose framework for testing DNS resolvers.

Version 3 is has been rolled out and is actively being developed. There are no longer instances, you instead can select a region to test against and checks has been grouped up into suites. Much more to come!

There is also a command line client (cmdns-cli) that you can run locally, this will allow you to specify which resolver to test against.

As a DNS-OARC member you can get access to all of the raw test data on our analysis servers, if you wish to have access but currently don't have access to the analysis servers please contact us.

Community Endpoints

We might soon open up for the community to support Check My DNS by running an endpoint.

Endpoints are where the traffic enters into Check My DNS, the DNS authority. As checks dynamic generates zones, these zones gets delegated to an endpoint. We currently run endpoints at two locations where OARC has hardware, in Stockholm and California, these are the regions you can select between.

Requirements for running an endpoint are:

  • Linux x86_64 based OS/VM/container able to run cmdns-launcher (go binary)
  • 2+ static IPv4 addresses
  • 2+ static IPv6 addresses
  • open UDP/TCP ports: 53, 853

Currently, these addresses needs to be static because the backend needs to know where to delegate zones to. Also, the endpoint needs to be able to bind to the specific addresses, so no dynamic mapping is supported right now. This might change in the future tho.

How you run the launcher and endpoint is up to you, it can be run in several different modes:

  • Everything as root
  • Launcher as root but with endpoint switching to a configured uid/gid after opening ports
  • As non-root where launcher uses "sudo setcap" to give endpoint ability to open ports
  • All as non-root where you have made sure it can open ports

The launcher will download, and update, the endpoint and it's configuration from the backend, which is centrally managed.