rdns

command module
v0.0.0-...-ea1ccbb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

README

rdns

rdns provides reverse DNS for IPv6 networks. It is a DNS server that serves PTR and AAAA records for an IPv6 subnet, and the corresponding authoritative NS records.

Setup

  • Run rdns somewhere serving on port 53 (set flags appropriately).
  • Ask your upstream IPv6 provider to create an ip6.arpa. NS record for your subnet that points to your rdns instance.
  • Create an NS record for your subdomain (eg, v6.example.com) that also points to your rdns instance.
Command-line flags

rdns is configured with command-line flags:

  -domain string
        domain suffix for generated domain name (default ".v6.example.com.")
  -host_prefix string
        prefix for generated host name (default "ip-")
  -listen address
        DNS server listen address (default ":53")
  -network subnet
        subnet for which to serve ip6.arpa records (default "fe80::/64")
  -ns server
        name server for NS responses (default "ns.example.com.")
  -ttl seconds
        answer TTL in seconds (default 3600)

Demo

Here are a few dig queries against rdns running with its default flags:

$ dig -x fe80::f00d

;; QUESTION SECTION:
;d.0.0.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. IN PTR

;; ANSWER SECTION:
d.0.0.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. 3600 IN PTR ip-f00d.v6.example.com.


$ dig -t AAAA ip-f00d.v6.example.com

;; QUESTION SECTION:
;ip-f00d.v6.example.com.                IN      AAAA

;; ANSWER SECTION:
ip-f00d.v6.example.com. 3600    IN      AAAA    fe80::f00d


$ dig -t NS 0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa.

;; QUESTION SECTION:
;0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. IN NS

;; AUTHORITY SECTION:
0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. 3600 IN NS ns.example.com.

Acknowledgements

I made this because I wanted to serve reverse DNS for my IPv6 subnet. The first option I tried was AllKnowingDNS, for which there is a package on my Debian system, but it failed with a Perl runtime error due to a missing method on some object. Rather than try to debug Perl code I took the opportunity to learn more about DNS and write my own. It was a very informative experience, and was quite straightforward thanks to Miek Gieben's excellent dns package.

This code is Copyright 2022 Google Inc. and is Apache 2.0 licensed.

Documentation

Overview

rdns is a DNS server that serves PTR and AAAA records for an IPv6 subnet, as well as the associated authoritative NS records.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL