OpenWrt 24.10.0-rc4 - Fourth release candidate

Serious IPv6 bug found:

The problematic part is about the lte_6 interface. It got two IPv6 addresses and two "prefixes delegated", while there should only be one of each.

Protocol: Virtual dynamic interface (DHCPv6 client)
Uptime: 0h 34m 28s
IPv6: 2001:fd8:f0c0:fe65:21e:10ff:fe1f:0/64
IPv6: 2405:8d40:44c2:58ef:21e:10ff:fe1f:0/64
IPv6-PD: 2001:fd8:f0c0:fe65::/64
IPv6-PD: 2405:8d40:44c2:58ef::/64

Only the addresses that begin with 2405:8d40: legitimately belong to the LTE connection. The ones starting with 2001:fd8: come from pppoe-wan, which is a fiber connection.

EDIT: the address came not from the prefix delegated via pppoe-wan, but from the prefix assigned to pppoe-wan, as if OpenWrt was thinking that there is only a single /64 and no PD available.

Some debugging output:

root@OpenWrt:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host proto kernel_lo 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1508 qdisc fq_codel state UP group default qlen 1000
    link/ether d4:6e:0e:fe:72:88 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::d66e:eff:fefe:7288/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether d4:6e:0e:fe:72:87 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::d66e:eff:fefe:7287/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 00:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
    inet 100.79.138.239/27 brd 100.79.138.255 scope global wwan0
       valid_lft forever preferred_lft forever
    inet6 2405:8d40:44c2:58ef:21e:10ff:fe1f:0/64 scope global dynamic noprefixroute 
       valid_lft 603228sec preferred_lft 84828sec
    inet6 2001:fd8:f0c0:fe65:21e:10ff:fe1f:0/64 scope global dynamic noprefixroute 
       valid_lft 2590418sec preferred_lft 603218sec
    inet6 fe80::21e:10ff:fe1f:0/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
6: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether d4:6e:0e:fe:72:87 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.1/24 brd 192.168.10.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet6 2001:fd8:f0c0:fe65::1/64 scope global deprecated dynamic 
       valid_lft 5697sec preferred_lft 0sec
    inet6 2405:8d40:44c2:58ef::1/64 scope global deprecated dynamic 
       valid_lft 5697sec preferred_lft 0sec
    inet6 2001:fd8:f0d7:8b14::1/64 scope global dynamic noprefixroute 
       valid_lft 84884sec preferred_lft 84884sec
    inet6 fd7b:7d49:75e3::1/60 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::d66e:eff:fefe:7287/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
7: eth1.1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default qlen 1000
    link/ether d4:6e:0e:fe:72:87 brd ff:ff:ff:ff:ff:ff
8: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1508 qdisc noqueue state UP group default qlen 1000
    link/ether d4:6e:0e:fe:72:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.254.2/24 brd 192.168.254.255 scope global eth0.2
       valid_lft forever preferred_lft forever
    inet6 fe80::d66e:eff:fefe:7288/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
9: s2s: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
10: pppoe-wan: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp 
    inet 180.190.189.205 peer 180.190.228.9/32 scope global pppoe-wan
       valid_lft forever preferred_lft forever
    inet6 2001:fd8:f0c0:fe65:9861:8d95:585c:eac9/64 scope global dynamic noprefixroute 
       valid_lft 2591631sec preferred_lft 604431sec
    inet6 fe80::9861:8d95:585c:eac9 peer fe80::46f4:77ff:fec2:9362/128 scope link nodad 
       valid_lft forever preferred_lft forever
11: phy0-ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default qlen 1000
    link/ether d4:6e:0e:fe:72:86 brd ff:ff:ff:ff:ff:ff
12: phy0-ap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default qlen 1000
    link/ether d6:6e:0e:fe:72:86 brd ff:ff:ff:ff:ff:ff permaddr d4:6e:0e:fe:72:86
13: phy0-ap0.sta1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UNKNOWN group default qlen 1000
    link/ether d4:6e:0e:fe:72:86 brd ff:ff:ff:ff:ff:ff
