Kurzfassung: Linux bietet mehrere Tools zur Netzwerk-Konfiguration: netplan (deklarativ), NetworkManager (dynamisch), nmtui (TUI) und systemd-networkd (systemd-integriert). Die Wahl hängt von Distribution und Anwendungsfall ab. Zielgruppe: Systemadministratoren zur Netzwerkverwaltung.
Die Netzwerk-Konfiguration unter Linux hat sich über die Jahre weiterentwickelt. Moderne Systeme nutzen verschiedene Ansätze:
Diese Tools können teilweise parallel existieren, wobei meist eines als primäres Backend dient.
netplan ist ein Abstraktions-Layer, der YAML-Konfigurationen in Backend-spezifische Befehle übersetzt (NetworkManager oder systemd-networkd).
Installation und Status:
# netplan installieren (meist vorinstalliert auf Ubuntu) sudo apt install netplan.io # Aktuelle Konfiguration anzeigen sudo netplan get # Welches Backend wird genutzt? cat /etc/netplan/*.yaml | grep renderer # renderer: networkd → systemd-networkd # renderer: NetworkManager → NetworkManager
Konfigurationsdateien:
# Haupt-Konfigurationsverzeichnis ls /etc/netplan/ # Typische Dateien: # 01-netcfg.yaml # 01-network-manager-all.yaml # 50-cloud-init.yaml (bei Cloud-Instanzen) # Konfiguration bearbeiten sudo nano /etc/netplan/01-netcfg.yaml
DHCP-Konfiguration:
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true dhcp6: false
Statische IP-Konfiguration:
network: version: 2 renderer: networkd ethernets: eth0: addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 search: - example.com
Mehrere IP-Adressen:
network: version: 2 renderer: networkd ethernets: eth0: addresses: - 192.168.1.100/24 - 192.168.1.101/24 - 10.0.0.50/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]
WLAN-Konfiguration:
network: version: 2 renderer: NetworkManager wifis: wlan0: dhcp4: true access-points: "MeinWLAN": password: "GeheimesPasswort"
netplan Befehle:
# Konfiguration testen (ohne Anwenden) sudo netplan try # Konfiguration anwenden sudo netplan apply # Debug-Modus sudo netplan --debug apply # Generierte Backend-Konfiguration anzeigen sudo netplan generate ls /run/systemd/network/ # für networkd ls /run/NetworkManager/ # für NetworkManager # Syntax prüfen sudo netplan get
netplan try nutzen! Nach 120 Sekunden wird automatisch zur alten Konfiguration zurückgekehrt, falls nicht bestätigt wird.
NetworkManager ist der Standard für Desktop-Systeme und unterstützt dynamische Netzwerk-Verwechslungen (WiFi-Roaming, VPN, etc.).
Installation und Status:
# NetworkManager installieren sudo apt install network-manager # Status prüfen sudo systemctl status NetworkManager # NetworkManager aktivieren sudo systemctl enable NetworkManager sudo systemctl start NetworkManager # Version anzeigen nmcli --version
nmcli - Kommandozeilen-Interface:
Übersicht:
# Alle Verbindungen anzeigen nmcli connection show # Aktive Verbindungen nmcli connection show --active # Geräte-Status nmcli device status # Detaillierte Geräte-Info nmcli device show eth0 # WiFi-Netzwerke scannen nmcli device wifi list
Verbindung erstellen:
# Ethernet mit DHCP sudo nmcli connection add type ethernet con-name eth0-dhcp ifname eth0 # Ethernet mit statischer IP sudo nmcli connection add type ethernet con-name eth0-static ifname eth0 \ ip4 192.168.1.100/24 gw4 192.168.1.1 # DNS-Server hinzufügen sudo nmcli connection modify eth0-static ipv4.dns "8.8.8.8 8.8.4.4" # WiFi-Verbindung sudo nmcli device wifi connect "SSID" password "Passwort" # Oder mit allen Optionen sudo nmcli connection add type wifi con-name mein-wifi ifname wlan0 \ ssid "MeinWLAN" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "GeheimesPasswort"
Verbindungen verwalten:
# Verbindung aktivieren sudo nmcli connection up eth0-static # Verbindung deaktivieren sudo nmcli connection down eth0-static # Verbindung löschen sudo nmcli connection delete eth0-static # Verbindung bearbeiten sudo nmcli connection edit eth0-static # Verbindung neu laden sudo nmcli connection reload # Verbindungsdetails ändern sudo nmcli connection modify eth0-static ipv4.addresses 192.168.1.200/24 sudo nmcli connection modify eth0-static ipv4.gateway 192.168.1.1 sudo nmcli connection modify eth0-static ipv4.method manual
Geräte-Management:
# Gerät neu verbinden sudo nmcli device connect eth0 # Gerät trennen sudo nmcli device disconnect eth0 # Gerät verwalten (von unmanaged zu managed) sudo nmcli device set eth0 managed yes # WiFi aktivieren/deaktivieren nmcli radio wifi on nmcli radio wifi off
nmtui bietet ein interaktives Terminal-Interface für NetworkManager.
# nmtui starten sudo nmtui # Oder direkt in spezifischen Modus: sudo nmtui-edit # Verbindungen bearbeiten sudo nmtui-connect # Verbindung aktivieren sudo nmtui-hostname # Hostname setzen
nmtui Features:
systemd-networkd ist das native Netzwerk-Management von systemd, leichtgewichtig und ideal für Server.
Aktivierung:
# systemd-networkd aktivieren sudo systemctl enable systemd-networkd sudo systemctl start systemd-networkd # Status prüfen sudo systemctl status systemd-networkd # NetworkManager deaktivieren (wenn gewünscht) sudo systemctl disable NetworkManager sudo systemctl stop NetworkManager # Wichtig: systemd-resolved für DNS sudo systemctl enable systemd-resolved sudo systemctl start systemd-resolved
Konfigurationsdateien:
# Verzeichnis für Netzwerk-Konfiguration ls /etc/systemd/network/ # Dateien werden alphabetisch geladen: # 10-eth0.network # 20-wlan0.network # Runtime-Konfiguration (höchste Priorität) ls /run/systemd/network/ # System-Konfiguration ls /lib/systemd/network/
DHCP-Konfiguration:
# /etc/systemd/network/10-eth0.network [Match] Name=eth0 [Network] DHCP=yes
Statische IP-Konfiguration:
# /etc/systemd/network/10-eth0.network [Match] Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 DNS=8.8.4.4 Domains=example.com [Route] Destination=0.0.0.0/0 Gateway=192.168.1.1
Mehrere IP-Adressen:
[Match] Name=eth0 [Network] Address=192.168.1.100/24 Address=192.168.1.101/24 Address=10.0.0.50/24 Gateway=192.168.1.1 DNS=8.8.8.8
VLAN-Konfiguration:
# /etc/systemd/network/10-eth0.netdev [NetDev] Name=vlan10 Kind=vlan [VLAN] Id=10 # /etc/systemd/network/11-vlan10.network [Match] Name=vlan10 [Network] Address=192.168.10.100/24
Bridge-Konfiguration:
# /etc/systemd/network/10-bridge.netdev [NetDev] Name=br0 Kind=bridge # /etc/systemd/network/20-br0.network [Match] Name=br0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1
systemd-networkd Befehle:
# Netzwerk-Status networkctl status # Spezifisches Interface networkctl status eth0 # Liste aller Interfaces networkctl list # Konfiguration neu laden sudo networkctl reload # Interface neu konfigurieren sudo networkctl reconfigure eth0 # DNS-Auflösung (über systemd-resolved) resolvectl status resolvectl query example.com
systemd-resolved (modern):
# Status anzeigen resolvectl status # DNS-Server für Interface setzen (temporär) sudo resolvectl dns eth0 8.8.8.8 1.1.1.1 # Domains für Interface sudo resolvectl domain eth0 example.com # DNS-Cache leeren sudo resolvectl flush-caches # Symlink für /etc/resolv.conf (permanent) sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Klassische /etc/resolv.conf:
# Nur wenn systemd-resolved nicht genutzt wird sudo nano /etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4 search example.com
Entscheidungshilfe:
netplan + systemd-networkd:
NetworkManager:
systemd-networkd (direkt):
nmtui:
Verbindungsprobleme diagnostizieren:
# Interface-Status ip addr show ip link show # Routing-Tabelle ip route show # DNS-Auflösung testen nslookup google.com dig google.com resolvectl query google.com # Ping-Test ping -c 4 8.8.8.8 ping -c 4 google.com # Traceroute traceroute google.com mtr google.com # Aktive Verbindungen ss -tunap netstat -tunap
Logs analysieren:
# NetworkManager Logs sudo journalctl -u NetworkManager -n 50 -f # systemd-networkd Logs sudo journalctl -u systemd-networkd -n 50 -f # Kernel-Netzwerk-Logs sudo dmesg | grep -i network sudo dmesg | grep eth0 # netplan Logs sudo journalctl -t netplan
Interface zurücksetzen:
# Mit ip-Kommando sudo ip link set eth0 down sudo ip link set eth0 up # Mit NetworkManager sudo nmcli device disconnect eth0 sudo nmcli device connect eth0 # Mit systemd-networkd sudo networkctl reconfigure eth0 # Kompletter Netzwerk-Neustart sudo systemctl restart NetworkManager # oder sudo systemctl restart systemd-networkd
sudo cp /etc/netplan/*.yaml /root/backup/
- Bei Remote-Zugriff: netplan try verwenden (Auto-Rollback nach 120s)
- Nur ein primäres Netzwerk-Tool verwenden (NetworkManager ODER networkd)
- DNS mit systemd-resolved für konsistente Auflösung
- YAML-Syntax in netplan: Einrückung mit Leerzeichen (keine Tabs!)
- nmtui für schnelle Änderungen auf Servern ideal
/etc/resolv.conf manuell editieren wenn systemd-resolved aktiv → wird überschrieben
- netplan apply ohne try auf Remote-Server → Lock-out-Risiko!
- NetworkManager und systemd-networkd gleichzeitig für gleiche Interfaces
- DHCP auf statisch ändern ohne Gateway/DNS → keine Verbindung