I have a /48 prefix assigned from the ISP and this has always worked fine for me. Recently I created a couple of inernal/LAN interfaces (using VLANs), mainly to separate the traffic on various home networks, and assigned a /52 sub-prefix to some of them.
Unfortunately the Windows machine hooked up to the port on Omnia seems to receive router advertisements from all the networks, hence breaking local IPv6 connectivity. I think I am doing something wrong - perhaps something I misunderstood about the set-up, but can’t see what that is.
First, the set-up:
config device 'br_lan'
option name 'br-lan'
option type 'bridge'
list ports 'lan0'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
config interface 'lan'
option proto 'static'
option netmask '255.255.255.0'
option _turris_mode 'managed'
option ipaddr '192.168.1.1'
option ip6assign '52'
option ip6hint '0'
option device 'br-lan.5'
config interface 'mgmt'
option proto 'static'
option ipaddr '192.168.2.1'
option ip6assign '52'
option ip6hint '1000'
option netmask '255.255.255.0'
option device 'br-lan.20'
config interface 'dmz'
option proto 'static'
option netmask '255.255.255.0'
option ip6hint '2000'
option ipaddr '192.168.3.1'
option ip6assign '52'
option device 'br-lan.30'
This should cause the machines on the lan
network to receive IPv6 addresses with prefix X:0, machines on the mgmt
would get prefix X:1000, and dmz
would get X:2000, where X
is the prefix assigned by the ISP.
VLANs are set up like this:
config bridge-vlan
option device 'br-lan'
option vlan '5'
list ports 'lan0:t'
list ports 'lan1'
list ports 'lan2:t'
list ports 'lan3'
list ports 'lan4:t'
config bridge-vlan
option device 'br-lan'
option vlan '20'
list ports 'lan0:t'
list ports 'lan2:t'
list ports 'lan4:t'
config bridge-vlan
option device 'br-lan'
option vlan '30'
list ports 'lan0:t'
list ports 'lan2:t'
list ports 'lan4:t'
This is bridge vlan
:
port vlan-id
lan0 5
20
30
lan1 5 PVID Egress Untagged
lan2 5
20
30
lan3 5 PVID Egress Untagged
lan4 5
20
30
br-lan 5
20
30
I.e., lan0
, lan2
and lan4
are all-tagged trunk ports, and lan1
and lan3
are untagged VLAN5 ports, and both these ports have a Windows 11 machine on the other end of the wire.
This is what the Windows ipconfig
shows (X
stands for the provider-assigned /48 prefix):
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : lan
IPv6 Address. . . . . . . . . . . : X::102
IPv6 Address. . . . . . . . . . . : X:0:2944:90d8:6510:4a56
IPv6 Address. . . . . . . . . . . : X:1000:6e43:58e5:769e:72c
IPv6 Address. . . . . . . . . . . : X:2000:bbec:612f:fe:5049
Temporary IPv6 Address. . . . . . : X:0:507f:9ea:db7c:3c78
Temporary IPv6 Address. . . . . . : X:0:5524:bd2f:fe7a:2631
Temporary IPv6 Address. . . . . . : X:0:84cc:b2b6:44f2:db8a
Temporary IPv6 Address. . . . . . : X:1000:ad4c:de8f:174:b09b
Temporary IPv6 Address. . . . . . : X:2000:ad4c:de8f:174:b09b
Link-local IPv6 Address . . . . . : fe80::a167:a916:58ec:bbab%9
IPv4 Address. . . . . . . . . . . : 192.168.1.102
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::da58:d7ff:fe00:3738%9
192.168.1.1
As you can see, the machine autoconfigures SLAAC addresses from all IPv6 configured interfaces on Omnia, despite being connected to lan3/br-lan.5 only.
And indeed, if I run Wireshark on the Windows machine, I can clearly see router advertisements for all the networks (X:0, X:1000 and X:2000) reaching the computer. What is weird is that when I run tcpdump
on br-lan.5, I can only see the correct (X:0) router advertisements. tcpdump
on lan3
shows no router advertisements (but honestly I am not sure if that’s expected or not).
Finally, some ip
command outputs on Omnia (extract):
# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1024
link/ether XX:XX:XX:XX:XX:39 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1508 qdisc mq state UP mode DEFAULT group default qlen 1024
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1024
link/ether XX:XX:XX:XX:XX:39 brd ff:ff:ff:ff:ff:ff
5: lan0@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
6: lan1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
7: lan2@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
8: lan3@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
9: lan4@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
14: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
15: br-lan.5@br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
17: br-lan.20@br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
18: br-lan.30@br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether XX:XX:XX:XX:XX:38 brd ff:ff:ff:ff:ff:ff
# ip -6 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1508 state UP qlen 1024
inet6 xxxx:xxxx:xxxx:xxxx:3738/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1024
inet6 ISP_END::2/64 scope global
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:3739/64 scope link
valid_lft forever preferred_lft forever
14: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 xxxx:xxxx:xxxx:xxxx:3738/64 scope link
valid_lft forever preferred_lft forever
15: br-lan.5@br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 X::1/52 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:3738/64 scope link
valid_lft forever preferred_lft forever
17: br-lan.20@br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 X:1000::1/52 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:3738/64 scope link
valid_lft forever preferred_lft forever
18: br-lan.30@br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 X:2000::1/52 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:3738/64 scope link
valid_lft forever preferred_lft forever
(xxxx:xxxx:xxxx:xxxx
is the same link-local prefix everywhere, X
is the provider assigned /48 prefix)
Any idea what the problem is here? Would it help to force different MAC address for each of the br-lan.5, br-lan.20 and br-lan.30 interfaces? IPv4 seems to be working perfectly fine in this setup.
NB: there is a managed switch behind one of the trunk interfaces (lan0
) and the computers behind that switch (with untagged ports) configure all the SLAAC addresses correctly.