.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "ALL-KNOWING-DNS 1p" .TH ALL-KNOWING-DNS 1p 2024-05-15 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME all\-knowing\-dns \- Tiny DNS server for IPv6 Reverse DNS .SH SYNOPSIS .IX Header "SYNOPSIS" .Vb 1 \& all\-knowing\-dns [\-\-configfile ] [\-\-querylog] .Ve .SH DESCRIPTION .IX Header "DESCRIPTION" AllKnowingDNS provides reverse DNS for IPv6 networks which use SLAAC (autoconf), e.g. for a /64 network. .PP 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 2**64 = 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. .PP 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. .SH OPTIONS .IX Header "OPTIONS" .IP \fB\-\-configfile=\fR\f(BIpath\fR 4 .IX Item "--configfile=path" Use \fIpath\fR instead of /etc/all\-knowing\-dns.conf as configuration file. .IP \fB\-\-querylog\fR 4 .IX Item "--querylog" Enable logging every query to stdout (for debugging). .SH "CONFIGURATION FILE (/etc/all\-knowing\-dns.conf)" .IX Header "CONFIGURATION FILE (/etc/all-knowing-dns.conf)" The configuration file is wonderfully simple: .PP .Vb 1 \& # 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 .Ve .PP This example contains all configuration directives. Let's go over them one by one: .IP "\fBlisten \fR\f(BIaddress\fR" 4 .IX Item "listen address" Listens on the given \fIaddress\fR (IPv4 and IPv6 is supported) on port 53. .IP "\fBnetwork \fR\f(BInetwork\fR" 4 .IX Item "network network" Specifies that queries for PTR records within the given network should be answered (any query for an unconfigured network will be answered with NXDOMAIN). You need to specify at least the \fBresolves to\fR directive afterwards. .IP "\fBresolves to \fR\f(BIaddress\fR" 4 .IX Item "resolves to address" Specifies the address to which PTR records should resolve. The address needs to contain \f(CW%DIGITS\fR% exactly once. When answering AAAA queries, \f(CW%DIGITS\fR% will be parsed and converted back to an IPv6 address. .Sp Example: .Sp .Vb 2 \& network 2001:4d88:100e:ccc0::/64 \& resolves to ipv6\-%DIGITS%.nutzer.raumzeitlabor.de .Ve .Sp Example query: .Sp .Vb 2 \& The PTR query 2001:4d88:100e:ccc0:216:eaff:fecb:826 will resolve to \& ipv6\-0216eafffecb0826.nutzer.raumzeitlabor.de .Ve .IP "\fBwith upstream \fR\f(BIaddress\fR" 4 .IX Item "with upstream address" Before answering a PTR query for this network, AllKnowingDNS will ask the DNS server at \fIaddress\fR first, appending .upstream to the query. .Sp Example: .Sp .Vb 3 \& network 2001:4d88:100e:ccc0::/64 \& resolves to ipv6\-%DIGITS%.nutzer.raumzeitlabor.de \& with upstream 2001:4d88:100e:1::2 .Ve .Sp Example query: .Sp .Vb 5 \& 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. \e \& 8.8.d.4.1.0.0.2.ip6.arpa.upstream. at 2001:4d88:100e:1::2 \& and relay the answer, if any. .Ve .SH "DELEGATING ZONES" .IX Header "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. .SS "REVERSE DELEGATION (.ip6.arpa)" .IX Subsection "REVERSE DELEGATION (.ip6.arpa)" .Vb 12 \& $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. \e \& 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. .Ve .SS "FORWARD DELEGATION (.nutzer.raumzeitlabor.de)" .IX Subsection "FORWARD DELEGATION (.nutzer.raumzeitlabor.de)" .Vb 10 \& $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. .Ve .SH VERSION .IX Header "VERSION" Version 1.7 .SH AUTHOR .IX Header "AUTHOR" Michael Stapelberg, \f(CW\*(C`\*(C'\fR .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" Copyright 2012 Michael Stapelberg. .PP This program is free software; you can redistribute it and/or modify it under the terms of the BSD license.