AllKnowingDNS Tiny DNS server for IPv6 Reverse DNS

Introduction

AllKnowingDNS provides reverse DNS for IPv6 networks which use SLAAC (autoconf), e.g. for a /64 network.

The problem with IPv6 reverse DNS and traditional nameservers is that the nameserver requires you to provide a zone file. Assuming you want to provide RDNS for a /64 network, you have 264 = 18446744073709551616 different usable IP addresses (a little less if you are using SLAAC). Providing a zone file for that, even in a very terse notation, would consume a huge amount of disk space and could not possibly be held in the memory of the computers we have nowadays.

AllKnowingDNS instead generates PTR and AAAA records on the fly. You only configure which network you want to serve and what your entries should look like.

Features

  • Answers PTR and AAAA queries with configurable format.
  • Can ask an upstream DNS server first and only be a fallback.
  • Works for different network sizes.
  • Beautifully simple configuration file.

Documentation

You can find full documentation for AllKnowingDNS and its configuration file in the manpage all-knowing-dns(1).

In case you understand German, you can also watch a presentation about AllKnowingDNS.

Download

Ideally, your Linux distribution provides a package for AllKnowingDNS already. Please use that package. If you insist on downloading and installing AllKnowingDNS manually, here you go:

latest AllKnowingDNS on metacpan.org

 

Installation Guide

Do you have an IPv6 network with autoconf and want to provide reverse DNS for it? Got five minutes? We can do that! Let’s assume your network is 2001:4d88:100e:ccc0::/64.

Install AllKnowingDNS

apt-get install all-knowing-dns

Edit /etc/all-knowing-dns.conf:

network 2001:4d88:100e:ccc0::/64
  resolves to ipv6-%DIGITS%.users.rzl.so

(Re-)start AllKnowingDNS:

/etc/init.d/all-knowing-dns restart

Delegate the .ip6.arpa zone

$TTL 7d     ; 1 week
e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa. IN SOA
    ns1.rzl.so. hostmaster.rzl.so. (
        ; serial  refresh  retry  expire  min
        42        7d       1d     30d     7d )
                    NS      ns1.rzl.so.
                    NS      ns2.rzl.so.

0.c.c.c.e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa. IN  NS        ipv6-rdns.rzl.so.

Delegate the (sub)domain

$TTL    6h
rzl.so. IN  SOA ns1.rzl.so. hostmaster.rzl.so. (
        ; serial   refresh  retry  expire  min
        2012030701 3h       30m    7d      1d )
        NS  ns1.rzl.so.
        NS  ns2.rzl.so.

users.rzl.so. IN NS ipv6-rdns.rzl.so.

Done!

Verify that everything works by resolving a host both ways:

host 2001:4d88:100e:ccc0:216:eaff:fecb:826
host -t AAAA ipv6-0216eafffecb0826.users.rzl.so