Greetings:
I just installed Truenas on a Celestica node (was part of an IXSystems X20). I cannot permanently set a network IP address. Going through the console does the entire process with no reported errors, but the IP address does not set.
The system has dual Gigabit ports that I have set up as bond0 on address 192.168.0.41/23. The bond is set up correctly as is the switch. The bond is set as LACP.
Attempting to set an IP address to bond0 goes through all the motions as you would expect, but after applying and persisting the changes, dropping into the Linux CLI and issuing command “ip a” shows that bond0 is up (as are the feeder ports) but there is no IPv4 address attached to bond0.
Running command “ifconfig bond0 192.168.0.41/23” works as expected and I can manage the system via web without issue. However, using the web interface likewise will not set the IP address of the bond. Goes through the motions and no errors reported. However, the ip address on bond0 is unset and I have to return to the console to do anything.
How am I accessing this system: via the console (I have temporarily swapped out the 10gb card with a VGA card).
Obviously, if I reboot the system (e.g. to return the 10gb card into the system), then the network config will be lost and I will not be able to access this system.
Have I hit a bug here, or is there something I am doing wrong?
Ron Gage
An update:
I managed to look in the configuration database. What I am seeing - the data IS populated in the database - apparently correctly.
I rebooted the system and of course, the system became unreachable. At the console, I only did “ifconfig bond0 192.168.0.41/23” and the system is now reachable.
sqlite> select * from network_interfaces;
7|bond0|management|0|0|||0||1500|192.168.0.41||23|4
sqlite>
This data is not being applied at bootup.
Is there a command or script that I can run to apply the database config to the network?
Ron Gage
Your problem is the 3rd column corresponding to the int_name column has a string value of “management” instead of a blank. If it were blank, the middleware would use the string value of the 2nd column, int_interface, as the value of int_name. It’s attempting to ifconfig management, but this interface doesn’t exist.
Samuel:
Thank you for looking at this. This field appears to be the “description” field in the UI (web or console). None the less, I have deleted it, applied and persisted that change, then reboot. No joy - bond0 still does not take and address.
sqlite> select * from network_interfaces;
7|bond0||0|0|||0||1500|192.168.0.41||23|4
sqlite>
I had to do “ifconfig bond0 192.168.0.41/23” to restore access after the reboot.
Is there a clean way to debug middlewared so I can see/report the actual reports back on this?
When it was disconnected, I did try “systemctl restart networking” and that of course did nothing useful.
Thanks!
Ron Gage
Partially answering my own question (debugging middlewared) :
[2026/06/18 17:37:11] (INFO) InterfaceService.lag_setup():14 - Setting up bond0
[2026/06/18 17:37:12] (INFO) InterfaceService.lag_setup():72 - Changing protocol on ‘bond0’ to LACP
[2026/06/18 17:37:12] (INFO) InterfaceService.lag_setup():76 - Changing xmit_hash_policy on ‘bond0’ to layer2+3
[2026/06/18 17:37:12] (INFO) InterfaceService.lag_setup():80 - Changing lacpdu_rate on ‘bond0’ to slow
[2026/06/18 17:37:12] (INFO) InterfaceService.lag_setup():89 - Setting miimon on ‘bond0’ to 100 ms
[2026/06/18 17:37:12] (INFO) InterfaceService.configure():20 - Configuring interface ‘bond0’
[2026/06/18 17:37:12] (INFO) InterfaceService.sync():1650 - Interfaces in database: bond0
[2026/06/18 17:37:12] (INFO) InterfaceService.unconfigure():138 - Unconfiguring interface ‘enp5s0’
[2026/06/18 17:37:13] (INFO) InterfaceService.unconfigure():138 - Unconfiguring interface ‘enp6s0’
[2026/06/18 17:37:13] (INFO) RouteService.sync():78 - Adding IPv4 default route to 192.168.0.3
[2026/06/18 17:37:13] (ERROR) RouteService.sync():100 - Failed adding 192.168.0.3 as default gateway: NetlinkError(101, ‘Network is unreachable’)
With my amateur reading of this log, it appears to me that it is setting up the lacp bind correctly but not applying an IP address to it. The subsequent error about not being able to apply the default route (192.168.0.3) makes sense since that network does not exist on any interface at that point.
Is there anything I can do to help remedy this?
Ron Gage
Can you provide the output of midclt call interface.query | jq?