Systemd Baustein Netzwerk
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
- Finden Sie heraus, welches Programm auf Ihrem System das Netzwerk verwaltet.
- Setzen Sie mit ip addr add eine zusätzliche Adresse und prüfen Sie nach einem Neustart, ob sie noch da ist.
- Stellen Sie eine VM auf systemd-networkd mit fester Adresse um. Prüfen Sie mit networkctl status und ping.
- Stellen Sie dieselbe VM auf DHCP um.
- Prüfen Sie mit resolvectl status, welcher DNS-Server benutzt wird.
Für Schnelle
- Schreiben Sie absichtlich Address= als Adresse= und suchen Sie die Meldung im Journal.
- Benennen Sie die Netzwerkkarte per .link-Datei in lan0 um.
- Richten Sie eine Bridge br0 ein und hängen Sie die Karte daran.
Weiter
- Übersicht: Lernpfad systemd
- Alte Seiten: Systemd-networkd · Systemd link