Today it was time to test IPv6 routing on a much bigger scale than any of my previous tests and it took me and a friend a few hours to find a solution to a supposably simple problem.

Ok, first some theory about what we were trying to achieve. In IPv4 world, DHCP server sets client’s IP address, DNS servers, gateway and many other optional parameters and it all works great from one place. However, in IPv6 world, DHCP server doesn’t set your gateway address. Why is that so? Well, I can’t think of a good reason, but I guess this is because of some “architectural” changes in IPv6.

I have known this before and I also had a solution to that problem – mix it with radvd (Router Advertisement Daemon). What does radvd do? It advertises your router and IPv6 prefix to the connected clients and enables them to configure IPv6 much like a DHCPv6. So why can’t we use just one of them? Because radvd also gives your client a gateway address, but it can’t set things like DNS or NTP servers and other DHCP-like parameters.

And this is where we encountered a problem…

It all worked great (and as expected) when we had only one of them working (except that some of the things were missing), but when we started both of them it simply ignored DHCPv6. Ok… so we now need to persuade clients to use both of them to configure their networking and we need to make that on the server-side.

And just how do we do that? Well, after about two hours of searching, I dug into radvd.conf Manpage and what did I see?


AdvManagedFlag on|off

When set, hosts use the administered (stateful) protocol for address autoconfiguration in addition to any addresses autoconfigured using stateless address autoconfiguration. The use of this flag is described in RFC 2462.

Default: off

And after setting this parameter in my radvd configuration file, clients started to pump information from both radvd and DHCPv6.

At the end I would like to recommend Dibbler – a portable DHCPv6 as your DHCPv6 server or relay agent as it really worked out of the box and after a few configuration changes we were ready to roll.