Idea: IPv6 Dynamic Prefix

For dynamic IPv4 addresses, dynamic DNS services such as Dyn or No-IP are well-known. If an ISP issues a single dynamic IPv4 address every 24 hours (or the like), the router or any other device registers the IPv4 address for a DNS record. With port-forwardings on the router, several services on different clients can be accessed.

Since there are some ISPs that offer dynamic IPv6 prefixes as well, I have a suggestion on how to optimize the “dynamic DNS” service for several IPv6 addresses and names. The main idea is to update only the IPv6 prefix, while the host IDs are static configured on the DNS server. This limits the DNS updates and expands the usage of DNS names even for devices that have no “DynDNS update client” built-in.

A straightforward solution for several IPv6 hosts with dynamic IPv6 addresses would be to have a DNS name for every host and to update every single name from each individual host. This would require that each host itself is capable of updating the DynDNS account. However, only a few devices such as Linux servers or Windows machines will be able to do this update. Many other devices such as printers, network-cameras, etc. do not have the possibility to update a DynDNS record.

Basic Idea: One Update – Many Names

Normally, servers have static IPv6 address. That is, the interface ID such as the EUI-64 “ff:fe” ID is static, too. If a user stores his interface IDs from his devices in a DNS server, the only portion which is missing for a full IPv6 address is the prefix.

The prefix is split into the global routing prefix, allocated from the ISP, and the subnet ID, set by the user. While the subnet ID remains static, the IPv6 prefix can be updated by a single device, e.g., the router or any other device in the network.

With this three information (dynamic prefix, subnet ID, interface ID) the DNS server can build the complete IPv6 address.

This is is quick sketch for this idea:

IPv6 Dynamic Prefix

If I would implement such a system, I would call it dynprefix.net. ;)

The idea of using only the interface ID is not new. For example, interface IDs are used on IPv6 ACLs on the german router AVM FRITZ!Box: FRITZ!Box IPv6 Freigaben Interface-ID

Sample DNS Entries on the DNS Server

This is how the DNS entries on the DNS server would look like. In this example, the current IPv6 prefix for that network is 2001:db8:0:0::/56.

DNS NameDyn Prefix
*Update-from-Router*
Subnet IDInterface ID
e.g. /56e.g. 8 Bits64 Bits
host-a.dynprefix.net2001:db8:0:0::00::1
host-b.dynprefix.net2001:db8:0:0::00::2
host-c.dynprefix.net2001:db8:0:0::ab221:9bff:fecc:ab07
host-d.dynprefix.net2001:db8:0:0::ff::d:80

[Update] Already existing Services

After a deeper search on the Internet and a mailing on the ipv6-ops mailing list I found several services and scripts that use the same idea as above mentioned:

  • D.U.I.A. – Dynamic Updates for Internet Addressing: IPv6 for LAN Feature
  • HZNET Tools: gen6dns, generates static DNS records (AAAA and PTR)

3 thoughts on “Idea: IPv6 Dynamic Prefix

  1. I think dynv6.com already implements this. You can update your prefix once and it derives IPv6 addresses from it for configured subdomains.

  2. From what i understand your assumtion is that host IDs can be configured static on the server. But what about temporary ipv6 addresses where there’s no relation between mac address, eui-64 and host ID?
    D.U.I.A. have treated this case this way:
    – on web interface you define static pair (hostname – mac address)
    – on router you get dynamic pair (ipv6 address – mac address)
    Duiadns daemon that runs on router matches hostname with ipv6 address (rather it is static, dynamic, temporary, etc.) and send AAAA DNS updates with that information.

  3. The dynamic DNS service of “feste-ip.net” also implements this feature, that you can update only one hostname (per subnet) and several subdomain AAAA records, which are associated with their specific static host id part, are also updated to the new prefix.

Leave a Reply

Your email address will not be published. Required fields are marked *