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

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

我正在从 Debian 切换ifupdown到Debian systemd-networkd,它大部分工作正常。缺少的一点是,每次网络发生变化时,我都想打电话killall -ARLM tinc,以便我的 VPN 及时启动。

是否systemdsystemd-networkd提供这样的功能?我该如何使用它?

答案1

我用来networkd-dispatcher在界面状态更改后运行事件:

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

链接到GitLab

答案2

Tinc 应该作为 systemd 单元进行更新,而不是直接发送信号。为了实现这一目标,需要将其单元文件配置为与该部分中适当的Require=Before=、 和行链接。还要确保您为网络服务设置正确。 (即{ , , } 而不是)After=[Unit]WantedBy=WantedBy=network.targetnetwork-online.targetnetwork-pre.targetmulti-user.target

这允许执行systemctl restart systemd-networkd.service以重新启动您的网络。将此与systemd-resolvd, udev/ dbus(加上[email protected]Wi-Fi 时)结合起来,网络就可以正常工作了。

请务必阅读以下文章切换到 systemd-networkd单位依赖性。这也是systemd.service通过命令向您的单位发送信号的方法,systemctl kill如文档中所述systemd 管理员指南

答案3

目前这是不可能的。但是,您只能用作systemd-networkd-wait-online.service启动的依赖项来重新配置 tinc。根据我的经验,tinc 会对网络配置的变化做出快速反应。至少在Linux上它可以使用rtnetlink来监听接口的变化。

相关内容