我的家庭服务器使用 enp7s0 连接到互联网,并通过 3 个设备共享互联网,enp2s0(以太网到交换机)、enp3s0(以太网到提供访客网络的路由器)和 wlxe0e1a935d56d(用于家庭网络的快速 USB 无线加密狗)。我希望 USB 无线和 enp2s0 位于同一个网桥中,以便设备可以互相看到。
这是我的 netplan yaml 文件:
network:
ethernets:
enp2s0:
optional: true
enp3s0:
addresses: [192.168.1.1/24]
optional: true
enp7s0:
dhcp4: true
wlxe0e1a935d56d:
dhcp4: no
bridges:
br0:
interfaces:
- enp2s0
- wlxe0e1a935d56d
addresses: [192.168.0.1/24]
version: 2
问题是启动时会卡在“等待网络配置”两分钟,之后机器启动时 br0 中只有 enp2s0。我可以通过用 将 wlxe0... 添加到网桥来修复此时的网络brctl addif
。如果我在以太网下将行添加optional: true
到 wlxe0...,启动卡住问题就会消失,但 br0 仍然只会获得 enp2s0。
我认为问题可能是 USB 棒需要相当长的时间才能准备好,比机器等待的时间还要长。是否可以设置 netplan,以便它在实际启动时添加到网桥中?
我刚刚意识到我有日志。(呃)。在其中,我发现了这行令人振奋的文字,wlxe0e1a935d56d: Failed to set master interface: Device does not allow enslaving to a bridge. Operation not supported
它解释了为什么接口在启动期间没有加入桥接,但是为什么它可以在启动后手动添加到桥接中?
答案1
我不确定,但我认为问题是 hostapd 对接口做了一些神奇的事情,使其能够加入网桥。我无法在联网之前移动 hostapd,所以我只添加了一个一次性的 systemd 单元,它将接口添加到网桥,该单元被定义为在 hostapd 之后运行。
我对这个解决方案并不是很满意,但它现在仍然有效。