ALL-KNOWING-DNS(1p)

πŸ“¦
version 1.7 Β· 4 versions
, in debian trixie, ubuntu resolute, ubuntu stonking

✨ all-knowing-dns(1p) ✨

okay bestie, this is the manual page for all-knowing-dns (that's the 1p one, a user-contributed Perl doc), and it's genuinely one of the cutest little daemons out there. it's a tiny DNS server for IPv6 Reverse DNS and it does so much with so little. no cap. πŸ’–


🌸 NAME

all-knowing-dns β€” Tiny DNS server for IPv6 Reverse DNS πŸ¦‹


πŸŽ€ SYNOPSIS

all-knowing-dns [--configfile <path>] [--querylog]

that's it. that's the whole invocation. slay. πŸ’…


πŸ’œ DESCRIPTION

AllKnowingDNS serves reverse DNS for IPv6 networks that use SLAAC (autoconf) β€” like, say, a /64 network. 🌈

here's the tea, and it's a real problem: IPv6 reverse DNS with traditional nameservers means the nameserver makes you hand it a zone file. but bestie, imagine you want RDNS for a /64 network. that's 2**64 = 18446744073709551616 different usable IP addresses (a lil bit less if you're using SLAAC, but still). writing a zone file for that, even in the tersest notation known to humanity, would eat a huge amount of disk space, and it could not possibly be held in the memory of the computers we have nowadays. like, not even close. πŸ’€

so AllKnowingDNS said "not me being normal about this" and instead generates PTR and AAAA records on the fly. you literally only configure which network you want to serve and what your entries should look like. main character energy, honestly. πŸ‘‘


πŸ’… OPTIONS

  • --configfile=path β€” use path instead of /etc/all-knowing-dns.conf as the configuration file. πŸŽ€
  • --querylog β€” turn on logging of every query to stdout (for debugging). it's giving "verbose bestie", use it when something's weird. πŸ”

πŸŽ€ CONFIGURATION FILE (/etc/all-knowing-dns.conf)

the config file is wonderfully simple, and i mean that with my whole chest. look at this:

# Configuration file for AllKnowingDNS v1.7

listen 79.140.39.197
listen 2001:4d88:100e:1::3

# RaumZeitLabor
network 2001:4d88:100e:ccc0::/64
    resolves to ipv6-%DIGITS%.nutzer.raumzeitlabor.de
    with upstream 2001:4d88:100e:1::2

# Chaostreff
network 2001:4d88:100e:cd1::/64
    resolves to ipv6-%DIGITS%.treff.noname-ev.de

that example right there contains all the configuration directives. every single one. iconic. let's go over them one by one, no skipping, i promise. 🫢

  • listen address β€” listens on the given address (IPv4 and IPv6 are both supported, we love an inclusive queen) on port 53.
  • network network β€” says that queries for PTR records within the given network should be answered (any query for an unconfigured network gets answered with NXDOMAIN β€” sorry babe, we don't know her). you need to specify at least the resolves to directive afterwards.
  • resolves to address β€” specifies the address that PTR records should resolve to. the address needs to contain %DIGITS% exactly once. when answering AAAA queries, %DIGITS% will be parsed and converted back to an IPv6 address. cute, right?

example:

network 2001:4d88:100e:ccc0::/64
    resolves to ipv6-%DIGITS%.nutzer.raumzeitlabor.de

example query:

The PTR query 2001:4d88:100e:ccc0:216:eaff:fecb:826 will resolve to
ipv6-0216eafffecb0826.nutzer.raumzeitlabor.de
  • with upstream address β€” before answering a PTR query for this network, AllKnowingDNS will ask the DNS server at address first, appending .upstream to the query. πŸ‘€

example:

network 2001:4d88:100e:ccc0::/64
    resolves to ipv6-%DIGITS%.nutzer.raumzeitlabor.de
    with upstream 2001:4d88:100e:1::2

example query:

The PTR query 2001:4d88:100e:ccc0:219:dbff:fe43:2ec5 will make
AllKnowingDNS ask for
5.c.e.2.3.4.e.f.f.f.b.d.9.1.2.0.0.c.c.c.e.0.0.1. \
8.8.d.4.1.0.0.2.ip6.arpa.upstream. at 2001:4d88:100e:1::2
and relay the answer, if any.

🌈 DELEGATING ZONES

this section shows you how to delegate a zone in BIND9 or any DNS server with a compatible zone file syntax. to use AllKnowingDNS, you need to delegate the appropriate .ip6.arpa zone for your network and one regular domain. two things. that's the whole assignment. πŸ¦‹

πŸ“ REVERSE DELEGATION (.ip6.arpa)

$ORIGIN .
$TTL 604800     ; 1 week
e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa IN SOA infra.in.zekjur.net. \
                                      hostmaster.zekjur.net. (
                                20         ; serial
                                604800     ; refresh (1 week)
                                86400      ; retry (1 day)
                                2419200    ; expire (4 weeks)
                                604800     ; minimum (1 week)
                                )
                        NS      libri.sur5r.net.
                        NS      infra.in.zekjur.net.

; net for RaumZeitLabor
0.c.c.c.e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa. IN  NS        ipv6-rdns.zekjur.net.

⭐ FORWARD DELEGATION (.nutzer.raumzeitlabor.de)

$TTL    6h
raumzeitlabor.de    IN  SOA ns1.jpru.de.    hostmaster.jpru.de. (
                        2012030701
                        3h
                        30m
                        7d
                        1d )
    IN  NS  ns1.jpru.de.
    IN  NS  ns2.jpru.de.
    IN  A   195.49.138.121
    IN  MX  10  rzl.uugrn.org.
    IN  MX  20  up.uugrn.org.
    IN  MX  50  mail.uugrn.org.
    IN  MX  100 rzl.uugrn.org.

nutzer.raumzeitlabor.de. IN NS ipv6-rdns.zekjur.net.

πŸ‘‘ VERSION

Version 1.7 πŸ’œ


🫢 AUTHOR

Michael Stapelberg, "<michael at stapelberg.de>" 🌸


Copyright 2012 Michael Stapelberg.

this program is free software; you can redistribute it and/or modify it under the terms of the BSD license. πŸ“


and that's the whole page, bestie!! this one came out of perl v5.40.1 and it's dated 2025-04-15. go forth and give your /64 some reverse DNS. i'm obsessed. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from