Interface randomly assigned ipv6 address on boot - ElectricEel 24.10.1

Hey guys, I finally decided to try updating to 24.10.1 - after boot however I notice that server is unreachable. My main connection is through bridge ‘br0’ which contains ‘enp37s0’

Whenever the server boots ‘enp37s0’ randomly get assigned an ipv6 address. Doing an ifconfig enp37s0 inet6 del *addresshere* immediately makes the server reachable… until reboot.

Bit of a PITA. I might be looking in the wrong place, because sometimes I do have to bring br0 & enp37s0 down, then up, then delete the rando ipv6 address.

I have no clue where it is coming from or why. GUI, once reachable confirms that I don’t have anything set to autoconfigure for enp370s:

ifconfig output after deleted ipv6 on enp37s0 in case I’m overlooking something:

 ifconfig                                             
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.149  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::#########  prefixlen 64  scopeid 0x20<link>
        inet6 2607:fea8:f########## prefixlen 64  scopeid 0x0<global>
        ether ae:90:9d:e0:43:76  txqueuelen 1000  (Ethernet)
        RX packets 3946  bytes 1078748 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1108  bytes 239782 (234.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp37s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:23:a4:0e:01:82  txqueuelen 1000  (Ethernet)
        RX packets 4183  bytes 1176185 (1.1 MiB)
        RX errors 0  dropped 7  overruns 0  frame 0
        TX packets 1144  bytes 241997 (236.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp38s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether d0:50:99:fd:f0:83  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xf9f00000-f9f7ffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 20313  bytes 3237698 (3.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20313  bytes 3237698 (3.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Other things I’ve done:
Manually disabled auto configure ipv6 for br0 & set it manually. Toggled ‘Enable Learning’ which made no difference.

Now my NIC is suspect, maybe I’ll have to setup a boot script to just bounce things, but I’d rather a real solution.

Edit 2:

Reading info from Marvell for the AQC chipset, seems they recommend disabling lro & gro if bridging. Will see if this does the needful - not certain yet if the following survives a reboot:

Disable GRO when routing/bridging
---------------------------------
Due to a known kernel issue, GRO must be turned off when routing/bridging.
This can be done by running:

	ethtool -K <ethX> gro off


Disable LRO when routing/bridging
---------------------------------
Due to a known kernel issue, LRO must be turned off when routing/bridging.
This can be done by running:

	ethtool -K <ethX> lro off

Yeah, sadly disabling lro & gro did not do the needful. Seems after a reboot br0, enp37s0 need to be bounced, then ipv6 address deleted from enp37s0 to get things going… Weird.

So basically the following works as the laziest workaround I can think of short of never again rebooting or actually changing the NIC.

ip link set br0 down
ip link set enp37s0 down
ethtool -K enp37s0 gro off
ethtool -K enp37s0 lro off
ip link set enp37s0 up
ip link set br0 up
ifconfig enp37s0 inet6 del fe80::223:a4ff:fe0e:182/64

Only thing it is missing is something to have apps service unset & rechoose pool (restarting docker service just doesn’t cut it sadly)… If anyone can give guidance on that, I’ll appreciate it.

Maybe a clean install would be the fix… wouldn’t be the first time I had it fix what I suspect were driver level issues magically.

Tried a clean install & config import - did not do the needful :frowning:

I’m fine with running an init script, any chance anyone knows the commands to stop app service, refresh catalogue, then start app service?

So far I’m pretty close to a workaround - now I can at least have server boot & be responsive:

----------fix after boot:
ip link set br0 down
ip link set enp37s0 down
ethtool -K enp37s0 gro off
ethtool -K enp37s0 lro off
ip link set enp37s0 up
ip link set br0 up
ifconfig enp37s0 inet6 del fe80::223:a4ff:fe0e:182/64
systemctl restart networking
midclt call catalog.sync

If someone knows what’d do the needful for something along the lines of:
systemctl stop appservice
systemctl start appservice

I can only achieve this on GUI by unsetting & then setting pool - if anyone knows the cli equivalent of that, then I can be happy.

bump - anyone… seriously, I’ve tried nothing & I’m out of ideas…