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-DefaultsBackend wählen
# NetworkManager (Desktop)
network:
renderer: NetworkManager
# systemd-networkd (Server)
network:
renderer: networkdStatische 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.4Mehrere 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.1IPv6
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: trueDHCP 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.8DHCPv6
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: true
accept-ra: trueKonfiguration anwenden
Syntax prüfen
# Konfiguration validieren
netplan generate
# Detaillierte Ausgabe
netplan generate --debugAnwenden
# Konfiguration anwenden
netplan apply
# Mit Rollback bei Fehler (30 Sekunden)
netplan try
# Timeout anpassen
netplan try --timeout 60Aktuelle Konfiguration
# Konfiguration anzeigen
netplan get
# IP-Adressen prüfen
ip addr showBonding (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: 100LACP (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+4Bonding-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/24Mehrere 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: trueVLAN 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/24Bridges
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.1Bridge für VMs (KVM)
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
bridges:
br0:
interfaces:
- enp3s0
dhcp4: true
parameters:
stp: false
forward-delay: 0Bridge-Parameter
bridges:
br0:
interfaces: [eth0]
parameters:
stp: true
forward-delay: 4
max-age: 20
hello-time: 2
priority: 32768Routing
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: 100Policy-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: 100Mehrere 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: 200Wireless (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: trueOptional (Hotplug)
network:
version: 2
ethernets:
eth1:
optional: true
dhcp4: trueLink-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/24Nach Treiber
network:
version: 2
ethernets:
all-intel:
match:
driver: e1000e
dhcp4: trueNach Namen
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: trueServer-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.comDual-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.1Hochverfü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-networkdHä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 applyZu 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.