我正在尝试使用 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
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_test
andifup tap_test
代替ifconfig
。
重点是ifup
要做更多的工作。ifconfig
是最低限度。
ifup ethX
使用配置文件并启动具有正确IP地址等的接口。
ifconfig ethX up
只启动界面。