Con systemd-networkd, eseguire un'azione in caso di modifica della configurazione di rete


10

Sto passando da Debian ifupdowna systemd-networkd, e per lo più funziona bene. Un bit mancante è che ad ogni cambio di rete, voglio chiamare killall -ARLM tinc, in modo che la mia VPN salga in modo tempestivo.

Fa systemdo systemd-networkdfornire tale funzionalità? Come lo userei?

Risposte:


3

Sto usando networkd-dispatcherper eseguire eventi dopo i cambiamenti di stato dell'interfaccia:

Networkd-dispatcher è un demone dispatcher per le modifiche dello stato della connessione systemd-networkd. Questo demone è simile a NetworkManager-dispatcher, ma è molto più limitato nei tipi di eventi che supporta a causa della natura limitata di systemd-networkd.

Link a Gitlab


Questo è incluso in Debian 10 (Buster).
John Eikenberry,

2

Tinc dovrebbe essere aggiornato come unità di sistema invece di inviare segnali diretti. Per raggiungere questo obiettivo si ha bisogno per configurare i propri file di unità per essere concatenato con l'appropriate Require=, Before=e After=linee nella [Unit]sezione. Assicurarsi inoltre di aver impostato il corretto WantedBy=per i servizi di rete. (es. WantedBy={ network.target, network-online.target, network-pre.target} invece di multi-user.target)

Ciò consente di eseguire systemctl restart systemd-networkd.serviceper riavviare la rete. Combinato con systemd-resolvd, udev/ dbus(più wpa_supplicant@nic.servicequando su wifi) e la propria rete funziona.

Assicurati di leggere gli articoli sul passaggio a systemd-networkd e alle unità dipendenti . Questo è anche un modo per inviare segnali alle tue systemd.serviceunità tramite il systemctl killcomando come documentato nella guida di systemd for administartors


Non seguo davvero. Quindi se tinc viene eseguito come servizio systemd, posso usare systemctl killper inviare il segnale. Ma non vedo come attivarlo su una modifica della configurazione di rete.
Joachim Breitner,

Non useresti la segnalazione di systemd solo gli obiettivi e le dipendenze delle relazioni. Così una volta che l'interfaccia di rete è su questi segnali (internamente a systemd) gli altri dipendenze nel network.targetquindi network-online.targetper dare il via tale unità. quindi basta tinc.serviceincludere Requires=systemd-networkd.servicee WantedBy=network-online.targetpoi, quando systemd-networkd prende il via, questo farà apparire l'interfaccia nic e tun, stabilire un indirizzo IP e quindi segnalare a tinc di avviarsi o riavviarsi secondo necessità.
Dwight Spencer,

Anche io non sono riuscito a trovare un modo per attivare un riavvio del servizio, perché network-online.target non si ferma alla disconnessione (in realtà dovrebbe presentare una segnalazione di bug per questo ...). Ho fatto ricorso a uno script /etc/NetworkManager/dispatcher.d/ che contienecase "$2" in up|connectivity-change) if /usr/bin/nm-online -qx; then systemctl reload autossh.service fi;; esac
eMPee584

1
Trovo divertente il fatto che tu sia collegato a un articolo scritto dalla persona a cui stai rispondendo alla domanda. :) Naturalmente è utile per i lettori successivi di questa risposta, ma è comunque divertente.
Carattere jolly

1

Questo al momento non è possibile. Tuttavia, è possibile utilizzare solo systemd-networkd-wait-online.servicecome dipendenza all'avvio per riconfigurare tinc. Nella mia esperienza, Tinc reagirà rapidamente ai cambiamenti nella configurazione della rete. Almeno su Linux potrebbe usare rtnetlink per ascoltare le modifiche alle interfacce.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.