Zum Inhalt springen

Systemd/Networkd: Unterschied zwischen den Versionen

Aus Foxwiki
 
(25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Systemd-networkd'''
'''Systemd/Networkd''' - Beschreibung


== Beschreibung ==
== Beschreibung ==
Der Netzwerk-DAEMON [https://wiki.ubuntuusers.de/systemd/networkd/#Links systemd-networkd] gehört zur systemd-Familie und konfiguriert Netzwerkschnittstellen auf den Ebenen 2 und 3 des [https://wiki.ubuntuusers.de/systemd/networkd/#Links ISO/OSI-Referenzmodells]. Mit diesem Programm kann man auch auf realen Schnittstellen aufbauende virtuelle Schnittstellen wie beispielsweise Brücken, Tunnel, VPN erstellen und diese konfigurieren. Das Programm kümmert sich aber nicht um Ebene 2 bei WLAN-Schnittstellen.
Der Netzwerk-DAEMON [https://wiki.ubuntuusers.de/systemd/networkd/#Links systemd-networkd] gehört zur systemd-Familie und konfiguriert Netzwerkschnittstellen auf den Ebenen 2 und 3 des [https://wiki.ubuntuusers.de/systemd/networkd/#Links ISO/OSI-Referenzmodells]
* Mit diesem Programm kann man auch auf realen Schnittstellen aufbauende virtuelle Schnittstellen wie beispielsweise Brücken, Tunnel, VPN erstellen und diese konfigurieren
* Das Programm kümmert sich aber nicht um Ebene 2 bei WLAN-Schnittstellen


Bei Ubuntu-Server-Installationen wird systemd-networkd als [https://wiki.ubuntuusers.de/systemd/Units/ systemd-Unit] gestartet und als einziges Programm für die Konfiguration des Netzwerks verwendet. (Siehe jedoch [https://wiki.ubuntuusers.de/Netplan/ Netplan].)
Bei Ubuntu-Server-Installationen wird systemd-networkd als [https://wiki.ubuntuusers.de/systemd/Units/ systemd-Unit] gestartet und als einziges Programm für die Konfiguration des Netzwerks verwendet. (Siehe jedoch [https://wiki.ubuntuusers.de/Netplan/ Netplan].)


Bei Ubuntu-Desktop-Installationen wird systemd-networkd lediglich installiert, aber nicht gestartet. Beim Start kann es wechselweise zu Störungen mit [https://wiki.ubuntuusers.de/NetworkManager/ NetworkManager] kommen, welcher bei Desktops normalerweise zur ausschließlichen Konfiguration des Netzwerks verwendet wird.
Bei Ubuntu-Desktop-Installationen wird systemd-networkd lediglich installiert, aber nicht gestartet
* Beim Start kann es wechselweise zu Störungen mit [https://wiki.ubuntuusers.de/NetworkManager/ NetworkManager] kommen, welcher bei Desktops normalerweise zur ausschließlichen Konfiguration des Netzwerks verwendet wird


Zu systemd-networkd gehört das Dienstprogramm '''networkctl''' zur Kontrolle und Steuerung des DAEMONs.
Zu systemd-networkd gehört das Dienstprogramm '''networkctl''' zur Kontrolle und Steuerung des DAEMONs


Bei systemd-networkd erfolgt die Konfiguration ausschließlich über Deklarationen. Man kann aber mit dem Zusatzprogramm [https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/ systemd/networkd-dispatcher] auch Progamme starten.
Bei systemd-networkd erfolgt die Konfiguration ausschließlich über Deklarationen
* Man kann aber mit dem Zusatzprogramm [https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/ systemd/networkd-dispatcher] auch Progamme starten


== Installation ==
== Installation ==
systemd-networkd ist auf allen aktuellen Ubuntu-Installationen als fester Bestandteil von systemd bereits vorinstalliert.
systemd-networkd ist auf allen aktuellen Ubuntu-Installationen als fester Bestandteil von systemd bereits vorinstalliert


== Aufruf ==
== Start und Stopp ==
=== Optionen ===
systemd-networkd kann nötigenfalls über diese Befehle verwaltet werden
=== Argumente ===
 
=== Umgebung ===
systemctl restart systemd-networkd.service
=== Rückgabewert ===
systemctl enable systemd-networkd.service
== Grundkonfiguration ==
systemctl status systemd-networkd.service
HINWEIS: Wenn Sie dies aus der Ferne tun, stellen Sie bitte sicher, dass Sie Zugang zum physischen Rechner haben, um Probleme beheben zu können, falls etwas schiefgeht. Sie können nicht aus der Ferne an einem Rechner arbeiten, dessen Netzwerk nicht funktioniert.
systemctl stop systemd-networkd.service
systemctl disable systemd-networkd.service
 
systemd-networkd macht nichts, wenn … * … es schon läuft und per <tt>start</tt> gestartet wird
* Wenn Änderungen übernommen werden sollen, muss man es stoppen und neu starten, der Befehl <tt>restart</tt> von '''systemctl''' macht genau dieses
* … es läuft und man die Konfiguration ändert
* … es gestoppt wird
* … es beim erneuten Start bereits konfigurierte Schnittstellen findet
* Lediglich neue Schnittstellen werden bearbeitet
 
== Konfiguration ==
; HINWEIS
: Wenn Sie dies aus der Ferne tun, stellen Sie bitte sicher, dass Sie Zugang zum physischen Rechner haben, um Probleme beheben zu können, falls etwas schiefgeht
* Sie können nicht aus der Ferne an einem Rechner arbeiten, dessen Netzwerk nicht funktioniert


Wenn Sie derzeit ein Netzwerk mit /etc/network/ betreiben, verschieben Sie die Schnittstellendatei dorthin unter einem anderen Namen, damit sie nach der Einrichtung von systemd-networkd nicht mehr verwendet wird:
Wenn Sie derzeit ein Netzwerk mit /etc/network/ betreiben, verschieben Sie die Schnittstellendatei dorthin unter einem anderen Namen, damit sie nach der Einrichtung von systemd-networkd nicht mehr verwendet wird:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="" line copy>
 
mv /etc/network/interfaces /etc/network/interfaces.save
mv /etc/network/interfaces /etc/network/interfaces.save
</syntaxhighlight>
</syntaxhighlight>


Aktivieren Sie als Nächstes systemd-networkd. Sie müssen den Dienst noch nicht starten, da Ihr altes Netzwerk noch läuft und derzeit kein systemd-networkd definiert ist.
Aktivieren Sie als Nächstes systemd-networkd
 
* Sie müssen den Dienst noch nicht starten, da Ihr altes Netzwerk noch läuft und derzeit kein systemd-networkd definiert ist
<syntaxhighlight lang="bash" highlight="" line copy>
systemctl enable systemd-networkd
systemctl enable systemd-networkd
</syntaxhighlight>
Alle Konfigurationsdateien werden in der Regel unter „/etc/systemd/network” gespeichert
* Beachten Sie, dass in den Konfigurationsdateien die Groß- und Kleinschreibung beachtet werden muss
* Match ist nicht dasselbe wie match


Alle Konfigurationsdateien werden in der Regel unter „/etc/systemd/network” gespeichert. Beachten Sie, dass in den Konfigurationsdateien die Groß- und Kleinschreibung beachtet werden muss. Match ist nicht dasselbe wie match.
Als Nächstes müssen Sie ein Netzwerk definieren
 
* Im einfachsten Fall handelt es sich dabei nur um eine einzige Datei in /etc/systemd/network
Als Nächstes müssen Sie ein Netzwerk definieren. Im einfachsten Fall handelt es sich dabei nur um eine einzige Datei in /etc/systemd/network. Verwenden wir lan0.network und fügen wir die folgenden Informationen ein:
* Verwenden wir lan0.network und fügen wir die folgenden Informationen ein:


<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="" line copy>
[Match]
[Match]
Name=eth0
Name=eth0
Zeile 45: Zeile 66:
</syntaxhighlight>
</syntaxhighlight>


Dadurch wird systemd-networkd angewiesen, eth0 (das von udev eingerichtet wurde) zu verwenden und ihm mithilfe von DHCP eine Adresse zuzuweisen.
Dadurch wird systemd-networkd angewiesen, eth0 (das von udev eingerichtet wurde) zu verwenden und ihm mithilfe von DHCP eine Adresse zuzuweisen


Für eine statische IP könnte lan0.network wie folgt aussehen:
Für eine statische IP könnte lan0.network wie folgt aussehen:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="" line copy>
[Match]
[Match]
Name=enp8s0
Name=enp8s0
Zeile 58: Zeile 79:
</syntaxhighlight>
</syntaxhighlight>


Ich empfehle an dieser Stelle einen Neustart, um das derzeit ausgeführte Netzwerk zu entfernen und sicherzustellen, dass Ihr Netzwerk ordnungsgemäß funktioniert.
Ich empfehle an dieser Stelle einen Neustart, um das derzeit ausgeführte Netzwerk zu entfernen und sicherzustellen, dass Ihr Netzwerk ordnungsgemäß funktioniert


Das ist alles, was für einen einfachen Fall erforderlich ist.
Das ist alles, was für einen einfachen Fall erforderlich ist


== Weitere Möglichkeiten ==


=== Einrichten einer Verbindung zwischen zwei Netzwerkschnittstellen ===
<noinclude>
Dies wird unter [https://wiki.debian.org/Bonding#Using_systemd-networkd https://wiki.debian.org/Bonding#Using_systemd-networkd] behandelt.


=== Einrichten einer Netzwerkbrücke ===
== Anhang ==
Wenn Sie virtuelle Maschinen betreiben, haben Sie wahrscheinlich eine Brücke in Ihrer Schnittstellendatei eingerichtet. Da diese nicht mehr verwendet wird, müssen Sie eine Brücke mit systemd-networkd einrichten. Glücklicherweise ist dies sehr einfach.
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


Zuerst müssen Sie das virtuelle Netzwerkgerät mit einer .netdev-Datei definieren (natürlich in /etc/systemd/network). Nennen wir diese Datei br0.netdev. Sie sollte wie folgt aussehen:
=== Links ===
<syntaxhighlight lang="bash" highlight="1" line copy>
==== Weblinks ====
[NetDev]
# https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html
Name=br0
# https://manpages.debian.org/man/systemd-networkd systemd-networkd
Kind=bridge
# https://manpages.debian.org/man/systemd systemd].network - basic network configuration (e.g. DHCP, static, IPv6, MAC, MTU), config also read by [https://manpages.debian.org/man/systemd-resolved systemd-resolved].service
</syntaxhighlight>
# [https://manpages.debian.org/man/systemd systemd].netdev - network device configuration (e.g. bridges, VLAN, tunnels, VPNs, etc)
# [https://wiki.debian.org/CategoryNetwork CategoryNetwork]
# [https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/ systemd/networkd-dispatcher] - auf Zustandsänderungen bei den Netzwerkschnittstellen reagieren, um beispielsweise Programm zu starten
# [https://wiki.ubuntuusers.de/systemd/networkd/Anwendungsbeispiele/ systemd/networkd/Anwendungsbeispiele]
# [https://www.freedesktop.org/software/systemd/man/systemd-networkd.html Projekseite systemd-networkd]
# [https://www.freedesktop.org/software/systemd/man/systemd.syntax.html Syntax in Konfigurationsdateien von systemd]
# [https://de.wikipedia.org/wiki/OSI-Modell ISO/OSI-Referenzmodell Netzwerk (Netzwerk-Schichten)]
# [https://standards.ieee.org/faqs/regauth.html#1 Erklärung EUI-48]


; Hinweis
: In Debian Buster (wahrscheinlich auch in früheren Versionen) weist systemd-networkd der Bridge möglicherweise eine andere MAC-Adresse zu als Ihrer physischen Schnittstelle. Dies kann zu Verbindungsproblemen führen, wenn Ihr Dienstanbieter beim Routing Ihres Datenverkehrs eine Art MAC-Filterung verwendet. Um solche Probleme zu umgehen, können Sie Ihrer Bridge eine MAC-Adresse zuweisen (wahrscheinlich die gleiche wie Ihrem physischen Gerät, ersetzen Sie „xx” durch eine gültige MAC-Adresse):
<syntaxhighlight lang="bash" highlight="1" line copy>
[NetDev]
Name=br0
Kind=bridge
MACAddress=xx:xx:xx:xx:xx:xx
</syntaxhighlight>


[[Kategorie:Linux/Netzwerk/networkd]]


Dann verknüpfen Sie es mit dem realen Netzwerkgerät unter Verwendung von br0.network:
{{DEFAULTSORT:systemd-networkd}}
<syntaxhighlight lang="bash" highlight="1" line copy>
{{DISPLAYTITLE:systemd-networkd}}


[Match]
</noinclude>
Name=eth0
 
[Network]
Bridge=br0
</syntaxhighlight>
 
 
Ändern Sie schließlich lan0.network so, dass es auf br0 statt auf eth0 verweist:
<syntaxhighlight lang="bash" highlight="1" line copy>
[Match]
Name=br0
 
[Netzwerk]
DHCP=ipv4
</syntaxhighlight>
 
 
Starten Sie systemd-networkd neu, und Ihre Bridge sollte nun aktiv sein.
<syntaxhighlight lang="bash" highlight="1" line copy>
systemctl restart systemd-networkd
</syntaxhighlight>
 
=== Bridging über eine Bond-Verbindung ===
Bridging über eine Bond-Verbindung ist ganz einfach: Sie müssen in Ihrer Datei br0.network statt auf ein physisches Gerät auf das Bond-Gerät verweisen. Ändern Sie das obige Bridge-Beispiel so, dass br0.network nun wie folgt lautet:
<syntaxhighlight lang="bash" highlight="1" line copy>
[Match]
Name=bond0
 
[Netzwerk]
Bridge=br0
</syntaxhighlight>
 
vorausgesetzt, Ihr virtuelles Bond-Gerät heißt bond0.
 
=== Konfigurieren der physikalischen Schicht ===
Im Allgemeinen benötigen Sie keine .link-Datei, da udev das Gerät bereits identifiziert. Sie können hier jedoch mehrere Optionen konfigurieren, die an anderer Stelle nicht eingestellt werden können. Die grundlegendste davon ist der Name.
 
uDev leistet heutzutage gute Arbeit bei der konsistenten Handhabung der Benennung von Netzwerkgeräten. Sofern Sie keine veralteten Namen wie eth0 haben (die jetzt unter Verwendung der uDev-Benennungsregeln eingerichtet werden, um die normale Vorgehensweise von uDev zu überschreiben), lauten die Namen von kabelgebundenen Schnittstellen in der Regel etwa „enp5s0”. Diese Ableitung erfolgt aus der PCI-Adresse.
 
Mit dem Befehl lspci werden Ihnen die Adressen aller PCI-Geräte in Ihrem System angezeigt. Sie sollten eine Zeile sehen, die Ihre Netzwerkschnittstelle beschreibt, wie z. B.
<syntaxhighlight lang="bash" highlight="1" line copy>
05:00.0 Ethernet-Controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
</syntaxhighlight>
 
wobei der Teil 05 zu 5 in enp5s0 und der Teil 00.0 zu 0 wird.
 
enp5s0 ist nicht sehr aussagekräftig, wenn Sie mehrere Netzwerkkarten in Ihrem System haben, z. B. wenn Sie die Netzwerkkarten für eine größere Bandbreite auf einem Server miteinander verbinden. Um der Schnittstelle einen aussagekräftigeren Namen zu geben, erstellen Sie einfach eine .network-Datei (z. B. onboardnic.network) wie folgt
<syntaxhighlight lang="bash" highlight="1" line copy>
[Match]
Path=pci-0000:05:00.0
[Network]
Bond=bond0
</syntaxhighlight>
 
und verweisen Sie in Ihrer Datei bond0.network auf onboardnic statt auf enp5s0.
 
Sie können auch eine .link-Datei erstellen, um ihr einen aussagekräftigeren Namen zu geben.
 
manpage: [https://manpages.debian.org/stretch/udev/systemd.link.5.en.html https://manpages.debian.org/stretch/udev/systemd.link.5.en.html]
 
Konfigurationsdateien auf Verbindungsebene müssen auf .link enden
 
Um onboardnic zu konfigurieren, können Sie also die Datei /etc/systemd/network/onboardnic.link erstellen, beispielsweise:
<syntaxhighlight lang="bash" highlight="1" line copy>
[Match]
OriginalName=enp5s0
</syntaxhighlight>
 
 
oder direkter
<syntaxhighlight lang="bash" highlight="1" line copy>
 
[Match]
Path=pci-0000:05:00.0
</syntaxhighlight>
 
Leider verwenden Tools außerhalb Ihrer systemd-networkd-Konfiguration den von udev vergebenen Namen.
 
=== Dateien ===
 
== Sicherheit ==
== Dokumentation ==
=== RFC ===
=== Man-Page ===
=== Info-Pages ===
== Siehe auch ==
== Links ==
=== Projekt ===
=== Weblinks ===
* [https://manpages.debian.org/man/systemd-networkd systemd-networkd] - overview
* [https://manpages.debian.org/man/systemd systemd].network - basic network configuration (e.g. DHCP, static, IPv6, MAC, MTU), config also read by [https://manpages.debian.org/man/systemd-resolved systemd-resolved].service
* [https://manpages.debian.org/man/systemd systemd].netdev - network device configuration (e.g. bridges, VLAN, tunnels, VPNs, etc)
* [https://wiki.debian.org/CategoryNetwork CategoryNetwork]
* [https://wiki.ubuntuusers.de/systemd/networkd-dispatcher/ systemd/networkd-dispatcher] - auf Zustandsänderungen bei den Netzwerkschnittstellen reagieren, um beispielsweise Programm zu starten
* [https://wiki.ubuntuusers.de/systemd/networkd/Anwendungsbeispiele/ systemd/networkd/Anwendungsbeispiele]
* [https://www.freedesktop.org/software/systemd/man/systemd-networkd.html Projekseite systemd-networkd]
* [https://www.freedesktop.org/software/systemd/man/systemd.syntax.html Syntax in Konfigurationsdateien von systemd]
* [https://de.wikipedia.org/wiki/OSI-Modell ISO/OSI-Referenzmodell Netzwerk (Netzwerk-Schichten)]
* [https://standards.ieee.org/faqs/regauth.html#1 Erklärung EUI-48]
 
 
 
[[Kategorie:Linux/Netzwerk/networkd]]

Aktuelle Version vom 3. September 2025, 08:12 Uhr

Systemd/Networkd - Beschreibung

Beschreibung

Der Netzwerk-DAEMON systemd-networkd gehört zur systemd-Familie und konfiguriert Netzwerkschnittstellen auf den Ebenen 2 und 3 des ISO/OSI-Referenzmodells

  • Mit diesem Programm kann man auch auf realen Schnittstellen aufbauende virtuelle Schnittstellen wie beispielsweise Brücken, Tunnel, VPN erstellen und diese konfigurieren
  • Das Programm kümmert sich aber nicht um Ebene 2 bei WLAN-Schnittstellen

Bei Ubuntu-Server-Installationen wird systemd-networkd als systemd-Unit gestartet und als einziges Programm für die Konfiguration des Netzwerks verwendet. (Siehe jedoch Netplan.)

Bei Ubuntu-Desktop-Installationen wird systemd-networkd lediglich installiert, aber nicht gestartet

  • Beim Start kann es wechselweise zu Störungen mit NetworkManager kommen, welcher bei Desktops normalerweise zur ausschließlichen Konfiguration des Netzwerks verwendet wird

Zu systemd-networkd gehört das Dienstprogramm networkctl zur Kontrolle und Steuerung des DAEMONs

Bei systemd-networkd erfolgt die Konfiguration ausschließlich über Deklarationen

Installation

systemd-networkd ist auf allen aktuellen Ubuntu-Installationen als fester Bestandteil von systemd bereits vorinstalliert

Start und Stopp

systemd-networkd kann nötigenfalls über diese Befehle verwaltet werden

systemctl restart systemd-networkd.service
systemctl enable systemd-networkd.service
systemctl status systemd-networkd.service
systemctl stop systemd-networkd.service
systemctl disable systemd-networkd.service

systemd-networkd macht nichts, wenn … * … es schon läuft und per start gestartet wird

  • Wenn Änderungen übernommen werden sollen, muss man es stoppen und neu starten, der Befehl restart von systemctl macht genau dieses
  • … es läuft und man die Konfiguration ändert
  • … es gestoppt wird
  • … es beim erneuten Start bereits konfigurierte Schnittstellen findet
  • Lediglich neue Schnittstellen werden bearbeitet

Konfiguration

HINWEIS
Wenn Sie dies aus der Ferne tun, stellen Sie bitte sicher, dass Sie Zugang zum physischen Rechner haben, um Probleme beheben zu können, falls etwas schiefgeht
  • Sie können nicht aus der Ferne an einem Rechner arbeiten, dessen Netzwerk nicht funktioniert

Wenn Sie derzeit ein Netzwerk mit /etc/network/ betreiben, verschieben Sie die Schnittstellendatei dorthin unter einem anderen Namen, damit sie nach der Einrichtung von systemd-networkd nicht mehr verwendet wird:

mv /etc/network/interfaces /etc/network/interfaces.save

Aktivieren Sie als Nächstes systemd-networkd

  • Sie müssen den Dienst noch nicht starten, da Ihr altes Netzwerk noch läuft und derzeit kein systemd-networkd definiert ist
systemctl enable systemd-networkd

Alle Konfigurationsdateien werden in der Regel unter „/etc/systemd/network” gespeichert

  • Beachten Sie, dass in den Konfigurationsdateien die Groß- und Kleinschreibung beachtet werden muss
  • Match ist nicht dasselbe wie match

Als Nächstes müssen Sie ein Netzwerk definieren

  • Im einfachsten Fall handelt es sich dabei nur um eine einzige Datei in /etc/systemd/network
  • Verwenden wir lan0.network und fügen wir die folgenden Informationen ein:
[Match]
Name=eth0

[Network]
DHCP=ipv4

Dadurch wird systemd-networkd angewiesen, eth0 (das von udev eingerichtet wurde) zu verwenden und ihm mithilfe von DHCP eine Adresse zuzuweisen

Für eine statische IP könnte lan0.network wie folgt aussehen:

[Match]
Name=enp8s0

[Network]
Address=192.168.1.20/24
Gateway=192.168.1.1
DNS=192.168.1.1

Ich empfehle an dieser Stelle einen Neustart, um das derzeit ausgeführte Netzwerk zu entfernen und sicherzustellen, dass Ihr Netzwerk ordnungsgemäß funktioniert

Das ist alles, was für einen einfachen Fall erforderlich ist



Anhang

Siehe auch


Links

Weblinks

  1. https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html
  2. https://manpages.debian.org/man/systemd-networkd systemd-networkd
  3. https://manpages.debian.org/man/systemd systemd].network - basic network configuration (e.g. DHCP, static, IPv6, MAC, MTU), config also read by systemd-resolved.service
  4. systemd.netdev - network device configuration (e.g. bridges, VLAN, tunnels, VPNs, etc)
  5. CategoryNetwork
  6. systemd/networkd-dispatcher - auf Zustandsänderungen bei den Netzwerkschnittstellen reagieren, um beispielsweise Programm zu starten
  7. systemd/networkd/Anwendungsbeispiele
  8. Projekseite systemd-networkd
  9. Syntax in Konfigurationsdateien von systemd
  10. ISO/OSI-Referenzmodell Netzwerk (Netzwerk-Schichten)
  11. Erklärung EUI-48