EN EN

Netplan: продвинутая настройка сети (туннели, VLAN, мосты, bonding)

Опубликовано 18.09.2025


Netplan: продвинутая настройка сети (туннели, VLAN, мосты, bonding)

Введение

Netplan — это утилита для декларативной настройки сети в Linux (Ubuntu, Debian и производные).
Обычно её используют для простых случаев вроде Ethernet или Wi-Fi, но она умеет гораздо больше:

  • туннельные интерфейсы (IPIP, GRE, VXLAN, WireGuard),
  • VLAN,
  • мосты (bridges),
  • связки интерфейсов (bonding).

Эти возможности позволяют строить сложные сетевые топологии — от домашних VPN до дата-центров и облачных окружений.


Туннельные интерфейсы

Туннели инкапсулируют пакеты одного протокола в другой. Используются для VPN, межсерверных соединений или изоляции сетей.

IPIP (IP-in-IP)

Простейший туннель IPv4-в-IPv4.

network:
  version: 2
  renderer: networkd
  tunnels:
    tun0:
      mode: ipip
      local: 192.168.1.100
      remote: 203.0.113.1
      addresses: [10.0.0.1/30]
      routes:
        - to: 10.0.1.0/24
          via: 10.0.0.2

GRE (Generic Routing Encapsulation)

Поддерживает больше протоколов, чем IPIP.

network:
  version: 2
  renderer: networkd
  tunnels:
    gre0:
      mode: gre
      local: 192.168.1.100
      remote: 203.0.113.1
      addresses: [10.0.0.1/30]
      routes:
        - to: 10.0.2.0/24
          via: 10.0.0.2

VXLAN (Virtual Extensible LAN)

Используется в виртуализации и облаках. Поддерживает multicast и кастомные порты.

network:
  version: 2
  renderer: networkd
  tunnels:
    vxlan0:
      mode: vxlan
      id: 42
      link: enp0s3
      local: 192.168.1.100
      group: 239.1.1.1   # multicast группа
      port: 4789         # стандартный порт VXLAN
      addresses: [10.0.0.1/24]

WireGuard

Современный VPN, поддержка в netplan.io >= 0.99.

network:
  version: 2
  renderer: networkd
  tunnels:
    wg0:
      mode: wireguard
      addresses: [10.0.0.2/24]
      private-key: /etc/wireguard/private.key
      peers:
        - public-key: <remote-public-key>
          endpoint: 203.0.113.1:51820
          allowed-ips: [0.0.0.0/0]
          persistent-keepalive: 25

VLAN (Virtual LAN)

Сегментация трафика по VLAN ID.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
  vlans:
    vlan10:
      id: 10
      link: enp0s3
      addresses: [192.168.10.100/24]
      routes:
        - to: default
          via: 192.168.10.1

Мосты (Bridges)

Объединяют несколько интерфейсов.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: { dhcp4: no }
    enp0s8: { dhcp4: no }
  bridges:
    br0:
      interfaces: [enp0s3, enp0s8]
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

Bonding (связка интерфейсов)

Для отказоустойчивости и/или увеличения пропускной способности.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: { dhcp4: no }
    enp0s8: { dhcp4: no }
  bonds:
    bond0:
      interfaces: [enp0s3, enp0s8]
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        mode: 802.3ad                # LACP (нужна поддержка на свитче)
        transmit-hash-policy: layer3+4
        mii-monitor-interval: 100

Дополнительные параметры

  • MTU:
    mtu: 9000
    
  • MAC-адрес:
    macaddress: 00:16:3e:12:34:56
    
  • Метрики маршрутов:
    routes:
      - to: 192.168.2.0/24
        via: 192.168.1.1
        metric: 100
    

Применение конфигурации

  1. Проверка синтаксиса:
    sudo netplan generate
    
  2. Тест на 120 секунд:
    sudo netplan try
    
  3. Применение:
    sudo netplan apply
    

Полезные советы

  • Права доступа: конфиги /etc/netplan/*.yaml должны быть 600 или 644, иначе будут предупреждения.
    sudo chmod 600 /etc/netplan/*.yaml
    
  • Проверка интерфейсов:
    ip a, ip r, nmcli (если используется NetworkManager).
  • Логи:
    journalctl -u systemd-networkd или /var/log/syslog.
  • Бэкапы: всегда сохраняйте копии перед экспериментами.

Совместимость возможностей Netplan по версиям

ВозможностьПоддержка в NetplanМинимальная версия UbuntuКомментарии
Ethernet, Wi-Fiвсегда17.10+ (по умолчанию)Базовые сценарии, поддержка всеми рендерерами
VLANвсегда17.10+vlans: работает и с networkd, и с NetworkManager
Bridgesвсегда17.10+Полная поддержка мостов
Bondingвсегда17.10+Режимы: active-backup, balance-rr, 802.3ad и др.
IPIP0.99+20.04+mode: ipip, работает через networkd
GRE0.99+20.04+mode: gre
VXLAN0.99+20.04+Поддержка multicast (group), порт по умолчанию 4789
WireGuard0.104+20.04 (через backports) / 22.04 LTS нативноИспользует wireguard-tools, ключи можно хранить в файле
MAC/MTU/Routesвсегда17.10+Тонкая настройка маршрутов и интерфейсов

Практические советы

  • Для Ubuntu 18.04: Netplan уже есть, но поддержка туннелей ограничена. Лучше обновиться или поставить netplan.io из backports.
  • Для Ubuntu 20.04: IPIP, GRE, VXLAN работают; WireGuard — через PPA или backports.
  • Для Ubuntu 22.04 и новее: полная поддержка, включая WireGuard.
  • Проверить свою версию пакета:
    apt show netplan.io | grep Version
    

Часто задаваемые вопросы (FAQ)

❓ Как проверить, работает ли конфигурация Netplan?
Используйте:

sudo netplan try

— у вас будет 120 секунд на подтверждение. Если всё корректно, затем выполните:

sudo netplan apply

❓ Как настроить VLAN через Netplan?
Пример:

vlans:
  vlan10:
    id: 10
    link: enp0s3
    addresses: [192.168.10.100/24]

❓ Как сделать WireGuard в Netplan?
Начиная с netplan.io >= 0.104 можно использовать:

tunnels:
  wg0:
    mode: wireguard
    private-key: /etc/wireguard/private.key
    peers:
      - public-key: <remote-pubkey>
        endpoint: 203.0.113.1:51820
        allowed-ips: [0.0.0.0/0]

❓ Почему Netplan ругается на права файла?
Конфиги в /etc/netplan/ должны быть с правами 600 или 644.

sudo chmod 600 /etc/netplan/*.yaml

❓ Поддерживает ли Netplan bonding?
Да. Пример для LACP (802.3ad):

bonds:
  bond0:
    interfaces: [enp0s3, enp0s8]
    parameters:
      mode: 802.3ad

Полезные ссылки

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Похожие посты