TrueNAS 上面 Host VM 的基础 Virtual Switch 网桥设置

TrueNAS 上面桥接一堆接口的网桥,和单纯的NIC分的是很开的。并没有像 Proxmox 那样,默认就有一个虚拟网桥,让VM都桥接到这个网桥上,从而访问外网。

在 TrueNAS 环境下,默认的网络接口已经被系统占用,并且没有提供额外的可用接口给 VM 使用(毕竟 TrueNAS 的存在最大意义不是虚拟化平台)。因此如果没有进行任何配置更改,VM 在启动后将不能联网。这意味着 VM 必须依赖于一个虚拟网桥来实现对外部网络的访问。(如果多网口的话,情况大概是不一样的。毕竟多网口大概可以直接分配网口给VM使用,不过我也没有条件实验这个)。

解决方案

为了解决这个问题,可以按照以下步骤手动创建一个网桥,并将 TrueNAS 占用的那个网络接口添加到这个新创建的网桥里。这样做的目的是为了让虚拟机通过这个网桥共享物理网络接口,从而能够联网。

首先创建网桥

  • 进入 TrueNAS 的网络配置(Network)页面,看 Interfaces 列表,你需要 Add 一个新的interface。给你的新网桥起一个合法的名字,比如 br0 或者 br1。

然后测试这个设置,保存下来。现在这个网桥存在了。但是里面没有Ethernet设备接口。所以没有用。但是因为Ethernet设备涉及当前的网络连接,所以必须一步到位。如果接下来的步骤出错,可能导致网络连接完全中断(当然,理论上 timeout 之后会 revert)。

  • 在原来的enp5s1接口下面,把 IP address 去掉,然后把enp5s1添加进新建的网桥:br0。同时在下面的 Alias 里面添加TrueNAS的IP,就是之前从 enp5s0 里面删掉的IP。
    • 这些都做完之后,再一起 Test + Persisten,完成配置。

参考视频: https://www.youtube.com/watch?v=7clQw132w58

之后在为虚拟机配置网卡的时候,直接用这个 br0 就可以了,相当于是桥接了。

对 Applications (K3s pool) 的影响

这个步骤可能在 TrueNAS 已经有跑 Applications 的情况下失败。主要一个原因就是 Applications 的这个 k3s cluster 也是跟 network interface 绑定了。修改之前绑定的 enp5s1 是不被允许的。

这时只能在 Applications -> Settings -> Unset Pool。然后完成 Network interface br0 上面的设置,然后回到 Applications,重新开启 Applications Pool。Dataset选择还是原来那个就行。这次在选 Route v4 Interface 的时候,选择 br0 即可