IPv6 renew issue with Fiber7 and OpenWrt

Since using Fiber7, I was having issues with IPv6 connectivity using OpenWrt. Debugging revealed that Init7’s IPv6 server sets the DHCPv6 Unicast option along with a unicast address, but does not respond when using unicast addressing to renew the lease 20 minutes later. The lease then expires and breaks IPv6 connectivity.

A DHCPv6 server can choose to announce the unicast option, but if announced, the server is supposed to reply to unicast requests. So this seems to be a misbehaving DHCPv6 server. Luckily, the DHCPv6 client shipped with OpenWrt 18.06 now comes with a workaround (odhcp6c: add noserverunicast config option for broken DHCPv6 servers). The option noserverunicast ignores any advertised server unicast addresses and continues using multicast. Init7’s DHCPv6 server seems to answer renew requests using multicast just fine, providing stable IPv6 connectivity.

To enable this workaround, add the following line to the IPv6 WAN interface:

config interface 'wan6'
        ...
        option noserverunicast '1'

Then restart your router.

Alternatively, use uci to set the configuration and reconnect the interface.

uci set network.wan6.noserverunicast=1
uci commit network
Background

The problem seems to appear since LEDE 17.01, where the optional unicast support has been added to odhcp6c for the first time (see commit dhcpv6: server unicast option support). I reported the problem in early May, unfortunately without much response from Init7. It seems that only after Turris Omnia Router started to show the same behavior, the problem got recognized and lead to Ticket #12863 Outage: DHCPv6 Issues with Prefix Delegation. Downgrading is not easily possible since my router has been first supported with LEDE 17.01. The only way to achieve a stable IPv6 connectivity was by compiling my own version of odhcp6c (with reverted unicast option support).

However, in OpenWrt 18.06 somebody (likely another user) took the time to implement a command line option in odhcp6c to workaround the issue (see odhcp6c: add option to ignore Server Unicast option and odhcp6c: add noserverunicast config option for broken DHCPv6 servers).

I find Init7 an excellent provider. However, I feel with this particular issue they could have resolved it faster (e.g. before OpenWrt users implement a workaround). This is exactly the type of issue that hampers IPv6 adoption. People lose trust in IPv6 when it behaves erratically.

Leave a Reply

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