使用 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來監聽介面的變化。

相關內容