我正在尝试在嵌入式系统上配置 systemd-networkd,其中 wlan0 位于单独的网络命名空间中。我希望 systemd 能够配置和监视接口,以便在网络可用时可以启动相关服务。
如果我将 wlan0 保留在默认网络命名空间中,则 networkctl 会显示网络已启动且可路由,并且一切按预期工作。
# networkctl status wlan0
6: wlan0
Link File: /usr/lib/systemd/network/99-default.link
Network File: /etc/systemd/network/wlan.network
Type: wlan
State: routable (configured)
Path: platform-47810000.mmc
Driver: brcmfmac
HW Address: 00:25:ca:2e:f6:e5
MTU: 1500 (min: 68, max: 1500)
Queue Length (Tx/Rx): 1/0
Address: 192.168.101.1
我没有看到任何方法来配置 systed-netword 将接口分配给不同的命名空间。如果我在 systemd-networkd 启动之前手动将 wlan0/phy0 接口移动到不同的命名空间(在另一个 systemd 服务中使用 iw 命令),则 systemd-networkd 无法找到 wlan0 接口。
Feb 16 16:01:34 buildroot systemd[1]: Starting Attach wlan0 to to network namespace inet_ns...
Feb 16 16:01:35 buildroot systemd[1]: Started Attach wlan0 to to network namespace inet_ns.
Feb 16 16:01:35 buildroot systemd[1]: Starting Network Service...
Feb 16 16:01:35 buildroot systemd-networkd[427]:
Feb 16 16:01:36 buildroot systemd-networkd[427]: Enumeration completed
Feb 16 16:01:36 buildroot systemd[1]: Started Network Service.
Feb 16 16:01:36 buildroot systemd-networkd[427]: wlan0: Could not find device, waiting for device initialization: No such device
如果我在 systemd-networkd 启动后手动将 wlan0/phy0 接口移至不同的命名空间,则 networkd 会看到它,但稍后 networkctl 无法找到该设备:
# networkctl status wlan0
Failed to query link bit rates: Unknown object '/org/freedesktop/network1/link/_36'.
6: wlan0
Link File: n/a
Network File: n/a
Type: wlan
State: n/a (unmanaged)
HW Address: 00:25:ca:2e:f6:e5
MTU: 1500 (min: 68, max: 1500)
Queue Length (Tx/Rx): 1/0
在 systemd 下将接口移动到不同网络命名空间的正确方法是什么?