使用systemd-networked时,对网络配置更改执行操作


10

我正在从Debian切换ifupdownsystemd-networkd,并且大多数情况下都可以正常工作。遗漏的一点是,每次更改网络后,我都想打电话给killall -ARLM tinc我,以使我的VPN及时启动。

难道systemdsystemd-networkd提供这样的功能?我将如何使用它?

Answers:


3

networkd-dispatcher接口状态更改后,我用来运行事件:

Networkd-dispatcher是用于systemd-networked连接状态更改的调度程序守护程序。该守护程序类似于NetworkManager-dispatcher,但是由于systemd-networked的有限性质,它所支持的事件类型受到更多限制。

链接到Gitlab


这包含在Debian 10(Buster)中。
John Eikenberry

2

锡应作为系统单位更新,而不是发送直接信号。为了实现这一需求来配置自己的单元文件与相应的被链接Require=Before=以及After=在线路[Unit]部分。另外,请确保WantedBy=为网络服务设置了正确的地址。(即WantedBy={ network.targetnetwork-online.targetnetwork-pre.target}代替multi-user.target

这样就可以执行systemctl restart systemd-networkd.service以重新启动网络。将其与systemd-resolvdudev/ dbuswpa_supplicant@nic.service在wifi上加上时)结合使用,一个人的网络就可以正常工作。

请务必阅读有关切换到系统联网单位相关性的文章。这也是systemd.service通过systemd for administartors指南中systemctl kill命令将信号发送到设备的一种方式


我不太喜欢 因此,如果tinc作为systemd服务运行,则可以systemctl kill用来传递信号。但是我看不到如何在网络配置更改上触发该操作。
Joachim Breitner

您不会只使用systemd的信号传递目标和关系依赖性。因此,一旦您的网络接口启动,此信号(在systemd内部)将发出信号,network.target然后其他依赖项network-online.target启动该单元。因此只需tinc.service包含Requires=systemd-networkd.serviceWantedBy=network-online.target然后在systemd-networkd启动时,将打开nic和tun接口,建立IP地址,然后发信号通知tinc根据需要启动或重新启动。
德怀特·斯潘塞

我也找不到触发服务重启的方法,因为network-online.target不会在断开连接时停止(实际上应该为此提交错误报告...)。我求助于/etc/NetworkManager/dispatcher.d/脚本,其中包含case "$2" in up|connectivity-change) if /usr/bin/nm-online -qx; then systemctl reload autossh.service fi;; esac
eMPee584 '17

1
我觉得很有趣,因为您链接到您所回答问题的人撰写的文章。:)当然,这对以后的读者很有帮助,但这仍然很有趣。
通配符

1

目前这是不可能的。但是,您只能systemd-networkd-wait-online.service用作引导的依赖项来重新配置tinc。以我的经验,tinc将对网络配置的更改做出快速反应。至少在linux上,它可以使用rtnetlink侦听接口更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.