Netplan — стандартный способ описать сеть в Ubuntu и родственных дистрибутивах. Вместо разрозненных скриптов ifupdown вы пишете YAML в /etc/netplan/, а дальше срабатывает выбранный бэкенд: systemd-networkd или NetworkManager. Ниже: установка, статический IP, маршруты, туннель и типичные нюансы на сервере.
Откуда взялся Netplan
В Ubuntu Netplan появился с версии 17.10 как замена классическому ifupdown для десктопа и сервера. Цель простая: один декларативный формат, а низкоуровневую работу отдают networkd или NetworkManager. Старые схемы (interfaces, NetworkManager напрямую) никуда не делись, но для облака, VPS и автоматизации YAML в netplan обычно удобнее.
Администратор описывает желаемое состояние интерфейсов, адресов и маршрутов. Netplan генерирует конфиги для выбранного renderer и применяет их командой netplan apply.
Зачем это нужно
- Декларативный YAML — конфиг читается как документация, его удобно класть в git и ansible.
- Широкий охват — ethernet, Wi-Fi, DHCP и статика, VLAN, bonding, bridges, туннели, дополнительные маршруты.
- Два бэкенда — на серверах чаще
networkd, на рабочих станциях и ноутбуках —NetworkManager.
Установка
На современных Ubuntu пакет netplan.io уже стоит. Если его нет:
sudo apt -y install netplan.io
Конфигурации лежат в /etc/netplan/. Обычно это файлы вроде 00-installer-config.yaml или 50-cloud-init.yaml — имя и приоритет зависят от того, как ставили систему (инсталлятор, cloud-init, вручную).
Статический IP
Пример для проводного интерфейса enp3s0 со статическим адресом. Имя интерфейса смотрите через ip link или networkctl — на разных машинах оно разное.
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
Что здесь важно
renderer: networkd— сеть ведёт systemd-networkd. Для десктопа с GUI чаще ставятNetworkManager.dhcp4: false— адрес не берём по DHCP (в старых примерах писалиno, оба варианта встречаются).addresses, маршрутto: defaultиnameservers— IP, шлюз и DNS. Ключgateway4в старых гайдах ещё встречается, но в актуальном netplan предпочтительнее явный default-маршрут вroutes.
Перед применением имеет смысл проверить синтаксис:
sudo netplan try # или сразу sudo netplan apply
netplan try откатит изменения, если вы не подтвердите их вовремя — полезно при удалённой настройке, чтобы не потерять SSH.
Дополнительные маршруты
Когда нужно ходить в разные подсети через разные шлюзы на одном интерфейсе:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
routes:
- to: 10.0.0.0/24
via: 192.168.1.1
- to: 172.16.0.0/16
via: 192.168.1.254
Сеть 10.0.0.0/24 уходит через 192.168.1.1, а 172.16.0.0/16 — через 192.168.1.254. Так удобно разделять доступ к лаборатории, VPN-шлюзу или соседнему сегменту без отдельного интерфейса.
Туннель GRE
Netplan умеет описывать туннели. Пример GRE (это инкапсуляция, не «готовый VPN с шифрованием» — шифрование обычно добавляют поверх, IPsec/WireGuard и т.п.):
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
addresses:
- 192.168.1.100/24
tunnels:
ipsec0:
mode: gre
remote: 203.0.113.1
local: 192.168.1.100
Локальный конец — 192.168.1.100, удалённый — 203.0.113.1. Дальше поверх туннеля настраивают адреса, маршруты и при необходимости криптографию отдельными средствами.
Мониторинг и уведомления
Сам Netplan не заменяет систему мониторинга. Состояние линков и адресов смотрят через networkctl, ip, а алерты — через Zabbix, Nagios, Prometheus node exporter и т.д. Если нужно письмо при смене конфига, это уже cron или systemd path unit плюс ваш скрипт: netplan только применяет YAML.
Дистрибутивы
Ubuntu
С 17.10 Netplan — основной путь для сетевых настроек на сервере. В LTS 20.04, 22.04 и новее он стоит по умолчанию. Файлы от cloud-init лучше не править «в лоб», если инстанс пересоздаётся: правьте user-data или свой drop-in с более высоким приоритетом имени.
Debian
В Debian netplan не всегда default. При необходимости:
sudo apt install netplan.io
Дальше — тот же каталог /etc/netplan/ и выбор renderer. Учтите, что вместе с ifupdown могут быть конфликты: один инструмент должен владеть интерфейсом.
Fedora, CentOS, RHEL
Там по умолчанию NetworkManager и nmcli/keyfiles. Пакет netplan.io теоретически можно поставить, но экосистема вокруг него слабее, чем в Ubuntu. Для этих семейств обычно остаются на NetworkManager.
VLAN, bonding, контейнеры
В YAML netplan описывают VLAN-субинтерфейсы, bond-агрегацию, bridge для KVM/LXD, маршруты для отдельных namespace. Для Docker и Kubernetes сеть контейнеров чаще настраивают сами runtime и CNI; netplan отвечает за хостовые интерфейсы, на которых это всё крутится. Готовые примеры bonding и не только есть в репозитории Canonical (ссылка в конце).
Краткий чеклист
- Правите YAML в
/etc/netplan/*.yaml(отступы — пробелы, не табы). - Проверяете:
sudo netplan generateи/илиsudo netplan try. - Применяете:
sudo netplan apply. - Смотрите результат:
ip a,ip r,networkctl status.
Итог
Netplan — тонкий слой поверх networkd или NetworkManager: один YAML, предсказуемое применение, удобная автоматизация. Для VPS и bare-metal Ubuntu это обычно лучший старт, чем ручные правки ifupdown. Сложные сценарии (bond, VLAN, маршруты, туннели) тоже ложатся в тот же формат — без зоопарка скриптов.