===== Netzwerk-Konfiguration ===== **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. ==== Übersicht ==== Die Netzwerk-Konfiguration unter Linux hat sich über die Jahre weiterentwickelt. Moderne Systeme nutzen verschiedene Ansätze: * **netplan**: Deklarative Konfiguration (Ubuntu/Debian-Standard seit 17.10) * **NetworkManager**: Dynamische Verwaltung für Desktop und Server * **nmtui/nmcli**: Text-Interface und CLI für NetworkManager * **systemd-networkd**: Systemd-natives Netzwerk-Management Diese Tools können teilweise parallel existieren, wobei meist eines als primäres Backend dient. ==== Voraussetzungen ==== * Root-Privilegien oder Sudo-Zugriff * Kenntnis von IP-Adressen, Subnetz-Masken und Gateways * Verständnis von DNS und Routing * Backup der Netzwerkkonfiguration vor Änderungen! ==== Anleitung ==== === netplan - Deklarative Konfiguration === 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 **WICHTIG:** ''netplan try'' nutzen! Nach 120 Sekunden wird automatisch zur alten Konfiguration zurückgekehrt, falls nicht bestätigt wird. === NetworkManager - Dynamische Verwaltung === 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 - Text User Interface === 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:** * Cursor-gesteuerte Menüs (Pfeiltasten) * Verbindungen erstellen/bearbeiten/löschen * WiFi-Netzwerke auswählen * Hostname ändern * Ideal für Server ohne GUI nmtui ist besonders hilfreich auf Servern ohne grafische Oberfläche oder bei Remote-Zugriff über SSH. === systemd-networkd - Systemd-Integration === 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 === DNS-Konfiguration === **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 === Welches Tool verwenden? === **Entscheidungshilfe:** **netplan + systemd-networkd:** * ✓ Ubuntu/Debian Server (Standard) * ✓ Einfache, lesbare YAML-Konfiguration * ✓ Statische Konfigurationen * ✓ Cloud-Instanzen * ✗ Kein dynamisches WiFi-Roaming **NetworkManager:** * ✓ Desktop-Systeme (GNOME, KDE) * ✓ Laptops mit WiFi * ✓ Dynamische Netzwerk-Wechsel * ✓ VPN-Integration * ✗ Mehr Overhead auf Servern **systemd-networkd (direkt):** * ✓ Minimale Server-Installation * ✓ Container und VMs * ✓ Systemd-zentrierte Infrastruktur * ✓ Leichtgewichtig * ✗ Weniger Features als NetworkManager **nmtui:** * ✓ Schnelle Änderungen ohne GUI * ✓ Remote-Server über SSH * ✓ Benutzerfreundlich * ✗ Benötigt NetworkManager im Backend === Troubleshooting === **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 ==== Hinweise ==== **Best Practices:** - Vor Änderungen immer Backup: ''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 **Häufige Fehler vermeiden:** - netplan YAML: Tabs statt Leerzeichen → Syntax-Fehler! - Mehrere Netzwerk-Manager parallel → Konflikte möglich - ''/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 ==== Siehe auch ==== * [[sammlung:ip|ip]] * [[sammlung:ifconfig|ifconfig]] * [[sammlung:route|route]] * [[sammlung:dns|DNS]] * [[sammlung:systemd|systemd]] ==== Quellen ==== * [[https://netplan.io/|netplan.io Documentation]] * [[https://networkmanager.dev/|NetworkManager Documentation]] * [[https://www.freedesktop.org/software/systemd/man/systemd-networkd.html|systemd-networkd Manual]] * [[https://www.freedesktop.org/software/systemd/man/systemd.network.html|systemd.network Manual]] ---- {{tag>netzwerk network netplan networkmanager nmtui systemd-networkd ip dns}} ----