Major issues with getting IPv6 to work

I am having problems getting IPv6 to work under OpenWRT, I want to run it DHCPv6 stateful (like DHCPv4), but for some reason setting it to that (or stateless) in the LAN interface page will stop clients having internet access, bar having a valid (as far as I can see) IPv6 address and their DNS requests being seen and responded to by the router. The only way I have got it to work is with the stateless+stateful setting, but that seems to just decide to stop working after an hour or so (and I have to disconnect the client to get it working again).

/etc/config/network

config interface 'lan'
        option type 'bridge'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '192.168.77.7'
        option ifname 'eth0.1'
        option ip6assign '56'

/etc/config/dhcp

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option ra 'server'
        option instance 'dnsmasq'
        option ra_default '1'
        option dhcpv6 'server'
        option ra_management '1'

What would be going wrong?

lots of clients just don't support dhcpv6 like all Android devices for example.

1 Like

I know that some fool at google has decided that DHCPv6 is the work of the devil and that Android users should suffer, but the problems I am having are with a Windows 10 client!

Hi,

I'm ok with the default stateless+stateful setting so I don't comment on that.
But for the problem with losing the IPv6 connectivity after a certain time, I had a similar issue activating my IPv6.
Seems there's a bug somewhere that RA updates from your ISP is not updating route validity time.

Can check with ifstatus wan6 whether validity timer just expires and will not get updated after ISP RA announcements;

root@R7800:~# ifstatus wan6
{

...

        "ipv6-prefix-assignment": [

        ],
        "route": [
                {
                        "target": "::",
                        "mask": 0,
                        "nexthop": "fe80::205:73ff:fea0:732",
                        "metric": 512,
                        "valid": 1798,

Once the last "valid" field reach 0 the IPv6 connectivity is gone. My ISP is announcing RA every 3sec with 1800sec lifetime so I had a drops after every 30min. Restart of the box restored IPv6 connectivity for that 30min.

In some other thread here I found the workaround for this by setting wan interface to allmulti.
So now I've added below command in my rc.local and all works ok.

ifconfig eth0.2 allmulti

Please don't ask me any cons of this setup :wink: as I just followed instructions and findings by others.

Br,
-Gram-

I do not think that is it, I still have have time left in the "valid" field.

Yeah, can be something else if that valid field is updated correctly after each RA from ISP.

What happens when it stops working is very odd.
I can ping the LAN IPv6 address from the PC, I can ping the PC's publicly routerable address from the router, stubby (which is what I use for DNS over TLS) seems to be able to make a connection to cloudflare's IPv6 DNS servers, but dnsmasq does not get any IPv6 addresses returned to it and I can not ping public IPv6 addresses from the PC.

I'm using also stubby for DNS over TLS and Cloudflare DNS server. Only oddity (most likely misconfiguration somewhere) I have is that Client IPv6 DNS requests are using IPv4 DoT toward Cloudflare servers unless I monitor with stubby -l. Client IPv6 connectivity works ok though and nothing is sent out from router using port 53.

Now it has gone from working for a little while after I reconnect to not working at all, even after a router reboot (and on both Windows and Ubuntu)!

  • What versions of OpenWrt are you running?
  • Who is your IPv6 provider (a tunnelbroker or your ISP)?

Possibly your ISP is borken

I am using 18.06.02 and IPv6 is coming from my ISP

Edit: After changing the LAN assignment length to /64 instead of /56 and removing always announce default router, I now have connection again, but only for a little while before it stops.
To get the connection back I have tried restarting odhcpd, refreshing IPv6 leases, shutting down and restarting the WAN connection, disconnecting and reconnecting the client to the router and even using other computers with different WiFI adaptors The only way I have found to get connection again is to reboot the router!

I also do not think it is a routing table issue, I have looked at it both when it was working and when it was not and I see no differences.

I have now set the LAN interface's Router Advertisement-Service and DHCPv6-Service to "Hybrid" and that does give me IPv6 for a bit longer, but after a while the PC loses it's IPv6 gateway (which is fixed with a reconnection)

Just in case anyone else has this problem, I have managed to fix it by setting

 option authoritative '1'

In /etc/config/dhcp
I had turned it off when trying to setup split routing, thinking it was something to do with DNS (it is in fact a DHCP option).

Strange, this is enabled by default and it is a dnsmasq-specific option, so it should not be related to DHCPv6 which is managed by odhcpd.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.