root@OpenWrt:~# ip -6 r
default from 2001:fd8:f0c0:fe65::/64 via fe80::46f4:77ff:fec2:9362 dev pppoe-wan proto static metric 512 pref medium
default from 2001:fd8:f0d7:8b14::/64 via fe80::46f4:77ff:fec2:9362 dev pppoe-wan proto static metric 512 pref medium
default from 2405:8d40:44c2:58ef::/64 via fe80::4e54:99ff:fe45:e5d5 dev wwan0 proto static metric 512 pref medium
2001:fd8:f0c0:fe65::/64 dev br-lan proto kernel metric 256 expires 5689sec pref medium
unreachable 2001:fd8:f0c0:fe65::/64 dev lo proto static metric 2147483647 pref medium
2001:fd8:f0d7:8b14::/64 dev br-lan proto kernel metric 256 expires 5686sec pref medium
2001:fd8:f0d7:8b14::/64 dev br-lan proto static metric 1024 pref medium
unreachable 2001:fd8:f0d7:8b14::/64 dev lo proto static metric 2147483647 pref medium
2405:8d40:44c2:58ef::/64 dev br-lan proto kernel metric 256 expires 5689sec pref medium
unreachable 2405:8d40:44c2:58ef::/64 dev lo proto static metric 2147483647 pref medium
fd25:b1c2:efb1::/48 dev s2s proto static metric 110 pref medium
fd7b:7d49:75e3::/64 dev br-lan proto static metric 1024 pref medium
fd7b:7d49:75e3::/60 dev br-lan proto kernel metric 256 expires 5689sec pref medium
unreachable fd7b:7d49:75e3::/48 dev lo proto static metric 2147483647 pref medium
fe80::46f4:77ff:fec2:9362 dev pppoe-wan proto kernel metric 256 pref medium
fe80::9861:8d95:585c:eac9 dev pppoe-wan proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0.2 proto kernel metric 256 pref medium
fe80::/64 dev br-lan proto kernel metric 256 pref medium
fe80::/64 dev wwan0 proto kernel metric 256 pref medium

Look: lte_6 got an IP address and a prefix from my fiber connection!

root@OpenWrt:~# cat /etc/config/network 

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd7b:7d49:75e3::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth1.1'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.10.1'
	option netmask '255.255.255.0'
	option ip6assign '60'
	list ip6class 'local'
	list ip6class 'wan_6'
	# The list is auto-updated,
	# see https://forum.openwrt.org/t/ipv6-wan-fail-over-without-ipv6-nat/146403/66?u=patrakov

config interface 'modem'
	option proto 'static'
	option ipaddr '192.168.254.2'
	option netmask '255.255.255.0'
	option defaultroute '0'
	option delegate '0'
	option device 'eth0.2'
	option mtu '1508'

config interface 'lte'
	option proto 'ncm'
	option pdptype 'IPV4V6'
	option ipv6 'auto'
	option peerdns '0'
	option metric '90'
	option apn 'internet'
	option username 'lte'
	option password 'lte'
	option delay '20'
	option device '/dev/cdc-wdm0'
	option mode 'preferlte'
	list dns '76.76.2.0'
	list dns '76.76.10.0'
	list dns '2606:1a40::'
	list dns '2606:1a40:1::'
	option dns_metric '90'

config interface 'wan'
	option device '@modem'
	option proto 'pppoe'
	option username '<censored>'
	option password '<censored>'
	option ipv6 'auto'
	option keepalive '0 1'
	option peerdns '0'
	list dns '8.8.8.8'
	list dns '8.8.4.4'
	option mtu '1508'
	option metric '80'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '2 3 4 5 0t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '1 6t'

config device
	option name 'eth0'
	option mtu '1508'

config interface 's2s'
	option proto 'wireguard'
	option private_key '<censored>'
	option mtu '1400'
	option peerdns '0'
	option metric '110'
	option delegate '0'
	option nohostroute '1'
	option listen_port '50056'

config wireguard_s2s
	option description '<censored>'
	option public_key '<censored>'
	list allowed_ips '0.0.0.0/0'
	list allowed_ips '::/0'
	option endpoint_host '<censored>'
	option endpoint_port '51822'
	option persistent_keepalive '30'

config route
	option interface 's2s'
	option target '192.168.4.0/24'
	option source '192.168.10.1'

# And a few other routes via s2s

config route6
	option interface 's2s'
	option target 'fd25:b1c2:efb1::/48'

Unfortunately, it is too late to provide the output of logread, as DAWN spammed the log too much and pushed the messages that would be relevant out of the buffer.

Restarting the lte interface got rid of the wrong addresses and prefixes on wwan0 (lte_6).