Everybody who starts (consciously) integrating IPv6 in their network has to decide how to provision IPv6 addresses, default routes and recursive DNS server (RDNSS) information to all clients.

To make this simple and automated, IPv6 includes SLAAC (StateLess Address Auto Configuration). This is a good thing, but it’s stateless, so you no longer manage your IP address provisioning centrally (as you did with DHCP in IPv4) and thus lose traceability (i.e. which node has which IP at any given time). Moreover, SLAAC supports provisioning of RDNSS information only since RFC 6106 (November 2010), and not everybody supports this. For example, Microsoft doesn’t, and it doesn’t seem to have any intention of changing this.

Many believe this is reason enough to forget about SLAAC – or at least try to – and use DHCP just like in the good old IPv4-only days. Indeed, there is such a thing as DHCPv6, but unfortunately it doesn’t provision default router information, and, once again, not everybody supports it. For example, Android doesn’t, and it doesn’t seem to have any intention of changing this.

This means most of us will end up with a mixture of SLAAC and DHCPv6 (either the stateless or stateful variant), which is not a problem in theory because IPv6 Router Advertisements (the ICMPv6 message type used for SLAAC) have flags for that.

ICMPv6 Type 134 (Router Advertisement) flags:

M – Managed Address Configuration. DHCPv6 is available for IPv6 address allocation.

O – Other Configuration. Other configuration information is available through DHCPv6 (e.g. the RDNSS).

Flags in prefix information option:

A – Address Configuration flag. The prefix can be used for stateless address configuration (SLAAC).

L – On-Link flag. The prefix can be used for on-link determination (other IPv6 addresses with the same prefix are on the same L2 subnet).

But how do implementations behave if the information provided by Router Advertisement conflicts with that from DHCPv6 due to human error, conflicting default settings or an attacker? And how do such conflicts affect network stability and security?

This is what the talk from Enno Rey at the last Tech Talk of the Swiss IPv6 Council in Zurich was about. Enno presented the results of the research he and his team conducted in their IPv6 lab at ERNW in Heidelberg.

Some examples of the findings:

Windows 8.1 configures IPv6 address from DHCPv6, despite the fact that the Management flag (M) in the Router Advertisement is not set.

If both SLAAC and DHCPv6 provide RDNSS information and M/A/O flags are set, Fedora, Centos and OS X configure RDNSS information from both sources, Ubuntu only from the RAs, and Windows only from DHCPv6.

If two routers send RAs with conflicting M/O flags, basically all operating systems behave differently.

The conclusion, in short, is that this is yet another area of IPv6 where we can’t assume that things just work as expected. Also, a lack of IPv6 knowledge and testing efforts can lead to stability and security problems in your network later on. Without a good understanding of IPv6, it might be hard to get to the bottom of the cause.

Slides (PDF) from the Tech Talk and a corresponding whitepaper (PDF) are available online.

IPv6 Business Conference in Zurich – 18.6.2015

Enno Rey will also speak at the upcoming IPv6 Business Conference in Zurich. With two parallel tracks of IPv6 talks, the conference is a great opportunity to update your knowledge and meet the right people, and SWITCH clients receive a CHF 100 discount (just use the discount code “Switch-Discount” when you register).

By the way: you can find an interview with Enno Rey, among other things founder of the Troopers Security Conference, on the topic of IPv6 on the SWITCH website.

IETF-Draft: DHCPv6/SLAAC Address Configuration Interaction Problem Statement: draft-ietf-v6ops-dhcpv6-slaac-problem-03