// DevOps
Netplan: продвинутая настройка сети (туннели, VLAN, мосты, bonding)
Опубликовано 22.09.2026
Введение
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.2GRE (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.2VXLAN (Virtual Extensible LAN)
Используется в виртуализации и облаках. Поддержка VXLAN появилась в netplan 0.105.
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses: [192.168.1.100/24]
tunnels:
vxlan0:
mode: vxlan
id: 42 # идентификатор сети VXLAN (VNI), 1–16777215
link: enp0s3
local: 192.168.1.100
remote: 203.0.113.1 # адрес второй стороны или multicast-группа, например 239.1.1.1
port: 4789 # стандартный порт VXLAN
addresses: [10.0.0.1/24]Отдельного ключа для multicast-группы в netplan нет: адрес группы указывается в remote. Интерфейс, указанный в link, должен быть описан в той же конфигурации (блок ethernets), иначе netplan generate завершится ошибкой.
WireGuard
Современный VPN, поддержка появилась в netplan 0.100.
network:
version: 2
renderer: networkd
tunnels:
wg0:
mode: wireguard
port: 51820
addresses: [10.0.0.2/24]
key: /etc/wireguard/private.key # закрытый ключ (base64) или путь к файлу
peers:
- keys:
public: <remote-public-key>
endpoint: 203.0.113.1:51820
allowed-ips: [0.0.0.0/0]
keepalive: 25Закрытый ключ задаётся ключом key (или keys: private:), открытый ключ пира — keys: public:, интервал keepalive — keepalive. Ключей private-key, public-key и persistent-keepalive, привычных по wg-quick, в netplan нет — с ними netplan generate завершится ошибкой. Путь к файлу вместо самого ключа поддерживается с systemd-networkd версии 242. Вместо <remote-public-key> подставьте открытый ключ второй стороны в base64 — с заглушкой netplan конфигурацию не примет.
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Почему bonding не ускоряет одиночное соединение и как выбрать режим, разобрано в статье «Резервирование каналов связи: внутри здания».
Дополнительные параметры
- MTU:yaml
mtu: 9000 - MAC-адрес:yaml
macaddress: 00:16:3e:12:34:56 - Метрики маршрутов:yaml
routes: - to: 192.168.2.0/24 via: 192.168.1.1 metric: 100
Применение конфигурации
- Проверка синтаксиса:bash
sudo netplan generate - Тест на 120 секунд:bash
sudo netplan try - Применение:bash
sudo netplan apply
Полезные советы
- Права доступа: конфиги
/etc/netplan/*.yamlдолжны быть600или644, иначе будут предупреждения.bashsudo 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 и др. |
| IPIP | 0.99+ | 20.04+ | mode: ipip, работает через networkd |
| GRE | 0.99+ | 20.04+ | mode: gre |
| VXLAN | 0.105+ | зависит от версии пакета | Multicast-группа задаётся в remote, стандартный порт 4789 |
| WireGuard | 0.100+ | зависит от версии пакета | Ключи key, keys.public, keepalive; путь к файлу ключа — с networkd 242 |
| MAC/MTU/Routes | всегда | 17.10+ | Тонкая настройка маршрутов и интерфейсов |
Практические советы
- Для Ubuntu 18.04: Netplan уже есть, но поддержка туннелей ограничена. Лучше обновиться или поставить
netplan.ioиз backports. - Для Ubuntu 20.04 и новее доступность WireGuard и VXLAN зависит от установленной версии
netplan.io(WireGuard — с 0.100, VXLAN — с 0.105); проверьте её перед настройкой. - Проверить свою версию пакета:bash
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.100:
tunnels:
wg0:
mode: wireguard
key: /etc/wireguard/private.key
peers:
- keys:
public: <remote-pubkey>
endpoint: 203.0.113.1:51820
allowed-ips: [0.0.0.0/0]❓ Почему Netplan ругается на права файла?
Конфиги в /etc/netplan/ могут содержать ключи и пароли, поэтому netplan предупреждает, если файл доступен другим пользователям. Ставьте права 600:
sudo chmod 600 /etc/netplan/*.yaml❓ Поддерживает ли Netplan bonding?
Да. Пример для LACP (802.3ad):
bonds:
bond0:
interfaces: [enp0s3, enp0s8]
parameters:
mode: 802.3adПолезные ссылки
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related