systemd-networkd 不会重新加载虚拟网络接口配置文件

systemd-networkd 不会重新加载虚拟网络接口配置文件

我正在尝试使用 systemd-networkd 配置文件配置 Tap 接口。我创建了这些文件:

/etc/systemd/network/tap_test.network
/etc/systemd/network/tap_test.netdev

内容:

tap_test.network:
[Match]
Name=tap_test

[Network]
Description=TEST tap interface
Address=192.168.2.100

tap_test.netdev:
[Match]

[NetDev]
Name=tap_test
Kind=tap

然后重新启动systemd-networkd服务:

sudo systemctl restart systemd-networkd.service

正如预期的那样,运行时ifconfig会显示新的点击界面。然而,当我尝试更改配置文件中的 ip 地址tap_test.network以 结尾101,然后尝试systemd-networkd再次重新启动时,当我再次运行时看不到任何变化ifconfig(ip 地址仍然是旧的)。

我也尝试关闭接口ifconfig tap_test down然后重新启动服务,但也没有帮助。

如何让 systemd-networkd 重新加载配置文件?

答案1

去引用systemd.netdev(5):

Networkd 启动后就会创建虚拟网络设备。如果具有指定名称的 netdev 已存在,networkd 将按原样使用该 netdev,而不是创建自己的 netdev。请注意,networkd 不会更改预先存在的 netdev 的设置。

显然,这是设计使然。我认为您需要找到一种方法来自行取消分配分接设备(如果可能的话)并将所需的命令添加到ExecStopPost=单元中systemd-networkd.service

您可以使用后者的插件。

/etc/systemd/system/systemd-networkd.service.d/tuntap.conf:

[Service]
ExecStopPost=<your command goes here>

答案2

尝试使用ifdown tap_testandifup tap_test代替ifconfig

重点是ifup要做更多的工作。ifconfig是最低限度。

ifup ethX使用配置文件并启动具有正确IP地址等的接口。

ifconfig ethX up只启动界面。

相关内容