I have a routed /64 from my ISP and I am running radvd. My clients (Linux, Windows) are working well without any additional configuration when they get plugged into the router. They all assign themselves unique addresses with the ISPs /64 prefix via SLAAC for both temporary and permanent(1) address assignment.

I am not running DHCPv6 and I don't intend to. As I have learned here, it is quite useless for SLAAC clients unless they have special configuration to use the assigned DHCP address because they will most likely ignore it by default(2) which is fine and preferred anyway. I absolutely do not want to have to do any work on "stock" client machines that plug into the network.

So then, point (1) above: the SLAAC IPv6 addresses the the clients use are not really permanent. Putting these in Bind for DNS AAAA records works ... for a while. This is the crux of my problem.

I am unable to figure out how to have the DNS server populate its records based on SLAAC IPs.


1) Can radvd run a script on an RA and then take this to step 2 ...

2) I know from the previous step, that I have a new FE80 address for a new client. How can I get that client's global IPv6 address that it assigned itself using his FE80 address?

3) Then, I would like to update the Bind DNS record with his global IPv6 address obtained in step 2.

The above stuff that I am trying to accomplish seems like it should be plastered all over the Internet - I am struggling trying to figure out what I am doing wrong that makes my use-case so rare. Is there already a mechanism that automatically accomplishes this that I am missing (keeping in mind the DHCPv6 is out of the question)?

Regards and Thanks

(2) SLAAC Ubuntu clients definitely ignore DHCPv6 assignments even when radvd tells them about it. In fact, Ubuntu (and maybe more), even has an old bug when used in this configuration where it actually will not add a route thus rendering the connection useless without some manual intervention. I assume this bug is very low priority since DHCPv6 in conjunction with radvd is not really the recommended solution anyway and I am perfectly fine with that.

  • I suggest trying to figure out why SLAAC-assigned addresses aren't as permanent in your case as they're normally supposed to be. – grawity Jul 19 '18 at 14:18

Radvd sends out multicast messages with network information, it doesn't get replies back from clients about what they do with that information. So (1) doesn't work.

Link-local addresses (the fe80: addresses) are not related to the global unicast addresses that a client uses. Step (2) is therefore also not possible.

The common solutions to what you want to do are:

  • Use SLAAC and DHCPv6 in parallel. The DHCPv6 based addresses are put in DNS by the DHCPv6 server for connections towards the client, and the SLAAC addresses don't get put in DNS to maintain the privacy of outbound connections from the client.
  • Use DHCPv6 without SLAAC (turn off the A flag in the RA) and let the DHCPv6 server put the addresses in DNS. Android based devices will not work in such an environment though, so not a good idea.
  • Use SLAAC and let the client put its own addresses in DNS. In managed environments (I remember this from long ago in the Win2k and Win2k3 era) this can be configured automatically.

Besides this you can also script things on devices where you can see both the MAC address and the IPv6 addresses used on the network, for example on switches and the default gateway router. You could write a script that monitors which IPv6 addresses are being used, look at the MAC address to determine which physical device it is, look up the hostname for that device in a database and then update the DNS based on that. I don't think there is standard software that will do that for you though.

  • The problem that I am dealing with is that SLAAC and DHCPv6 do not compel the client to use the DHCP address - this was described in detail in the link I put in my original question. One of the key requirements is to not do any configuration on the client. All I want to do is capture that SLAAC address from the client and put it in the DNS. That is why I was curious if it was possible to ask a client what its address is by sending some kind of ping to its LL address. That said, your comment about the MAC approach may be workable. – ts90 Jul 24 '18 at 1:04

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.