Systemd Baustein Netzwerk

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Baustein ab Stufe Lernpfad
Netzwerk Stufe 2 Übersicht

Einfach erklärt

  • Unter Linux gibt es mehrere Programme, die das Netzwerk einrichten. Auf einem System darf immer nur eines eine Netzwerkkarte verwalten.
  • systemd-networkd ist das Netzwerkprogramm von systemd. Es liest einfache Textdateien aus /etc/systemd/network/.
  • Eine .network-Datei sagt: Für diese Karte gilt diese Adresse, dieses Gateway, dieser DNS-Server.
  • Mit ip addr add gesetzte Adressen sind nach dem Neustart weg. Dauerhaft wird es erst über eine Konfigurationsdatei.

Wer verwaltet das Netz?

Programm Konfiguration typisch bei
ifupdown (networking.service) /etc/network/interfaces Debian-Server
NetworkManager nmcli, /etc/NetworkManager/ Desktops, Rocky Linux
systemd-networkd /etc/systemd/network/ Server, Container, VMs, schlanke Systeme
  • Nachschauen, was läuft:
  • systemctl is-active networking NetworkManager systemd-networkd

Das Wichtigste

  • Drei Dateitypen in /etc/systemd/network/:
    • .network: Adressen, Gateway, DNS, DHCP
    • .link: Name und Eigenschaften der Karte, z.B. umbenennen
    • .netdev: virtuelle Geräte wie Bridge, VLAN, Bond
  • Die Dateien werden in alphabetischer Reihenfolge gelesen, die erste passende .network gewinnt. Deshalb beginnen die Namen mit Zahlen: 10-, 20-, …
  • Die Schlüsselwörter sind englisch. [Network] und Address= funktionieren, [Netzwerk] und Adresse= ignoriert systemd.
  • Für DNS gehört systemd-resolved dazu. Bei Debian 13 ist es ein eigenes Paket.

Umstieg auf systemd-networkd (Debian)

  • Am besten an der Konsole machen, nicht über ssh. Ein Fehler, und die Verbindung ist weg.
apt install systemd-resolved
mv /etc/network/interfaces /etc/network/interfaces.save
systemctl disable networking
systemctl enable systemd-networkd
  • Dann die .network-Datei anlegen (siehe unten) und neu starten oder:
systemctl stop networking
systemctl start systemd-networkd

Feste IP-Adresse

  • Erst den Namen der Karte herausfinden: ip -br link
  • /etc/systemd/network/10-lan.network
[Match]
Name=enp1s0

[Network]
Address=10.0.12.201/24
Gateway=10.0.12.1
DNS=10.0.12.1
Domains=lab.lan
  • networkctl reload
  • networkctl status enp1s0

Mehrere Adressen und Routen

[Match]
Name=enp1s0

[Network]
Address=10.0.12.201/24
Address=10.0.12.250/24
Gateway=10.0.12.1
DNS=10.0.12.1

[Route]
Destination=192.168.100.0/24
Gateway=10.0.12.254

DHCP

  • /etc/systemd/network/20-dhcp.network
[Match]
Name=en*

[Network]
DHCP=yes
  • Name=en* passt auf alle kabelgebundenen Karten.
  • DHCP=ipv4 oder DHCP=ipv6 für nur eine Version.

Anzeigen und prüfen

Befehl Wirkung
networkctl list alle Karten und ob networkd sie verwaltet
networkctl status enp1s0 Adressen, Gateway, DNS und die letzten Logzeilen
networkctl reload geänderte Dateien neu einlesen
networkctl reconfigure enp1s0 eine Karte neu konfigurieren
resolvectl status welcher DNS-Server für welche Karte gilt
resolvectl query xinux.net Namen auflösen über systemd-resolved
journalctl -u systemd-networkd -e Fehler beim Einlesen der Dateien
  • networkctl list
IDX LINK   TYPE     OPERATIONAL SETUP
  1 lo     loopback carrier     unmanaged
  2 enp1s0 ether    routable    configured
  • configured heißt: networkd verwaltet die Karte. unmanaged: Keine .network-Datei passt.

Netzwerkkarte umbenennen

  • /etc/systemd/network/10-lan0.link
[Match]
MACAddress=52:54:00:12:34:56

[Link]
Name=lan0
  • Die .link-Datei wird schon in der initramfs gebraucht, deshalb danach:
  • update-initramfs -u
  • Neustart nötig.
  • Keine Namen wie eth0 nehmen. Die vergibt auch der Kernel, und es kann zu Konflikten kommen.

Bridge für VMs

  • /etc/systemd/network/30-br0.netdev
[NetDev]
Name=br0
Kind=bridge
  • /etc/systemd/network/30-br0-port.network
[Match]
Name=enp1s0

[Network]
Bridge=br0
  • /etc/systemd/network/30-br0.network
[Match]
Name=br0

[Network]
Address=10.0.12.201/24
Gateway=10.0.12.1
DNS=10.0.12.1
  • Die Adresse gehört jetzt an die Bridge, nicht mehr an die Karte.

Nur vorübergehend: ip

  • Für schnelle Tests, nach dem Neustart weg:
ip addr add 10.0.12.201/24 dev enp1s0
ip link set enp1s0 up
ip route add default via 10.0.12.1

Stolperfallen

  • Deutsche Schlüsselwörter wie [Netzwerk] oder Adresse= werden still ignoriert. Im Journal steht dann Unknown section oder Unknown key.
  • Zwei Verwalter gleichzeitig: ifupdown oder NetworkManager und networkd auf derselben Karte streiten sich. Nur einen aktiv lassen.
  • Name passt nicht: Ein Tippfehler in Name= macht die Karte unmanaged. networkctl list zeigt es.
  • Über ssh umgestellt und ausgesperrt: Immer eine Konsole bereithalten, bei VMs die Konsole in Proxmox.
  • DNS geht nicht: Ohne systemd-resolved werden DNS= aus .network nicht benutzt. resolvectl status prüfen.

Aufgaben

Grundaufgaben

  1. Finden Sie heraus, welches Programm auf Ihrem System das Netzwerk verwaltet.
  2. Setzen Sie mit ip addr add eine zusätzliche Adresse und prüfen Sie nach einem Neustart, ob sie noch da ist.
  3. Stellen Sie eine VM auf systemd-networkd mit fester Adresse um. Prüfen Sie mit networkctl status und ping.
  4. Stellen Sie dieselbe VM auf DHCP um.
  5. Prüfen Sie mit resolvectl status, welcher DNS-Server benutzt wird.

Für Schnelle

  1. Schreiben Sie absichtlich Address= als Adresse= und suchen Sie die Meldung im Journal.
  2. Benennen Sie die Netzwerkkarte per .link-Datei in lan0 um.
  3. Richten Sie eine Bridge br0 ein und hängen Sie die Karte daran.

Weiter