IPv6 subnet assigned but no IPv6 on LAN

Hello!

I have an IPv6 /60 subnet assigned from my provider and at some point in the past the Omnia assigned addresses to my LAN devices as well. I’m not sure what happened (at least a few reboots) but that’s not working anymore.

ifstatus wan6 is reporting:

{
        "up": true,
	"pending": false,
	"available": true,
	"autostart": true,
	"dynamic": false,
	"uptime": 221186,
	"l3_device": "eth1",
	"proto": "dhcpv6",
	"device": "eth1",
	"metric": 0,
	"delegation": false,
	"ipv4-address": [
	],
	"ipv6-address": [
		{
			"address": "xxxx:xxxx:xxxx:xxxx:35aa:13c4:59ae:9657",
			"mask": 128,
			"preferred": 215779,
			"valid": 215779
		}
	],
	"ipv6-prefix": [
		{
			"address": "xxxx:xxxx:xxxx:9b80::",
			"mask": 60,
			"preferred": 215779,
			"valid": 215779,
			"class": "wan6",
			"assigned": {

			}
		}
	],
	"ipv6-prefix-assignment": [

	],
	"route": [
		{
			"target": "::",
			"mask": 0,
			"nexthop": "fe80::1a8b:9dff:fed4:2022",
			"metric": 512,
			"valid": 1798,
			"source": "xxxx:xxxx:xxxx:9b80::\/60"
		},
		{
			"target": "::",
			"mask": 0,
			"nexthop": "fe80::1a8b:9dff:fed4:2022",
			"metric": 512,
			"valid": 1798,
			"source": "xxxx:xxxx:xxxx:xxxx:35aa:13c4:59ae:9657\/128"
		}
	],
	"dns-server": [
		"2001:558:feed::1",
		"2001:558:feed::2"
	],
	"dns-search": [

	],
	"inactive": {
		"ipv4-address": [

		],
		"ipv6-address": [

		],
		"route": [

		],
		"dns-server": [

		],
		"dns-search": [

		]
	},
	"data": {
		"passthru": "xxxx"
	}
}

It looks like there is a /60 subnet available but it’s not being assigned to the LAN (none of the LAN hosts are receiving an IPv6 address in that subnet).

ifstatus lan says:

{
	"up": true,
	"pending": false,
	"available": true,
	"autostart": true,
	"dynamic": false,
	"uptime": 221557,
	"l3_device": "br-lan",
	"proto": "static",
	"device": "br-lan",
	"updated": [
		"addresses"
	],
	"metric": 0,
	"delegation": true,
	"ipv4-address": [
		{
			"address": "10.1.0.1",
			"mask": 24
		}
	],
	"ipv6-address": [

	],
	"ipv6-prefix": [

	],
	"ipv6-prefix-assignment": [
		{
			"address": "fd20:4a9d:8566:1::",
			"mask": 64
		}
	],
	"route": [

	],
	"dns-server": [

	],
	"dns-search": [

	],
	"inactive": {
		"ipv4-address": [

		],
		"ipv6-address": [

		],
		"route": [

		],
		"dns-server": [

		],
		"dns-search": [

		]
	},
	"data": {

	}
}

Any ideas? Internal IPv6 works fine, it seems to work fine from the router itself as well. All relevant settings seem OK:

config interface 'lan'
        option ifname 'eth0 eth2'
        option force_link '1'
        option type 'bridge'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '10.1.0.1'
        option ip6assign '64'

Everything looks OK. If you try to ifdown and ifup wan6, will anything change?

I would also try to comment out the ula_prefix, even though it should not make any difference.

Thanks for the tips @Ondrej_Caletka, unfortunately it doesn’t seem to make a difference. I did “ifdown wan6; ifup wan6” and also removed the ula_prefix - it still does exactly the same as before.

I also rebooted the router numerous times (for other reasons) and that had zero effect as well. THe confusing thing is that this worked fine before (both my internal subnets were receiving a /64 out of my allocated /60) and I have no idea what changed to make it break.

If it worked before, try rolling back to some schnapps snapshot (even to the factory one). You can then return back to the current state so no worry about any loss of configuration. Maybe you will be able to bisect this issue.

Still no idea how it broke or how it worked before, but I fixed it by adding the following configuration in /etc/config/network:

config interface 'lan'
    option ip6assign '64'
    option ip6hint '0' <-- Explicitly assign one of the subnets to this interface

config interface 'guest'
    option ip6assign '64'
    option ip6hint '1' <-- Assign another subnet here

I have no idea whether these are supposed to be required, but they work for me. Hurray! IPv6 works again!