|
|
| Zeile 101: |
Zeile 101: |
| </noinclude> | | </noinclude> |
|
| |
|
| = TMP =
| |
| == Konfiguration ==
| |
| [[Systemd/networkd-dispatcher|networkd-dispatcher]] startet Programme in Unterverzeichnissen von
| |
| * '''/etc/networkd-dispatcher'''
| |
| * '''/usr/lib/networkd-dispatcher'''
| |
|
| |
| Dabei überlagern Dateien unter '''/etc''' gleichnamige Dateien unter '''/usr'''. Man sollte eigene Dateien vorzugsweise unter '''/etc''' ablegen und '''/usr''' den Distributionen vorbehalten.
| |
|
| |
| Es werden diese Unterverzeichnisse berücksichtigt
| |
| ls /etc/networkd-dispatcher/
| |
| carrier.d degraded.d dormant.d no-carrier.d off.d routable.d
| |
|
| |
| Der Name des Unterverzeichnisses entspricht dem neuen Zustand der Schnittstelle
| |
|
| |
|
| |
| {| style="border-spacing:0;width:17cm;"
| |
| |- style="border:none;padding:0.049cm;"
| |
| | colspan="2" | Zustände von Schnittstellen
| |
| |- style="border:none;padding:0.049cm;"
| |
| || Zustand
| |
| || Bedeutung
| |
| |- style="border:none;padding:0.049cm;"
| |
| || off
| |
| || Schnittstelle ist nicht betriebsbereit.
| |
| |- style="border:none;padding:0.049cm;"
| |
| || no-carrier
| |
| || Das Schnittstellen-Gerät ist betriebsbereit, aber es ist kein Transport auf Netzwerkebene L2 aktiv, z.B. weil bei Ethernet kein Kabel gesteckt ist oder bei WLAN keine Mitgliedschaft zu einem Funknetz besteht.
| |
| |- style="border:none;padding:0.049cm;"
| |
| || carrier
| |
| || Die Schnittstelle ist betriebsbereit und es können auf L2 Pakete empfangen und gesendet werden, jedoch können keine IP-Pakete ausgetauscht werden.
| |
| |- style="border:none;padding:0.049cm;"
| |
| || dormant
| |
| || Die Schnittstelle ist grundsätzlich betriebsbereit wie bei <tt>carrier</tt>, jedoch momentan untätig (eingeschlafen).
| |
| |- style="border:none;padding:0.049cm;"
| |
| || degraded
| |
| || IP-Pakete können über die Schnittstelle empfangen, jedoch nicht oder nur eingeschränkt gesendet werden, weil der Schnittstelle keine global weiterleitbare IP-Adresse zugeordnet wurde.
| |
| |- style="border:none;padding:0.049cm;"
| |
| || routeable
| |
| || IP-Pakete können über die Schnittstelle empfangen und gesendet werden.
| |
| |-
| |
| |}
| |
| Die Konfigurationsverzeichnisse müssen <tt>root</tt> gehören und niemand außer <tt>root</tt> darf in diese Ordner schreiben können.
| |
|
| |
| == Details zu den Skripten ==
| |
|
| |
| Als Programm kann man beispielsweise eine ausführbare Textdatei mit einem Shell-Skript in das passende Verzeichnis legen, und dies ist auch als Regelfall so vorgesehen. Die Datei muss <tt>root</tt> gehören und niemand außer <tt>root</tt> darf sie beschreiben dürfen.
| |
|
| |
| Die Programme werden mit diesen Umständen ausgeführt: # Sie werden als <tt>root</tt> ausgeführt.
| |
| # Bei mehreren Dateien in einem Verzeichnis kann man die Reihenfolge der Ausführung nicht steuern.
| |
| # Als Arbeitsverzeichnis ist die Wurzel des Dateibaums '''/''' gesetzt.
| |
| # Es gibt keine Argumente auf der „Kommandozeile“. <tt>"$0"</tt> ist der Dateiname.
| |
| # <tt>stdin</tt> ist geschlossen, <tt>stdout</tt> ist unbekannt und <tt>stderr</tt> schreibt in das Systemlog.
| |
| # Sie laufen in einer Programmumgebung mit diesen Variablen: <br/>vergrößern<br/>OperationalState=routable<br/>IP6_ADDRS=<br/>NOTIFY_SOCKET=/run/systemd/notify<br/>JOURNAL_STREAM=9:18243<br/>PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br/>INVOCATION_ID=e1ed182dc4f34afca8368e7a7f677da4<br/>LANG=de_DE.UTF-8<br/>AdministrativeState=unmanaged<br/>IP_ADDRS=<br/>networkd_dispatcher_args=--run-startup-triggers<br/>IFACE=radio<br/>PWD=/<br/>ADDR=<br/>STATE=routable <br/>Die Werte sind natürlich nur Beispiele. Man kann sich nicht darauf verlassen, dass alle Variablen mit vernünftigen Werten versehen sind und es gibt situationsabhängig noch weitere Umgebungsvariablen. Bei einer WLAN-Schnittstelle wurde z.B. die richtige SSID als ESSID übergeben.
| |
|
| |
| * Die wichtigste Variable ist <tt>IFACE</tt>. Hier steht, um welche Schnittstelle es sich handelt.
| |
| * Die Variablen <tt>OperationalState</tt> und <tt>AdministrativeState</tt> entsprechen wohl (d.h. nach bisherigen Erfahrungen) den Ausgaben von [https://wiki.ubuntuusers.de/systemd/networkd/#Dienstprogramm-networkctl networkctl].
| |
| * Die Variable <tt>STATE</tt> entspricht wohl dem Verzeichnis bzw. dem neuen Zustand der Schnittstelle.
| |
| [[Kategorie:Systemd]] | | [[Kategorie:Systemd]] |
Systemd/networkd-dispatcher
Beschreibung
networkd-dispatcher ist ein Zusatzprogramm für systemd-networkd. Während man bei systemd-networkd die Konfiguration der Netzwerkschnittstellen ausschließlich über Deklarationen vornimmt, erlaubt networkd-dispatcher auf Zustandsänderungen bei den Netzwerkschnittstellen zu reagieren und Programme zu starten.
Damit ist networkd-dispatcher für systemd-networkd das Pendant zu nm-dispatcher für NetworkManager und den Skripten in /etc/network/if-*.d/ für ifupdown.
Arbeitsweise
Die beiden systemd-Units systemd-networkd.service und networkd-dispatcher.service müssen aktiv sein. Kontrolle[2]:
systemctl status systemd-networkd.service
systemctl status networkd-dispatcher.service
Sobald systemd-networkd bei einer Schnittstelle einen Zustandswechsel erkennt, startet es networkd-dispatcher und dieser startet die Programme in dem Verzeichnis, welches zu dem neuen Zustand der Schnittstelle gehört. Dies funktioniert auch, wenn systemd-networkd die Schnittstelle nicht selber konfiguriert hat.
Installation
sudo apt-get install networkd-dispatcher
Aufruf
Optionen
| Unix |
GNU |
Parameter |
Beschreibung
|
|
|
|
|
Parameter
Umgebungsvariablen
Exit-Status
| Wert |
Beschreibung
|
| 0 |
Erfolg
|
| >0 |
Fehler
|
Anwendung
Logger
Man kann dieses Skript als /etc/networkd-dispatcher/routable.d/00-logger ablegen, ausführbar machen und in den anderen Unterverzeichnissen von /etc/networkd-dispatcher/ jeweils darauf verlinken:
#! /bin/bash -e
LOG () { echo ${*:- } ;} >&2
LOG IFACE=$IFACE $OperationalState
Man erhält im Systemlog Meldungen, wann immer sich der Zustand einer Schnittstelle ändert. Das kann bei der Fehlerdiagnose helfen:
journalctl -b -u networkd-dispatcher.service
Beispeilausgabe
Mai 04 10:01:29 networkd-dispatcher[95390]: IFACE=eth0 routable
Mai 04 10:04:37 networkd-dispatcher[95577]: IFACE=eth0 off
Mai 04 10:04:38 networkd-dispatcher[95580]: IFACE=WLAN routable
Konfiguration
Dateien
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks
- Manpage zu networkd-dispatcher 🇬🇧 – bei Focal Fossa
- systemd
- systemd/networkd
- systemd/Units
- systemd/networkd-dispatcher