Netplan это стандартный способ описать сеть в Ubuntu. Вместо разрозненных скриптов ifupdown вы пишете YAML в /etc/netplan/, а Netplan превращает его в настройки для выбранного бэкенда: systemd-networkd или NetworkManager. В документации он так и называется: абстракция над сетевыми настройками, где вы описываете, что нужно, а не как это сделать. Ниже установка, статический IP, маршруты, туннель и нюансы на сервере.
Откуда взялся Netplan и зачем он нужен
В Ubuntu Netplan появился в версии 17.10 и заменил классический ifupdown. Идея простая: один декларативный формат, а низкоуровневую работу делает networkd или NetworkManager. Администратор описывает желаемое состояние интерфейсов, адресов и маршрутов, Netplan генерирует конфиги для бэкенда (renderer) и применяет их командой netplan apply.
- YAML как документация. Конфиг легко читать, хранить в git и раскатывать через Ansible.
- Широкий охват. Ethernet, Wi-Fi, DHCP и статика, VLAN, bonding, мосты, туннели, дополнительные маршруты.
- Два бэкенда. На серверах обычно
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. Для десктопа с графической оболочкой обычно ставятNetworkManager.dhcp4: false: адрес не берём по DHCP. В старых примерах пишутno, работает и так.addresses, маршрутto: defaultиnameservers: адрес, шлюз и DNS.
Ключ gateway4 из старых инструкций ещё встречается, но в справочнике YAML он помечен как устаревший: шлюз по умолчанию теперь задают маршрутом to: default в routes, как в примере выше.
netplan try: применить и не потерять SSH
sudo netplan generate # проверить синтаксис и сгенерировать конфиги sudo netplan try # применить с автоматическим откатом sudo netplan apply # применить окончательно
По документации, netplan try применяет конфиг и сам откатывает его, если вы не подтвердили изменения вовремя. По умолчанию ждёт 120 секунд, время меняется ключом --timeout. На удалённом сервере это спасает от ситуации, когда опечатка в YAML отрезала вас от 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:
gre1:
mode: gre
local: 192.168.1.100
remote: 203.0.113.1
Локальный конец 192.168.1.100, удалённый 203.0.113.1. Дальше на туннель вешают адреса и маршруты.
Как проверить, что получилось
Состояние линков и адресов смотрят через ip a, ip r и networkctl status. В новых версиях есть netplan status: команда показывает текущую сетевую конфигурацию в читаемом виде, а с ключом --diff разницу между YAML и тем, что реально применено. Данные она берёт из systemd-networkd.
Сам Netplan не система мониторинга. Алерты по сети настраивают в Zabbix, Prometheus с node exporter и подобных. Если нужно уведомление при смене конфига, это уже cron или systemd path unit плюс свой скрипт.
Ubuntu, Debian и семейство RHEL
- Ubuntu. С 17.10 Netplan основной способ настройки сети, в LTS-версиях он стоит по умолчанию. Файл от cloud-init лучше не править в лоб, если инстанс пересоздаётся: правьте user-data или кладите свой файл с более высоким номером.
- Debian. Netplan не всегда стоит по умолчанию, ставится пакетом
netplan.io. Каталог тот же. Следите, чтобы интерфейсом владел один инструмент, а не ifupdown и Netplan одновременно. - Fedora, CentOS, RHEL. Там по умолчанию NetworkManager с nmcli и keyfile-конфигами. Netplan поставить можно, но экосистема вокруг него слабее, обычно остаются на NetworkManager.
VLAN, bonding и контейнеры
В YAML Netplan описывают VLAN-интерфейсы, агрегацию через bond и мосты для KVM или LXD. Сетью контейнеров в Docker и Kubernetes обычно занимаются сами runtime и CNI, а Netplan отвечает за интерфейсы хоста, на которых всё это работает. Готовые примеры bonding, VLAN, Wi-Fi, мостов и маршрутизации лежат в репозитории Canonical.
Короткий чеклист
- Правите YAML в
/etc/netplan/*.yaml, отступы только пробелами. - Проверяете:
sudo netplan generateиsudo netplan try. - Применяете:
sudo netplan apply. - Смотрите результат:
ip a,ip r,networkctl statusилиnetplan status.
Если нужно настроить сеть и всё остальное на VPS под ключ, это ко мне: по прайс-листу настройка VPS стоит от 10 000 ₽.
В итоге Netplan это тонкий слой поверх networkd или NetworkManager: один YAML, предсказуемое применение и удобная автоматизация. Для VPS и железных серверов на Ubuntu это нормальный старт, а netplan try страхует от потери доступа при правках по SSH.