Monday, March 7, 2016

IPv6 wildcard DNS

The use of the colon as an address separator in IPv6 has caused some mild annoyances over the years. Microsoft created unique solution, essentially mapping colons to dashes and putting this in a top-level domain. They chose ipv6-literal.net and implemented this internal to their software.

In the IPv4 world, the utility of having addresses resolvable as hostnames in DNS had sufficient demand that someone set up xip.io. Unfortunately I've never seen such an equivalent for IPv6 addresses, leaving folk to use the bracket notation and hope for the best.


A couple years ago I started exploring the capabilities of PowerDNS. It has a number of backends for storing data, most notably in databases. This makes it handy for building web management tools for DNS so end users don't have to go mucking about with zone files. What eventually caught my eye though was the pipe backend. With this mechanism, you could write to a simple API and have the DNS server return whatever you wanted. The brainwaves crossed and I started coding.

The result of my adventure was ipv6-literal-pdns, a simple co-process that implemented Microsoft's solution of address mapping and exposed it to actual DNS.

I recently completed a rebuild of the VPS that hosts our main website, among many other services. One of these is DNS, which up until this weekend was BIND. Having converted a public-facing authoritative server to PowerDNS, I decided to plumb up my code on a real server and see how it does.

The actual ipv6-literal.net domain is no longer available, so I decided to use my personal domain: v6l.nivex.net. It's much less typing than flyingpenguintech.org, and actually less than ipv6-literal.net too. Behold!

$ host 2001-db8--867-5309.v6l.nivex.net
2001-db8--867-5309.v6l.nivex.net has IPv6 address 2001:db8::867:5309


No comments:

Post a Comment