Zum Inhalt springen

Systemd/Networkd

Aus Foxwiki

Systemd-networkd

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. Man kann aber mit dem Zusatzprogramm systemd/networkd-dispatcher auch Progamme starten.

Installation

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

Anwendungen

Problembehebung

Aufruf

Optionen

Argumente

Umgebung

Rückgabewert

Konfiguration

Grundkonfiguration

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.

Über die Grundlagen hinaus

Einrichten einer Verbindung zwischen zwei Netzwerkschnittstellen

Dies wird unter https://wiki.debian.org/Bonding#Using_systemd-networkd behandelt.

Einrichten einer Netzwerkbrücke

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.

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:

[NetDev]
Name=br0
Kind=bridge
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):
[NetDev]
Name=br0
Kind=bridge
MACAddress=xx:xx:xx:xx:xx:xx


Dann verknüpfen Sie es mit dem realen Netzwerkgerät unter Verwendung von br0.network:

[Match]
Name=eth0

[Network]
Bridge=br0


Ändern Sie schließlich lan0.network so, dass es auf br0 statt auf eth0 verweist:

[Match]
Name=br0

[Netzwerk]
DHCP=ipv4


Starten Sie systemd-networkd neu, und Ihre Bridge sollte nun aktiv sein.

systemctl restart systemd-networkd

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:

[Match]
Name=bond0

[Netzwerk]
Bridge=br0

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.

05:00.0 Ethernet-Controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)

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

[Match]
Path=pci-0000:05:00.0
[Network]
Bond=bond0

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

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:

[Match]
OriginalName=enp5s0


oder direkter

[Match]
Path=pci-0000:05:00.0

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


Setting up Systemd-Networkd