atomdns

Welcome to the documentation site of atomdns, a flexible and fast DNS name server. It is written in Go. atomdns links handlers together which then make up your DNS server.

atomdns is powered by chaining handlers.

atomdns can serve data over DNS, DOT (DNS over TLS), DOH (DNS over HTTPS), and DOU (DNS over Unix [domain sockets]), with manual or automatic certificate management.

This site is a “wiki”, click the pencil icon top right to make edits via Git and codeberg.org.

This DNS data for this site is (of course) served by atomdns (see the configuration) and the website is created with hugo and served via caddy. This entire stack runs on Go, and C for the Linux kernel.

The focus for atomdns is running on your servers, serving your DNS data the way you want to. This the entire configuration for serving miek.nl and thus atomdns.miek.nl (with some added comments).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
    # The global handler block defines process wide properties for atomdns.
    log {
        debug
    }
    root /etc/atomdns
    health
    metrics
    dns {
        addr [::]:53
    }
}

# Here we define a reusable block.
(observe) {
    metrics
}

# And another one for later use.
(nlnetlabs) {
    transfer {
            to 185.49.140.62 2a04:b900::8:0:0:62 {
            source 2a10:3781:2dc2:3::53
        }
    }
}

# The definition for the miek.nl zone.
miek.nl {
    ecs            # check for edns0 client subnet.
    log            # log incoming queries.
    import observe # import allows using those predefined blocks from above.
    sign zones/miek.nl {           # sign the miek.nl zone.
        ttl 60
        key keys/Kmiek.nl.+008+33694 keys/Kmiek.nl.+013+05607
    }
    dbfile zones/miek.nl.signed {  # serve the signed miek.nl zone.
        import nlnetlabs
    }
}

See the configuration section for a complete rundown of the configuration.

We always appreciate your feedback and improvements. You can submit an issue or pull request on the codeberg repository for this website. atomdns can be found at codeberg.org/miekg/dns. This site details the latest version of atomdns.

A lof of things are documented directly in atomdns’s git repository, to avoid repeating things here (and keeping up to date), links to the authoritative source are preferred.