IPv6 routing between WAN and LAN fails after a while

I have a pretty vanilla router configuration on an older Kickstarter Omnia, which I just reflashed with the latest medkit. I recently switched to a new provider with IPv6 support. With ds-lite disabled for wan, the interface gets a proper (though dynamic) IPv4 and an IPv6 through DHCP. It also gets a /56 IPv6 prefix, of which I delegate a /64 prefix to br-lan and another /64 to br-guest-turris. Network devices on LAN get multiple IPv6 addresses from the router through DHCP and SLAAC, among which also global unicast addresses from the delegated prefix.

Pinging the router from an external source works initially to both the /128 IPv6 address of the wan6 interface and the ::1/64 address on br-lan. Pinging LAN devices also works. Ping -6 google.com from LAN also works.

The problem: after a few hours IPv6 routing between WAN and LAN quits working. I can still ping the router from outside on its /128 WAN address, but none of the /56 delegated prefix addresses work anymore. Ping -6 google.com from LAN also fails. In the mean time IPv4 NAT and port forwards work. /etc/init.d/network restart quickly solves the issue for a few hours.

How do I go about debugging this?

I had a similar IPv6 issue years ago, but I gave up after some time.

I failed to even figure out whether it’s Omnia’s fault or the ISP’s. Since the IPv6 prefix was static in my case (even though obtained through DHCPv6), I just configured it as static and it’s been solid for years since. (IPv4 is always static for my connection; CGNAT with fixed 10.x.y.z IP)

Man, that does not sound healthy. I will give static config a try, but I am open to other suggestions too.

It’s more like I had a simple workaround. And I also don’t know DHCP and had lots of non-Turris things to fix.

This sounds like an issue of some upstream router stopping forwarding the delegated prefix after some while. The problem is very likely not in Omnia. You can try tracerouting it from the outside and see where your traceroute ends once it breaks.

Probably the only solution would be to confront the ISP.

ubuntu@ip-172-31-25-68:~$ traceroute6 home.elod.me
traceroute to home.elod.me (2a02:a58:8474:8300::1) from 2a05:d014:708:5e00:d9a6:ca5e:2ba5:58d6, 30 hops max, 24 byte packets
 1  2620:107:4000:2210:8000:0:6396:133b (2620:107:4000:2210:8000:0:6396:133b)  1.7799 ms  0.7377 ms  0.7397 ms
 2  2620:107:4000:cfff::f201:6754 (2620:107:4000:cfff::f201:6754)  0.6170 ms  0.8418 ms  0.4648 ms
 3  2620:107:4000:cfff::f201:6425 (2620:107:4000:cfff::f201:6425)  22.8583 ms  9.5561 ms  9.6579 ms
 4  2a01:578:0:8002::21 (2a01:578:0:8002::21)  1.2803 ms  0.5943 ms  0.9604 ms
 5  ae116-0.ffttr6.frankfurt.opentransit.net (2001:688:0:3:8::1bf)  1.0987 ms  0.9308 ms  0.8624 ms
 6  bundle-ether305.buctr1.bucuresti.opentransit.net (2001:688:0:2:1::9)  27.0459 ms  26.7820 ms  26.7282 ms
 7  2001:67c:128c::b6 (2001:67c:128c::b6)  29.1948 ms  29.1852 ms *
 8  2a02:a58:110:5::1 (2a02:a58:110:5::1)  33.8799 ms  33.7494 ms  33.8479 ms
 9  2a02:a58:8474:8300::1 (2a02:a58:8474:8300::1)  35.8603 ms  35.8679 ms  35.8150 ms
ubuntu@ip-172-31-25-68:~$ traceroute6 home.elod.me
traceroute to home.elod.me (2a02:a58:8474:8300::1) from 2a05:d014:708:5e00:d9a6:ca5e:2ba5:58d6, 30 hops max, 24 byte packets
 1  2620:107:4000:2210:8000:0:6396:1335 (2620:107:4000:2210:8000:0:6396:1335)  1.5315 ms  8.6492 ms  0.8465 ms
 2  2620:107:4000:cfff::f201:66c8 (2620:107:4000:cfff::f201:66c8)  0.5568 ms  0.7538 ms  0.4476 ms
 3  2620:107:4000:cfff::f201:6425 (2620:107:4000:cfff::f201:6425)  9.6847 ms  9.3749 ms  9.5316 ms
 4  2a01:578:0:8002::47 (2a01:578:0:8002::47)  1.2915 ms  0.7543 ms  1.2594 ms
 5  ae117-0.ffttr7.frankfurt.opentransit.net (2001:688:0:3:3::47)  1.1323 ms  1.3763 ms  1.0477 ms
 6  bundle-ether305.buctr1.bucuresti.opentransit.net (2001:688:0:2:1::9)  27.0696 ms  26.9391 ms  26.9266 ms
 7  2001:67c:128c::b6 (2001:67c:128c::b6)  29.4771 ms *  29.0707 ms
 8  2a02:a58:110:5::1 (2a02:a58:110:5::1)  34.0559 ms  34.0759 ms  33.7458 ms
 9  2a02:a58:110:5::1 (2a02:a58:110:5::1)  33.8250 ms !H  33.8431 ms !H  33.8695 ms !H

It’s either the last router stopped routing OR the Omnia is not responding on ICMP echo.