如何通过 systemd 激活 NetworkManager 配置文件

如何通过 systemd 激活 NetworkManager 配置文件

这是我正在尝试解决的问题:我有一个无线设备,我希望它在某个时刻充当客户端,在另一个时刻充当接入点。

我使用两个配置文件设置了 NetworkManager,一个用于客户端,一个用于接入点。只要我手动切换,一切就都正常。

当我尝试将这两个配置文件绑定到 systemd 单元时,问题就开始了。我希望能够将 NetworkManager 配置文件关联到 systemd 单元。我还使用简单的 nmcli 命令编写了该单元,但每当我启动该单元时,连接就会先建立,然后又断开。

单位如下:

[Service]
type=oneshot
ExecStart=nmcli con up Connection2
ExecStop=nmcli con down Connection2

以下是 journalctl 从该单元显示的内容:

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

以下是 journalctl 从 NetworkManager 单元显示的内容(截断):

<info> Activation (wlan0) successful, device activated.
<info> (wlan0): device state change: activated -> deactivating (reason 'user-requested') [100 11
<info> NetworkManager state is now DISCONNECTING
<info> (wlan0): device state change: deactivating -> disconnected (reason 'user-requested') [110
<info> (wlan0): deactivating device (reason 'user-requested') [39]
<info> Removing DNS information from /sbin/resolvconf
<info> NetworkManager state is now DISCONNECTED

有人能告诉我正确的做法吗?另外,我想避免使用“ifupdown”方法,而使用 NetworkManager(或 systemd-networkd)。使用后者没有成功,因为我找不到设置设备模式的简单方法。谢谢。

答案1

单次触发单元通常需要RemainAfterExit=yes,否则它们会立即“停用”并运行 ExecStop 命令。

相关内容