Netplan ist das Standard-Netzwerk-Konfigurationstool für Ubuntu seit Version 17.10. Es verwendet YAML-Dateien und abstrahiert die Konfiguration für NetworkManager oder systemd-networkd.
Grundlagen
Architektur
YAML-Konfiguration → Netplan → Backend (NetworkManager/systemd-networkd)
Konfigurationsdateien
/etc/netplan/*.yaml # Konfigurationsdateien
/run/netplan/*.yaml # Temporäre Konfiguration
/lib/netplan/*.yaml # Paket-Defaults
Backend wählen
# NetworkManager (Desktop)
network:
renderer: NetworkManager
# systemd-networkd (Server)
network:
renderer: networkd
Statische IP-Konfiguration
Einfache Konfiguration
# /etc/netplan/01-netcfg.yaml
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
Mehrere IPs
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
- 192.168.1.101/24
- 10.0.0.50/8
routes:
- to: default
via: 192.168.1.1
IPv6
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
- "2001:db8::100/64"
routes:
- to: default
via: 192.168.1.1
- to: "::/0"
via: "2001:db8::1"
nameservers:
addresses:
- 8.8.8.8
- "2001:4860:4860::8888"
DHCP-Konfiguration
Einfaches DHCP
network:
version: 2
ethernets:
eth0:
dhcp4: true
DHCP mit Optionen
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp4-overrides:
use-dns: false
use-routes: true
use-hostname: true
nameservers:
addresses:
- 8.8.8.8
DHCPv6
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: true
accept-ra: true
Konfiguration anwenden
Syntax prüfen
# Konfiguration validieren
netplan generate
# Detaillierte Ausgabe
netplan generate --debug
Anwenden
# Konfiguration anwenden
netplan apply
# Mit Rollback bei Fehler (30 Sekunden)
netplan try
# Timeout anpassen
netplan try --timeout 60
Aktuelle Konfiguration
# Konfiguration anzeigen
netplan get
# IP-Adressen prüfen
ip addr show
Bonding (Link Aggregation)
Active-Backup
network:
version: 2
ethernets:
eth0:
dhcp4: false
eth1:
dhcp4: false
bonds:
bond0:
interfaces:
- eth0
- eth1
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
parameters:
mode: active-backup
primary: eth0
mii-monitor-interval: 100
LACP (802.3ad)
network:
version: 2
bonds:
bond0:
interfaces:
- eth0
- eth1
addresses:
- 192.168.1.100/24
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
transmit-hash-policy: layer3+4
Bonding-Modi
| Modus | Beschreibung |
|---|
| balance-rr | Round-Robin |
| active-backup | Failover |
| balance-xor | XOR-Hash |
| broadcast | Alle Interfaces |
| 802.3ad | LACP |
| balance-tlb | Adaptive Transmit |
| balance-alb | Adaptive Load |
VLANs
Einfaches VLAN
network:
version: 2
ethernets:
eth0:
dhcp4: false
vlans:
vlan100:
id: 100
link: eth0
addresses:
- 192.168.100.10/24
Mehrere VLANs
network:
version: 2
ethernets:
eth0:
dhcp4: false
vlans:
vlan10:
id: 10
link: eth0
addresses:
- 10.10.10.5/24
vlan20:
id: 20
link: eth0
addresses:
- 10.10.20.5/24
vlan30:
id: 30
link: eth0
dhcp4: true
VLAN mit Bonding
network:
version: 2
ethernets:
eth0: {}
eth1: {}
bonds:
bond0:
interfaces: [eth0, eth1]
parameters:
mode: 802.3ad
vlans:
vlan100:
id: 100
link: bond0
addresses:
- 192.168.100.10/24
Bridges
Einfache Bridge
network:
version: 2
ethernets:
eth0:
dhcp4: false
eth1:
dhcp4: false
bridges:
br0:
interfaces:
- eth0
- eth1
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
Bridge für VMs (KVM)
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
bridges:
br0:
interfaces:
- enp3s0
dhcp4: true
parameters:
stp: false
forward-delay: 0
Bridge-Parameter
bridges:
br0:
interfaces: [eth0]
parameters:
stp: true
forward-delay: 4
max-age: 20
hello-time: 2
priority: 32768
Routing
Statische Routen
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
- to: 10.0.0.0/8
via: 192.168.1.254
- to: 172.16.0.0/12
via: 192.168.1.253
metric: 100
Policy-Based Routing
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
table: 100
routing-policy:
- from: 192.168.1.100
table: 100
priority: 100
Mehrere Gateways
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
metric: 100
eth1:
addresses:
- 10.0.0.100/24
routes:
- to: default
via: 10.0.0.1
metric: 200
Wireless (WLAN)
WPA2 Personal
network:
version: 2
renderer: NetworkManager
wifis:
wlan0:
dhcp4: true
access-points:
"MeinNetzwerk":
password: "GeheimesPasswort"
WPA2 Enterprise
network:
version: 2
wifis:
wlan0:
dhcp4: true
access-points:
"FirmenNetzwerk":
auth:
key-management: eap
method: peap
identity: "benutzer@firma.de"
password: "passwort"
Verstecktes Netzwerk
network:
version: 2
wifis:
wlan0:
dhcp4: true
access-points:
"VerstecktesNetz":
hidden: true
password: "passwort"
Erweiterte Optionen
MTU und MAC
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
mtu: 9000
macaddress: "00:11:22:33:44:55"
Wake-on-LAN
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
wakeonlan: true
Optional (Hotplug)
network:
version: 2
ethernets:
eth1:
optional: true
dhcp4: true
Link-Local
network:
version: 2
ethernets:
eth0:
dhcp4: true
link-local: [ipv4, ipv6]
Match-Regeln
Nach MAC-Adresse
network:
version: 2
ethernets:
lan:
match:
macaddress: "00:11:22:33:44:55"
set-name: lan0
addresses:
- 192.168.1.100/24
Nach Treiber
network:
version: 2
ethernets:
all-intel:
match:
driver: e1000e
dhcp4: true
Nach Namen
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
Server-Beispiele
Webserver
# /etc/netplan/01-webserver.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 203.0.113.10/24
- "2001:db8:1::10/64"
routes:
- to: default
via: 203.0.113.1
- to: "::/0"
via: "2001:db8:1::1"
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search:
- example.com
Dual-Homed Server
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
eth1:
addresses:
- 10.0.0.10/24
routes:
- to: 10.0.0.0/8
via: 10.0.0.1
Hochverfügbarkeit
network:
version: 2
ethernets:
eth0: {}
eth1: {}
bonds:
bond0:
interfaces: [eth0, eth1]
parameters:
mode: 802.3ad
mii-monitor-interval: 100
vlans:
management:
id: 10
link: bond0
addresses: [192.168.10.5/24]
production:
id: 20
link: bond0
addresses: [192.168.20.5/24]
backup:
id: 30
link: bond0
addresses: [192.168.30.5/24]
Troubleshooting
Konfiguration debuggen
# Generierte Konfiguration anzeigen
cat /run/systemd/network/*.network
# Netplan Debug
netplan --debug generate
# Journal prüfen
journalctl -u systemd-networkd
Häufige Fehler
# YAML-Syntax prüfen
python3 -c "import yaml; yaml.safe_load(open('/etc/netplan/01-netcfg.yaml'))"
# Einrückung muss mit Leerzeichen sein (keine Tabs!)
Netzwerk zurücksetzen
# Alle IPs löschen
ip addr flush dev eth0
# Netplan neu anwenden
netplan apply
Zu alter Konfiguration zurück
# /etc/network/interfaces verwenden (wenn installiert)
apt install ifupdown
# Netplan deaktivieren
mv /etc/netplan/*.yaml /etc/netplan/backup/
Zusammenfassung
| Befehl | Funktion |
|---|
netplan generate | Syntax prüfen |
netplan apply | Konfiguration anwenden |
netplan try | Mit Rollback testen |
netplan get | Aktuelle Config anzeigen |
| Komponente | Beschreibung |
|---|
| ethernets | Ethernet-Interfaces |
| bonds | Link Aggregation |
| bridges | Netzwerk-Bridges |
| vlans | VLAN-Interfaces |
| wifis | WLAN-Interfaces |
| Datei | Priorität |
|---|
| /lib/netplan/*.yaml | Niedrig (Defaults) |
| /etc/netplan/*.yaml | Mittel (Admin) |
| /run/netplan/*.yaml | Hoch (Temporär) |
Fazit
Netplan vereinfacht die Netzwerkkonfiguration unter Ubuntu durch deklarative YAML-Dateien. Die Abstraktionsschicht ermöglicht einheitliche Konfiguration unabhängig vom Backend. Für Server empfiehlt sich systemd-networkd, für Desktops NetworkManager. Die netplan try-Funktion ist besonders wertvoll für Remote-Server, da sie automatisch zur vorherigen Konfiguration zurückkehrt, wenn keine Bestätigung erfolgt.