Ich wechsele von Debian ifupdown
zu systemd-networkd
und es funktioniert größtenteils gut. Was fehlt, ist, dass ich bei jeder Netzwerkänderung anrufen möchte killall -ARLM tinc
, damit mein VPN rechtzeitig hochfährt.
Bietet systemd
oder systemd-networkd
verfüge ich über eine solche Funktionalität? Wie würde ich sie verwenden?
Antwort1
Ich verwende networkd-dispatcher
zum Ausführen von Ereignissen nach Änderungen des Schnittstellenstatus:
Networkd-Dispatcher ist ein Dispatcher-Daemon für Verbindungsstatusänderungen von systemd-networkd. Dieser Daemon ähnelt NetworkManager-Dispatcher, ist aber aufgrund der eingeschränkten Natur von systemd-networkd in den unterstützten Ereignistypen viel eingeschränkter.
Link zuGitlab
Antwort2
Tinc sollte als systemd-Einheit aktualisiert werden, anstatt direkte Signale zu senden. Um dies zu erreichen, müssen die Unit-Dateien so konfiguriert werden, dass sie mit den entsprechenden Zeilen Require=
, Before=
, und After=
im [Unit]
Abschnitt verkettet werden. Stellen Sie außerdem sicher, dass Sie die richtigen Einstellungen WantedBy=
für Netzwerkdienste vornehmen. (d. h. WantedBy=
{ network.target
, network-online.target
, network-pre.target
} statt multi-user.target
)
Damit kann man systemctl restart systemd-networkd.service
das Netzwerk neu starten. Kombiniert man dies mit systemd-resolvd
, udev
/ dbus
(plus [email protected]
bei WLAN) und das Netzwerk funktioniert einfach.
Lesen Sie unbedingt die Artikel überUmstellung auf systemd-networkdUndEinheitenabhängigkeitensystemd.service
. Dies ist auch eine Möglichkeit, Signale an Ihre Einheiten über den Befehl zu senden, systemctl kill
wie imsystemd-Handbuch für Administratoren
Antwort3
Dies ist derzeit nicht möglich. Sie können es jedoch nur systemd-networkd-wait-online.service
als Abhängigkeit beim Booten verwenden, um Tinc neu zu konfigurieren. Meiner Erfahrung nach reagiert Tinc schnell auf Änderungen in der Netzwerkkonfiguration. Zumindest unter Linux könnte es rtnetlink verwenden, um auf Schnittstellenänderungen zu warten.