Link State Down After Side-Grade from TrueNAS CORE

Hi.

I recently “side-graded” my NAS from TrueNAS CORE to SCALE.

About 24-hours after the upgrade I started getting errors when attempting to “discover” the Apps catalogue or update etc. It appears that connectivity to the internet became disabled. Although I could still access internally.

I also noted that one of my network adapters (eno2) was “down” and speculating the two issues may be linked.

My network settings currently consist of two interfaces joined in a load balance arrangement:

eno1 - working

eno2 - down

bond1 - 192.168.0.251/24

Given the short duration between upgrade and the link going ‘down’ if there is a software setting or “issue” with TrueNAS SCALE that could be diagnosed and resolved before relegating to a hardware failure.

I am noting in the green text at the bottom of the dashboard, repeating:

TrueNAS kernel: br-327224a2ccbd: port 1 (veth251c0d3) entered blocking state

TrueNAS kernel: br-327224a2ccbd: port 1 (veth251c063) entered forwarding state

TrueNAS kernel: br-327224a2ccbd: port 1 (veth251c063) entered disabled state.

TrueNAS kernel: veth251c063: entered multicast state

TrueNAS kernel: veth251c063: entered promiscuous state

The text in parentheses changes each time.

I have tried to “split” the aggregated link, however, this resulted in lost connectivity to the server and a reboot to regain connection again.

In addition:

  • Connectivity to shares has disappeared. The server has disappeared from “This PC” however I can log in to the web interface. I have tried restarting SMB and restarting my Windows machine.

Thanks for any advice in troubleshooting any setup or system issues that may be causing this.

TROUBLESHOOTING SO FAR:

  • Removed cable from eno2. No improvement.

Try pulling the cable from eno2 to see if things stabilize. I’m always skeptical of the value of bond interfaces without specific switch-side support, as you’ll often end up with inadvertent spanning-tree loops if you’re not careful.

Thanks @Samuel_Tai for assisting.

I’ve pulled the cable from eno2 and internet connectivity has not been reinstated. Using Apps as an example I continue to get the following error when I refresh the catalogue:

