ATOMDNS(1)

NAME

atomdns - DNS nameserver that runs handlers

SYNOPSIS

atomdns [-C|-H|-V] [CONFFILE]

DESCRIPTION

atomdns is a DNS server that chains handlers. Each handler handles a DNS feature, like serve zone files, transfering those to secondaries or just exporting metrics. There are many handlers, each described in their respective manual page. If an unknown handler is encountered it is skipped, while outputting a warning.

The server atomdns can be reloaded by sending it the HUP signal, this reloads the handlers only, and does not restart any of the (web) servers, so changes to server addresses and limits (see atomdns-global(7)) will not be applied through reloads. I.e. if you modified the health endpoint that change will not be picked up. For those kind of changes the server needs to be restarted. Modifiying origins or handlers are picked up.

The global handler describes the options that are also used in starting the server, see atomdns-global(7) for more information. Normally you need a CONFFILE (atomdns-conffile(5)) like this, to listen on all addresses on port 53:

    {
        dns {
            addr [::]:53
        }
    }

When atomdns starts it emits logs telling what zones are loaded and which (background) routines are started, when succesful you are greeted with a banner (unless quiet is true see atomdns-global(7)).

      ┏━┓  ╺┳╸  ┏━┓  ┏┳┓
      ┣━┫   ┃   ┃ ┃  ┃┃┃  DNS
      ╹ ╹   ╹   ┗━┛  ╹ ╹ v024 (0.5.15)
      High performance and flexible DNS server
      https://atomdns.miek.nl
    __________________________________\o/_______

There is optional positional argument, the CONFFILE to configure atomdns. If not given atomdns will use this builtin Conffile:

    {
      dns {
          addr [::]1053
      }
    }
    example.org {
      log
      whoami
    }

The following options are available:

-C  check the configuration, report any erors and exit with status 1 or if everything is OK exit with status code 0.

-H  list all handlers and quit.

-V  Show version and quit.

HANDLERS

The following handlers are available:

•   acl - enforces access control policies. See atomdns-acl(7).

•   any - give a minimal response to ANY queries. See atomdns-any(7).

•   as112 - an AS112 black hole server. See atomdns-as112(7).

•   chaos - respond to TXT queries in the CH class. See atomdns-chaos(7).

•   cookie - adds an DNS cookie of this server to each reply. See atomdns-cookie(7).

•   dbfile - serve zone data from an RFC 1035-style file. See atomdns-dbfile(7).

•   dbhosts - serve data from /etc/hosts. See atomdns-dbhost(7).

•   dbsqilte - serve zone data from a SQLite database. See atomdns-dbsqlite(7).

•   drunk - test client behavior. See atomdns-drunk(7).

•   ecs - add EDNS client subnet to the context. See atomdns-ecs(7).

•   empty - consume setup tokens. See atomdns-empty(7).

•   geoip - add geographical location data. See atomdns-geoip(7).

•   global - hold server properties. See atomdns-global(7).

•   id - add unique ID to the context. See atomdns-id(7).

•   import - includes files or references snippets from a Conffile. See atomdns-import(7).

•   kill - stop atomdns after a duration. See atomdns-kill(7).

•   log - log queries. See atomdns-log(7).

•   metrics - enable prometheus ⟨https://prometheus.io/⟩ metrics. See atomdns-metrics(7).

•   nsid - adds an identifier of this server to each reply. See atomdns-nsid(7).

•   refuse - refuse queries. See atomdns-refuse(7).

•   root - override the global root. See atomdns-root(7).

•   sign - add DNSSEC records to zone files. See atomdns-sign(7).

•   template - use Go templates to reply. See atomdns-template(7).

•   url - serve zone data from an URL. See atomdns-url(7).

•   whoami - return your resolver's local IP address, port and transport. See atomdns-whoami(7).

DIFFERENCE WITH COREDNS

atomdns looks a lot like CoreDNS, the main differences are:

•   Uses dnsv2 (this library) which is 2x more efficient and incorperates a lot of ideas from CoreDNS.

•   Allows for dynamic ordering of handlers, handlers in CoreDNS (called plugins) have a static ordering, set at compile time.

•   Ignores unknown handlers, CoreDNS stops with an error in that case.

AUTHORS

atomdns authors.

COPYRIGHT

Apache License 2.0

SEE ALSO

See atomdns-conffile(5), and atomdns-global(7), and https://atomdns.miek.nl with more documentation.