我正在從 Debian 切換ifupdown
到Debian systemd-networkd
,它大部分都正常工作。缺少的一點是,每次網路發生變化時,我都想打電話killall -ARLM tinc
,以便我的 VPN 及時啟動。
是否systemd
或systemd-networkd
提供這樣的功能?我該如何使用它?
答案1
我用來networkd-dispatcher
在介面狀態更改後運行事件:
Networkd-dispatcher 是用於 systemd-networkd 連線狀態變更的調度程式守護程式。此守護程式與 NetworkManager-dispatcher 類似,但由於 systemd-networkd 的有限性質,它支援的事件類型受到更多限制。
連結到GitLab
答案2
Tinc 應該會作為 systemd 單元進行更新,而不是直接發送訊號。為了實現這一目標,需要將其單元檔案配置為與該部分中適當的Require=
、Before=
、 和行連結。也要確保您為網路服務設定正確。 (即{ , , } 而非)After=
[Unit]
WantedBy=
WantedBy=
network.target
network-online.target
network-pre.target
multi-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來監聽介面的變化。