[EFAULT] Failed to clone ‘ GitHub - truenas/apps · GitHub ’ repository at ‘/mnt/.ix-apps/truenas_catalog’ destination: [EFAULT] Failed to clone ‘ GitHub - truenas/apps · GitHub ’ repository at ‘/mnt/.ix-apps/truenas_catalog’ destination: Cloning into ‘/mnt/.ix-apps/truenas_catalog’…

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/plugins/catalog/git_utils.py”, line 34, in pull_clone_repository
clone_repository(repository_uri, destination, branch, depth)
File “/usr/lib/python3/dist-packages/middlewared/utils/git.py”, line 25, in clone_repository
raise CallError(
middlewared.service_exception.CallError: [EFAULT] Failed to clone ‘ GitHub - truenas/apps · GitHub ’ repository at ‘/mnt/.ix-apps/truenas_catalog’ destination: Cloning into ‘/mnt/.ix-apps/truenas_catalog’…

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 515, in run
await self.future
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 560, in __run_body
rv = await self.method(*args)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/api/base/decorator.py”, line 93, in wrapped
result = await func(*args)
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/catalog/sync.py”, line 27, in sync
await self.middleware.call(
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1005, in call
return await self._call(
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 731, in _call
return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 624, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/catalog/sync.py”, line 55, in update_git_repository
return pull_clone_repository(repository, location, branch)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/catalog/git_utils.py”, line 36, in pull_clone_repository
raise CallError(f’Failed to clone {repository_uri!r} repository at {destination!r} destination: {e}')
middlewared.service_exception.CallError: [EFAULT] Failed to clone ‘ GitHub - truenas/apps · GitHub ’ repository at ‘/mnt/.ix-apps/truenas_catalog’ destination: [EFAULT] Failed to clone ‘ GitHub - truenas/apps · GitHub ’ repository at ‘/mnt/.ix-apps/truenas_catalog’ destination: Cloning into ‘/mnt/.ix-apps/truenas_catalog’…

The green text continues to roll.

I get internet access from other applications in my network; I don’t suspect it being a router issue.

Check if your default gateway somehow went missing in System→Network.

Default Gateway is present (192.168.0.1). Copy of Global Configuration from Menu → Network below.

Can you show the output of ifconfig -a? Does the gateway ping?

Yes, the gateway pings. Results and output from “ifconfig -a” below

Welcome to FreeNAS
Last login: Sun Jun 28 14:13:07 AWST 2026 on pts/3
No directory, logging in with HOME=/
$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.051 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=0.063 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=0.072 ms
^X64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=0.071 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=0.067 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=0.070 ms
^C
— 192.168.0.1 ping statistics —
9 packets transmitted, 9 received, 0% packet loss, time 8170ms
rtt min/avg/max/mdev = 0.038/0.056/0.072/0.014 ms
$ ifconfig -a
-sh: 2: ifconfig: not found
$ sudo ifconfig -a
[sudo] password for admin:
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.0.251 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ec4:7aff:fe6a:5a6c prefixlen 64 scopeid 0x20
ether 0c:c4:7a:6a:5a:6c txqueuelen 1000 (Ethernet)
RX packets 271757 bytes 69290461 (66.0 MiB)
RX errors 0 dropped 15921 overruns 0 frame 0
TX packets 48449 bytes 16355683 (15.5 MiB)
TX errors 0 dropped 7 overruns 0 carrier 0 collisions 0

br-2822b094741b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.1.1 netmask 255.255.255.0 broadcast 172.16.1.255
inet6 fdd0:0:0:1::1 prefixlen 64 scopeid 0x0
inet6 fe80::42:2dff:fe85:49d7 prefixlen 64 scopeid 0x20
ether 02:42:2d:85:49:d7 txqueuelen 0 (Ethernet)
RX packets 42334 bytes 2325876 (2.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7673 bytes 503496 (491.6 KiB)
TX errors 0 dropped 2 overruns 0 carrier 0 collisions 0

br-327224a2ccbd: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.16.2.1 netmask 255.255.255.0 broadcast 172.16.2.255
inet6 fdd0:0:0:2::1 prefixlen 64 scopeid 0x0
inet6 fe80::42:32ff:fe30:2e6c prefixlen 64 scopeid 0x20
ether 02:42:32:30:2e:6c txqueuelen 0 (Ethernet)
RX packets 13120 bytes 925288 (903.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8984 bytes 885696 (864.9 KiB)
TX errors 0 dropped 2 overruns 0 carrier 0 collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255
inet6 fdd0::1 prefixlen 64 scopeid 0x0
ether 02:42:57:cd:31:df txqueuelen 0 (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 2 overruns 0 carrier 0 collisions 0

eno1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 0c:c4:7a:6a:5a:6c txqueuelen 1000 (Ethernet)
RX packets 271757 bytes 69290461 (66.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 48449 bytes 16355683 (15.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xf7400000-f747ffff

eno2: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 0c:c4:7a:6a:5a:6d 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 0xf7300000-f737ffff

incusbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fd42:80de:f2d1:34c0::1 prefixlen 64 scopeid 0x0
ether 00:16:3e:a1:6d:21 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 7 overruns 0 carrier 0 collisions 0

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

veth9a027d6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::18d5:4aff:fe4f:3335 prefixlen 64 scopeid 0x20
ether 1a:d5:4a:4f:33:35 txqueuelen 0 (Ethernet)
RX packets 42334 bytes 2918552 (2.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7711 bytes 506412 (494.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

You’ve got an IP conflict between your Incus bridge interface and your gateway.

You’ll need to move your bond interface under a new bridge interface, move your bond interface IP to the new bridge interface, and configure Incus to use the system bridge interface instead of using its default bridge.

1 Like

Thanks for that. I tried clearing the “192.168.0.1” from Containers → Configuration → Global Settings and letting the system choose a new IP. This worked; I now have access to Apps etc. As a side note, I know have internet connection with my phone; This setting was messing around with other devices!

A few more questions:

[*] Should I still create a new “bridge”? I’m new to bridges and, although I have an awareness/understanding, not show how they are implemented in TrueNAS Scale. Or is it a case of “ain’t’ broke don’t fix it”? FYI: When I experimented creating a new bridge, I could only choose from eno2 and/or bond1. Why not eno1?

[*] Should/could this have resolved eno2 not working? Or is it a hardware issue that failed rather coincidentally at time of switch-over from CORE to SCALE?

I recommend you still create a bridge to prevent this scenario in the future.

Because eno1 was already spoken for as a member of bond1.

It’s possible eno2 failed coincidentally. Try connecting eno2 again. If it properly joins the bond1 interface, it will disappear from the list of candidate interfaces for a bridge.