(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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
|
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