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

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
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.