===== 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}}
----