netplan — Network Configuration

If you like this project, consider supporting me on Buy Me a Coffee ☕️


tags:

Netplan is the default network configuration abstraction layer used by Ubuntu 17.10+ and other modern Ubuntu-based distributions. It uses YAML configuration files and can render configurations for NetworkManager or systemd-networkd as backends.

Installation & Configuration

Install Netplan

sudo apt update && sudo apt install -y netplan.io  # Install netplan / Установить netplan

Configuration Paths

[!IMPORTANT] Netplan files must have .yaml extension and use valid YAML syntax (indentation with spaces, not tabs).

Backend Selection

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd  # Use systemd-networkd / Использовать systemd-networkd
  # renderer: NetworkManager  # Use NetworkManager / Использовать NetworkManager

Core Management

Apply Configuration

sudo netplan apply               # Apply netplan config / Применить конфигурацию
sudo netplan --debug apply       # Apply with debug output / Применить с отладкой
sudo netplan try                 # Try config with auto-rollback / Попробовать с откатом

[!TIP] Use netplan try in production to test changes safely. It will revert automatically after timeout if you don't confirm.

Validate Configuration

sudo netplan generate            # Generate backend config / Сгенерировать конфигурацию бэкенда
sudo netplan --debug generate    # Generate with debug / Сгенерировать с отладкой

View Current Configuration

cat /etc/netplan/*.yaml          # View all netplan configs / Просмотреть все конфигурации
sudo netplan get                 # Show merged config / Показать объединённую конфигурацию

Static & DHCP Configuration

DHCP Configuration

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:  # Replace with your interface / Замените на ваш интерфейс
      dhcp4: true
      dhcp6: false
sudo netplan apply  # Apply configuration / Применить конфигурацию

Static IP Configuration

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      addresses:
        - 192.168.1.100/24  # Static IP / Статический IP
      routes:
        - to: default
          via: 192.168.1.1  # Gateway / Шлюз
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]  # DNS servers / DNS серверы

Multiple IP Addresses

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  ethernets:
    enp0s3:
      addresses:
        - 192.168.1.100/24
        - 192.168.1.101/24  # Second IP / Второй IP
        - 2001:db8::1/64    # IPv6 / IPv6 адрес

Advanced Networking

Bridge Configuration

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: false
  bridges:
    br0:
      interfaces: [enp0s3]  # Bridge member / Член моста
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true  # Enable Spanning Tree / Включить STP
        forward-delay: 4
sudo netplan apply  # Apply bridge config / Применить конфигурацию моста

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: false
    enp0s8:
      dhcp4: false
  bonds:
    bond0:
      interfaces: [enp0s3, enp0s8]  # Bond members / Члены bond
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        mode: active-backup  # Bond mode / Режим bond
        primary: enp0s3      # Primary interface / Основной интерфейс
        mii-monitor-interval: 100

VLAN Configuration

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: false
  vlans:
    vlan10:
      id: 10              # VLAN ID / VLAN ID
      link: enp0s3        # Parent interface / Родительский интерфейс
      addresses: [192.168.10.100/24]

WiFi Configuration

Basic WiFi

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp2s0:  # WiFi interface / WiFi интерфейс
      access-points:
        "<SSID>":
          password: "<PASSWORD>"
      dhcp4: true

WiFi with Multiple Networks / WiFi

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp2s0:
      access-points:
        "Home_WiFi":
          password: "<HOME_PASSWORD>"
        "Office_WiFi":
          password: "<OFFICE_PASSWORD>"
      dhcp4: true

[!NOTE] WiFi configuration typically requires NetworkManager as the renderer. systemd-networkd has limited WiFi support.


Troubleshooting & Tools

Common Issues

# YAML syntax errors
sudo netplan --debug generate  # Check for YAML errors / Проверить ошибки YAML

# Configuration not applying
sudo netplan apply
sudo systemctl restart systemd-networkd  # Restart backend / Перезапустить бэкенд
# OR for NetworkManager:
sudo systemctl restart NetworkManager

# Revert to previous config
sudo cp /etc/netplan/01-netcfg.yaml.bak /etc/netplan/01-netcfg.yaml
sudo netplan apply

Debug Mode

sudo netplan --debug apply       # Verbose apply / Подробное применение
sudo networkctl status           # Check systemd-networkd status / Проверить статус
journalctl -u systemd-networkd -f  # Follow networkd logs / Смотреть логи

Backup Configuration

sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak  # Backup / Бэкап

Migration Guide

Production Runbook: Migrate from ifupdown to netplan

  1. Backup current configuration / Бэкап текущей конфигурации

    sudo cp /etc/network/interfaces /etc/network/interfaces.bak  # Backup old config / Бэкап старой конфигурации
    ip addr show > /tmp/current-network-config.txt  # Save current state / Сохранить текущее состояние
  2. Create netplan configuration / Создать конфигурацию netplan

    sudo nano /etc/netplan/01-netcfg.yaml  # Create new config / Создать новую конфигурацию
  3. Test the configuration / Тестировать конфигурацию

    sudo netplan try  # Try with auto-rollback / Попробовать с автооткатом
  4. Apply permanently / Применить постоянно

    sudo netplan apply  # Apply configuration / Применить конфигурацию
  5. Verify connectivity / Проверить связь

    ip addr show  # Check IP addresses / Проверить IP адреса
    ping -c 3 8.8.8.8  # Test connectivity / Проверить связь
  6. Disable old ifupdown (optional) / Отключить старый ifupdown (опционально)

    sudo systemctl disable networking  # Disable ifupdown / Отключить ifupdown

Comparison Tables

Netplan Renderers Comparison

Renderer Best For WiFi Support Desktop Integration
systemd-networkd Servers, minimal systems / Серверы, минимальные системы Limited / Ограниченная No / Нет
NetworkManager Desktops, laptops / Десктопы, ноутбуки Full / Полная Yes / Да

Bond Modes

Mode Description (EN / RU) Use Case
balance-rr Round-robin / Циклическая балансировка Maximum throughput
active-backup Failover only / Только отказоустойчивость Simple HA, no switch config
802.3ad LACP aggregation / LACP агрегация Enterprise, switch support required

On this page

linux Netplan — Network Configuration for Ubuntu Installation &amp; Configuration Install Netplan Configuration Paths Backend Selection Core Management Apply Configuration Validate Configuration View Current Configuration Static &amp; DHCP Configuration DHCP Configuration Static IP Configuration Multiple IP Addresses Advanced Networking Bridge Configuration Bond (Link Aggregation) VLAN Configuration WiFi Configuration Basic WiFi WiFi with Multiple Networks / WiFi Troubleshooting &amp; Tools Common Issues Debug Mode Backup Configuration Migration Guide Production Runbook: Migrate from ifupdown to netplan Comparison Tables Netplan Renderers Comparison Bond Modes 📚 Documentation Links