Zum Inhalt springen

Systemd/networkd-dispatcher: Unterschied zwischen den Versionen

Aus Foxwiki
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]]

Version vom 31. Januar 2026, 17:45 Uhr

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

Datei Beschreibung


Anhang

Siehe auch



Dokumentation

Links

Projekt

Weblinks

  1. Manpage zu networkd-dispatcher 🇬🇧 – bei Focal Fossa
  2. systemd
  3. systemd/networkd
  4. systemd/Units
  5. systemd/networkd-dispatcher