• Welcome to Hurricane Electric's IPv6 Tunnel Broker Forums.

Covering large IPv6 prefixes with reverse and forward DNS

Started by castorw, January 12, 2015, 07:26:44 AM

Previous topic - Next topic

castorw

Hello everybody,

lately I got into covering my /64 blocks with mainly rDNS. Addresses are assigned using ND/RA so they basically are random. Covering block this large is not possible using conventional zone file based solutions. So I developed a special DNS server made for this purpose. Please feel free to use, modify, distribute, pull request or issue report.

Also I would be grateful for any feedback for this solution.

Application is coded in python and is fully available here: https://github.com/castorw/large6-named

mattwilson9090

What do you mean by "covering blocks"?

Is this special DNS server written entirely from scratch, or is it a fork from another DNS implementation? Other than this additional features how is it different from the latest iterations of BIND, or even Windows DNS?
Matt Wilson

castorw

Hi,
by "block" I mean prefix (segment). I might have not written this one much correctly. Sorry about that.

This server is written from scratch using mainly python libraries dnslib and ipaddress. BIND nor Windows DNS do not support dynamic response to queries based on pre-defined patterns. The /64 IPv6 prefix is 2^64 addresses large, which is way more than quite enough (18 446 744 073 709 551 616 to be precise). You can do the math and calculate how much disk space would it take create records for every IPv6 address in such a range. Other than that, I don't think it would be possible for i.e. BIND to load such a zone file and work correctly.

As far as I understand, /64 prefixes are a standard for end-customer delegation in IPv6. When you need all these hostnames to correctly have a hostname associated with it, you need to do it in a dynamic fashion (not static record based). This server allows you to:

  • create dynamic hostname for addresses (eg. *.ipv6.example.com, where * is one of currently two supported formats)
  • create static hostname for specific entries (eg. gw.ipv6.example.com, for the gateway IP (if is used))
  • etc...
You can lookup the full feature list here: https://github.com/castorw/large6-named/wiki

Regards,
castor