IMPORTANT

This is post is based on my experience with TrueNAS 24.04. Things may have changed a lot in newer versions, especially in TrueNAS 25.04+, where k3s is replaced by dockge.

In TrueNAS, a network bridge that bundles multiple interfaces is distinctly separate from a simple Network Interface Card (NIC). It’s not like proxmox, which has a default virtual bridge that VMs connect to for external network access.

By default in a TrueNAS environment, the primary network interface is already in use by the system and no additional interfaces are readily available for VMs (after all, TrueNAS’s main purpose isn’t primarily as a virtualization platform (just my impression, things may have changed) ). Consequently, without any configuration changes, a VM won’t be able to connect to the network after startup. This means the VM must rely on a virtual bridge to access the external network. (The situation might be different if you have multiple network ports, as you could likely assign a port directly to a VM, but I don’t have the setup to test this).


Solution

To solve this, you can manually create a bridge by following these steps and then add the network interface TrueNAS is using into this newly created bridge. The goal is to allow virtual machines to share the physical network interface through this bridge, enabling them to connect to the network.

First, create the bridge:

  1. Go to TrueNAS’s Network configuration page and look at the Interfaces list. You need to Add a new interface.
  2. Give your new bridge a valid name, like br0 or br1.
  3. Then, test this setting and save it. The bridge now exists, but it doesn’t have any Ethernet device interfaces in it, so it’s not yet useful.
  4. Since the Ethernet device involves the current network connection, this next part must be done carefully. If the following steps go wrong, it could lead to a complete network disconnection (though, theoretically, it should revert after a timeout).
  5. Under the original interface (e.g., enp5s1), remove its IP address. Then, add enp5s1 to the newly created bridge (e.g., br0). (Checkout [get-network-interface-name] for how to get the enp5s1, or you can just check your TrueNAS UI)
  6. At the same time, in the Aliases section for the bridge (br0), add the IP address for TrueNAS – the same one you previously removed from enp5s0 (or your primary NIC).
  7. Once all these changes are made, Test Changes and then Save Changes to complete the configuration.

Reference Video: https://www.youtube.com/watch?v=7clQw132w58

After this, when configuring the network card for your virtual machine, you can directly use this br0, which effectively bridges it.


Impact on Applications (K3s pool)

This procedure might fail if you already have Applications running in TrueNAS. A primary reason is that the Applications’ k3s cluster is also bound to a network interface. Modifying the previously bound interface (e.g., enp5s1) is not allowed.

In this situation, you’ll need to go to Applications Settings Unset Pool. Then, complete the network interface setup for br0 as described above. Afterward, go back to Applications and re-enable the Applications Pool. You can select the same dataset as before. This time, when choosing the Route v4 Interface, select br0.