IPv6 bridge routing issue on boot
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 18 Oct 2021 18:08:30 UTC
I am running into some weird behavior with bridge devices and IPv6 on
Boot. I have a system with three bridge devices 2 of which get IPv6
addresses from DHCPv6 and one that is statically assigned. The two
bridges that are configured by dhcpd function fine. The bridge that is
statically addressed comes up, but the directly connected network route
doesn't get added.
# uname -a
FreeBSD router 13.0-RELEASE-p4 FreeBSD 13.0-RELEASE-p4 #0: Tue Aug 24 07:33:27 UTC 2021 root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC
amd64
# ifconfig -a -g bridge
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 58:9c:fc:10:ff:d5
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::17bf:5f9b:57c1:8d65%bridge0 prefixlen 64 scopeid 0x6
inet6 xxxx:xxxx:4b7f:2100::1 prefixlen 64
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: igb3 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 4 priority 128 path cost 2000000
member: igb2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 3 priority 128 path cost 2000000
member: igb1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 2 priority 128 path cost 2000000
groups: bridge
nd6 options=1<PERFORMNUD>
jailpub: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 58:9c:fc:10:ff:b1
inet6 fe80::b559:d5ee:5947:4033%jailpub prefixlen 64 scopeid 0x7
inet6 xxxx:xxxx:4b7f:2101::1 prefixlen 64
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: vwpuba flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 9 priority 128 path cost 2000
groups: bridge
nd6 options=1<PERFORMNUD>
jailpriv: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 58:9c:fc:10:a3:14
inet6 fd09:fce8:b9e8:7d96::1 prefixlen 64
inet6 fe80::5a9c:fcff:fe10:a314%jailpriv prefixlen 64 scopeid 0x8
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: vwpriva flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 11 priority 128 path cost 2000
groups: bridge
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
# netstat -6 -r -n
Routing tables
Internet6:
Destination Gateway Flags Netif Expire
::/96 ::1 UGRS lo0
default fe80::201:5cff:fe95:4e46%igb0 UG igb0
::1 link#5 UHS lo0
::ffff:0.0.0.0/96 ::1 UGRS lo0
xxxx:xxxx:4002:300::/64 fe80::201:5cff:fe95:4e46%igb0 UG igb0
xxxx:xxxx:4002:300:b971:8222:f615:cdbb link#1 UHS lo0
xxxx:xxxx:4b7f:2100::/64 link#6 U bridge0
xxxx:xxxx:4b7f:2100::/56 ::1 UGR lo0
xxxx:xxxx:4b7f:2100::1 link#6 UHS lo0
xxxx:xxxx:4b7f:2101::/64 link#7 U jailpub
xxxx:xxxx:4b7f:2101::1 link#7 UHS lo0
fd09:fce8:b9e8:7d96::1 link#8 UHS lo0
fe80::/10 ::1 UGRS lo0
fe80::%igb0/64 link#1 U igb0
fe80::2e0:67ff:fe23:2878%igb0 link#1 UHS lo0
fe80::%lo0/64 link#5 U lo0
fe80::1%lo0 link#5 UHS lo0
fe80::%bridge0/64 link#6 U bridge0
fe80::17bf:5f9b:57c1:8d65%bridge0 link#6 UHS lo0
fe80::%jailpub/64 link#7 U jailpub
fe80::b559:d5ee:5947:4033%jailpub link#7 UHS lo0
fe80::%jailpriv/64 link#8 U jailpriv
fe80::5a9c:fcff:fe10:a314%jailpriv link#8 UHS lo0
ff02::/16 ::1 UGRS lo0
Both jailpub and jailpriv have /64 routes. There is no route for
fd09:fce8:b9e8:7d96::/64.
If I do
# /etc/rc.d/netif restart jailpriv
# netstat -rn6
Routing tables
Internet6:
Destination Gateway Flags Netif Expire
::/96 ::1 UGRS lo0
default fe80::201:5cff:fe95:4e46%igb0 UG igb0
::1 link#5 UHS lo0
::ffff:0.0.0.0/96 ::1 UGRS lo0
2600:6c67:4002:300::/64 fe80::201:5cff:fe95:4e46%igb0 UG igb0
2600:6c67:4002:300:b971:8222:f615:cdbb link#1 UHS lo0
2600:6c67:4b7f:2100::/64 link#6 U bridge0
2600:6c67:4b7f:2100::/56 ::1 UGR lo0
2600:6c67:4b7f:2100::1 link#6 UHS lo0
2600:6c67:4b7f:2101::/64 link#7 U jailpub
2600:6c67:4b7f:2101::1 link#7 UHS lo0
fd09:fce8:b9e8:7d96::/64 link#8 U jailpriv
fd09:fce8:b9e8:7d96::1 link#8 UHS lo0
fe80::/10 ::1 UGRS lo0
fe80::%igb0/64 link#1 U igb0
fe80::2e0:67ff:fe23:2878%igb0 link#1 UHS lo0
fe80::%lo0/64 link#5 U lo0
fe80::1%lo0 link#5 UHS lo0
fe80::%bridge0/64 link#6 U bridge0
fe80::17bf:5f9b:57c1:8d65%bridge0 link#6 UHS lo0
fe80::%jailpub/64 link#7 U jailpub
fe80::b559:d5ee:5947:4033%jailpub link#7 UHS lo0
fe80::%jailpriv/64 link#8 U jailpriv
fe80::5a9c:fcff:fe10:a314%jailpriv link#8 UHS lo0
ff02::/16 ::1 UGRS lo0
This route
fd09:fce8:b9e8:7d96::/64 link#8 U jailpriv
shows up and everything works.
My /etc/rc.conf contains
dhclient_program="/usr/local/sbin/dhcpcd"
ifconfig_igb0="DHCP"
ifconfig_igb0_ipv6="up"
ifconfig_igb1="up"
ifconfig_igb2="up"
ifconfig_igb3="up"
cloned_interfaces="bridge0 bridge1 bridge2 epair0 epair1"
ifconfig_bridge0="inet 192.168.1.1 netmask 255.255.255.0 addm igb1 addm igb2 addm igb3 up"
ifconfig_bridge1="up"
ifconfig_bridge1_name="jailpub"
ifconfig_bridge2_name="jailpriv"
ifconfig_epair0a_name="vwpuba"
ifconfig_epair0b_name="vwpubb"
ifconfig_epair1a_name="vwpriva"
ifconfig_epair1b_name="vwprivb"
ifconfig_vwpriva="up"
ifconfig_vwpuba="up"
ifconfig_jailpub="addm vwpuba up"
ifconfig_jailpriv="addm vwpriva up"
ifconfig_jailpriv_ipv6="inet6 fd09:fce8:b9e8:7d96::1/64 auto_linklocal"
Has anyone seen this and am I doing something wrong or is this a bug.
Figured I should check before filing a bug report.