Если ты когда-либо настраивал сеть в старых версиях Ubuntu через /etc/network/interfaces, а потом внезапно столкнулся с Netplan в Ubuntu 18.04 и выше — скорее всего, первые минуты выглядели как «зачем они сломали то, что работало?».
Спойлер: Netplan — это не слом, а эволюция. И сейчас я докажу, что это самый удобный инструмент для управления сетью в Linux.
Что такое Netplan и зачем он нужен?
Netplan — это утилита от Canonical, которая позволяет описывать конфигурацию сетевых интерфейсов на языке YAML. Она не заменяет systemd-networkd или NetworkManager, а работает как прослойка-транслятор.
Вы пишете красивый человекочитаемый YAML-файл, а Netplan превращает его в конфиги для бэкенда (рендерера), который реально управляет сетью.
Почему это круто:
Единый формат описания сети (больше не нужно помнить синтаксис двух разных систем).
Версионирование конфигов в Git без мусора.
Возможность атомарного отката (
netplan try— твой лучший друг).Отличная работа с облаками и виртуализацией.
Где живут конфиги?
Все настройки хранятся в /etc/netplan/. Обычно там лежит один файл — 01-netcfg.yaml или 00-installer-config.yaml. Имя не принципиально, главное — расширение .yaml.
Важно: Netplan применяет все yaml-файлы в директории в лексикографическом порядке. Если в двух файлах указаны настройки одного интерфейса — второй перезапишет первый.
Структура файла: разбор на пальцах
Стандартный конфиг выглядит так:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: true
Давай разберем:
version: 2— обязательно. Версия 1 устарела, про неё забудь.renderer— кто будет выполнять настройку.networkd(для серверов) илиNetworkManager(для десктопов/WiFi).ethernets— блок для проводных интерфейсов. Аналогично естьwifisиbridges.
Три примера для 99% задач
1. DHCP (всё само)
network: version: 2 ethernets: eth0: dhcp4: true dhcp6: false # можно и true optional: true # не ждать сеть при загрузке (ускоряет старт)
2. Статический IP (сервер/VM)
network: version: 2 ethernets: eth0: addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1] search: [mydomain.local] # поисковый домен
Обрати внимание: gateway4 — это старый синтаксис (работает до сих пор). Новый (более гибкий) использует routes. Но для одного шлюза по умолчанию gateway4 вполне ок.
3. WiFi + NetworkManager
network: version: 2 renderer: NetworkManager wifis: wlp2s0: dhcp4: true access-points: "MyHomeWiFi": password: "супер-секретный-пароль"
Routes: когда одного шлюза мало
Настраиваем два интерфейса с разными шлюзами:
network: version: 2 ethernets: eth0: addresses: [10.0.0.5/24] routes: - to: default via: 10.0.0.1 metric: 100 eth1: addresses: [192.168.100.5/24] routes: - to: 10.10.0.0/16 via: 192.168.100.1
Мосты и агрегация (Bonding)
Соберем bond из двух интерфейсов для отказоустойчивости:
network: version: 2 renderer: networkd ethernets: eno1: dhcp4: false eno2: dhcp4: false bonds: bond0: interfaces: [eno1, eno2] parameters: mode: active-backup primary: eno1 mii-monitor-interval: 100 addresses: [10.0.0.10/24] gateway4: 10.0.0.1
Команды, которые нужно знать наизусть
# Проверить синтаксис sudo netplan generate# Применить конфигурацию (осторожно, если работаешь по SSH!) sudo netplan apply
# Безопасное применение с таймаутом (спасение для удаленки) sudo netplan try
# Посмотреть текущее состояние интерфейсов (парсинг show) netplan get
Лайфхак: всегда используй netplan try, когда настраиваешь сеть по SSH. Если что-то пойдет не так — через 2 минуты конфиг откатится автоматически.
Типичные грабли (и как их избежать)
1. Пробелы и отступы
YAML не прощает ошибок в отступах. Используй пробелы, никогда — табуляцию.
✅ Правильно:
ethernets: eth0: dhcp4: true
❌ Неправильно:
ethernets: eth0: dhcp4: true # один пробел не хватает
2. Интерфейс переименовался
Если ты вставил диски со старой системы в новую — eth0 может превратиться в enp5s0.
Перед настройкой выполни ip a и проверь реальные имена интерфейсов.
3. Конфликт с NetworkManager
На серверах часто не нужен NetworkManager. Лучше отключи его:
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
И в Netplan укажи renderer: networkd.
Почему я перешел на Netplan и не жалею
До Netplan я мучительно правил interfaces и ругался на systemd-networkd за его многофайловость. Сейчас я пишу один YAML-файл, кладу его в репозиторий и разворачиваю сеть на новых серверах одной командой.
Netplan не идеален: документация могла бы быть подробнее, а поддержка VLAN/Bridge в некоторых сценариях требует танцев с бубном. Но для 95% повседневных задач он просто великолепен.



