Jestem przełączania z Debianie ifupdown
się systemd-networkd
, i to przeważnie działa dobrze. Brakującym elementem jest to, że przy każdej zmianie sieci chcę zadzwonić killall -ARLM tinc
, aby moja sieć VPN szybko się rozrastała.
Czy systemd
lub systemd-networkd
dostarczenie takiej funkcjonalności? Jak miałbym tego użyć?
systemd
events
systemd-networkd
Joachim Breitner
źródło
źródło
Tinc powinien zostać zaktualizowany jako jednostka systemowa zamiast wysyłania bezpośrednich sygnałów. Aby osiągnąć ten trzeba skonfigurować swoje pliki jednostkowych być przykuty z odpowiednim
Require=
,Before=
iAfter=
linii w[Unit]
sekcji. Upewnij się również, że ustawiłeś poprawnyWantedBy=
dla usług sieciowych. (tj.WantedBy=
{network.target
,network-online.target
,network-pre.target
} zamiastmulti-user.target
)Dzięki temu można uruchomić
systemctl restart systemd-networkd.service
ponownie sieć. W połączeniu zsystemd-resolvd
,udev
/dbus
(plus w[email protected]
przypadku WiFi) i własnej sieci po prostu działa.Przeczytaj artykuły na temat przejścia na systemd-networkd i zależności jednostek . Jest to również sposób wysyłania sygnałów do
systemd.service
jednostek za pomocąsystemctl kill
polecenia, zgodnie z dokumentacją w przewodniku systemd for administartorsźródło
systemctl kill
do dostarczenia sygnału. Ale nie widzę, jak wywołać to przy zmianie konfiguracji sieci.network.target
potemnetwork-online.target
skopać tej jednostki. więc po prostu miećtinc.service
toRequires=systemd-networkd.service
iWantedBy=network-online.target
wtedy, gdy Systemd-networkd kopnięć off, która będzie wychowywać interfejs NIC i tun, ustalenie adresu IP, a następnie sygnał do tinc do uruchomienia lub ponownego uruchomienia w razie potrzeby.case "$2" in up|connectivity-change) if /usr/bin/nm-online -qx; then systemctl reload autossh.service fi;; esac
Obecnie nie jest to możliwe. Jednak można użyć tylko
systemd-networkd-wait-online.service
jako zależności od rozruchu, aby ponownie skonfigurować tinc. Z mojego doświadczenia wynika, że tinc zareaguje szybko na zmiany w konfiguracji sieci. Przynajmniej na Linuksie mógłby użyć rtnetlink do nasłuchiwania zmian interfejsów.źródło