Netplan 1.0: настройка сети на Ubuntu 24.04

Netplan 1.0: настройка сети на Ubuntu 24.04

Netplan 1.0 упрощает управление сетью в Ubuntu 24.04. В статье — как правильно настроить Netplan на VPS, примеры конфигов для статических IP и DHCP, проверка синтаксиса и диагностика ошибок после применения конфигурации.

Введение

Исторически настройка сети в Linux напоминала работу с археологическими слоями: устаревший ifconfig соседствовал с ручными правками /etc/network/interfaces, а современный iproute2 требовал сложных скриптов. Это приводило к фрагментации — ведь использовались разные инструменты, синтаксисы и методы для одинаковых задач. Ситуация усугублялась в облачных средах, где нужно было согласовывать конфиги cloud-init с локальными настройками.

Решение пришло с Netplan — декларативным сетевым менеджером, который стал стандартом в Ubuntu начиная с 18.04. Его философия: «опиши что нужно, а Netplan сгенерирует низкоуровневые конфиги». В Ubuntu 24.04 вышла версия Netplan 1.0, устранившая главные боли админов:

  • нативная поддержка WiFi;
  • стабильный API;
  • интеграция с cloud-init;
  • диагностика в реальном времени (команда netplan status).

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

popup12

Проверка среды и бекап

Перед изменением сетевых настроек в Ubuntu 24.04 убедитесь, что среда соответствует минимальным требованиям:

  • Установлен пакет Netplan 1.0. Установка:
sudo apt update && sudo apt install netplan.io

Проверка версии: 

netplan --version  
  • На серверах должен быть установлен systemd-networkd (обычно предустановлен).
  • Если нужна настройка WiFi на рабочей станции — установите NetworkManager:
sudo apt install network-manager

Проверьте активный бэкенд (понадобится при настройке Netplan):

ps aux | grep -E "networkd|NetworkManager"

Сделайте бекап текущих конфигов, так как любая ошибка в синтаксисе YAML может разорвать сетевое соединение. Netplan хранит конфигурации в /etc/netplan/*.yaml, создайте его полную резервную копию (бекап включает скрытые файлы, например .yaml.swp):

sudo cp -r /etc/netplan /etc/netplan.bak

Если новые настройки будут с ошибками, вы сможете восстановить рабочую конфигурацию командой:

sudo cp -r /etc/netplan.bak/* /etc/netplan/ && sudo netplan apply

Проверьте текущие сетевые интерфейсы, зафиксируйте состояние сети до изменений — это поможет диагностировать проблемы:

ip -c a  # покажет интерфейсы с цветным выводом
netplan status --all  # сводка по всем интерфейсам

Пример вывода netplan status:

     Online state: online
    DNS Addresses: 8.8.8.8 (stub)
      DNS Search: example.com
  Network Interfaces:
    ● enp5s0: Ethernet
        MAC: 00:11:22:33:44:55
        Network: 192.168.1.0/24
        Addresses: 192.168.1.100/24
        Gateway: 192.168.1.1

Если вы настраиваете удалённый сервер, не закрывайте текущую SSH-сессию до тестирования новых настроек. Для физических серверов убедитесь, что у вас есть доступ к IPMI.

Структура конфигурации Netplan 1.0

Конфигурация Netplan описывается в YAML-файлах с жёсткой структурой, несоблюдение синтаксиса приведёт к ошибкам генерации сети. Разберём обязательные компоненты.

Базовые секции (должны присутствовать в каждом конфиге):

network:
  version: 2  # только версия 2 поддерживает современные функции
  renderer: networkd  # или NetworkManager
  ethernets:  # секция для проводных интерфейсов
    <имя_интерфейса>:
      <параметры>

Здесь:

  • version: 2 — фиксированное значение, версия 1 устарела и не поддерживает новые функции Netplan 1.0;
  • renderer — движок рендеринга:
    • networkd — системный демон, для серверов;
    • NetworkManager — для десктопов с GUI, WiFi, VPN;
  • ethernets/wifis/bridges — блоки описания интерфейсов (должен присутствовать минимум один).

Правила синтаксиса YAML:

  • Отступы — строго 2 пробела на уровень вложенности, табы запрещены. Пример:
network:        # уровень 0
  ethernets:    # уровень 1 (2 пробела)
    enp5s0:     # уровень 2 (4 пробела)
      dhcp4: true   # уровень 3 (6 пробелов)
  • Синтаксис чувствителен к регистру: ключи (version, renderer), значения (networkd, true) — только в нижнем регистре, имена интерфейсов (enp5s0, br0) также чувствительны к регистру (сверяйте через ip link show).
  • Важен и формат значений:
    • булевые значения — без кавычек;
    • списки — в квадратных скобках [ ];
    • строки — в двойных кавычках ("My Wi-Fi").

Минимальный рабочий пример (DHCP):

# /etc/netplan/00-config.yaml
network:
  version: 2
  renderer: networkd        # для серверов
  ethernets:
    enp5s0:                 # системное имя интерфейса (через ip link)
      dhcp4: true           # включить DHCPv4
      dhcp4-overrides:      # опциональные переопределения
        use-dns: false      # не использовать DNS от DHCP-сервера

Секции для разных типов интерфейсов:

СекцияНазначениеПримеры интерфейсов
ethernetsФизические Ethernet-адаптерыenp5s0, eth0
wifisБеспроводные адаптеры (требует NetworkManager)wlp3s0
bridgesСетевые мосты для виртуализацииbr0, vmbr
bondsАгрегация каналов (bonding)bond0
vlansVLAN-интерфейсыvlan100

Важно:

  • Имена интерфейсов должны совпадать с системными (проверка — ls /sys/class/net);
  • Файлы в /etc/netplan/ обрабатываются в алфавитном порядке — поэтому используйте префиксы (00-, 01-);
  • Комментарии начинаются с #.

Диагностика ошибок структуры:

sudo netplan generate --debug  # покажет конкретную строку с ошибкой

Пример вывода для неверного отступа:

Error in network definition //etc/netplan/00-config.yaml line 5 column 1: 

invalid indentation (expected 4 spaces)

Базовые сценарии (DHCP и статическая конфигурация)

Рассмотрим две конфигурации сети в Netplan 1.0: динамическое получение адресов (DHCP) и ручную настройку статических параметров.

Динамический IP (DHCP)

DHCP — самый распространённый сценарий для рабочих станций и серверов в корпоративных сетях. Конфигурация:

# /etc/netplan/00-dhcp.yaml
network:
  version: 2
  renderer: networkd             # используется systemd-networkd
  ethernets:
    enp3s0:                      # имя интерфейса (проверьте через ip link)
      dhcp4: true                # включить DHCP для IPv4
      dhcp6: false               # отключить DHCPv6 (опционально)
      dhcp-identifier: mac       # критично для облачных сред!
Пояснение параметров:
  • dhcp4: true — основной параметр для получения IPv4-адреса, маршрута и DNS;
  • dhcp-identifier: mac — использовать MAC-адрес как идентификатор клиента вместо имени хоста; это обязательно для:
    • облачных хостингов (предотвращает конфликт IP при клонировании виртуальных машин);
    • систем с Cloud-Init (Cloud-Init может менять hostname на ранних стадиях загрузки);
  • dhcp6: false — явное отключение IPv6 (если не используется).

Применяя конфиг (sudo netplan apply), Netplan генерирует файл для systemd-networkd (например, /run/systemd/network/10-netplan-enp3s0.network):

[Match]
Name=enp3s0
[Network]
DHCP=ipv4
LLMNR=no          # отключение LLMNR для безопасности
MulticastDNS=no
[DHCP]
UseHostname=false # важно при dhcp-identifier: mac
ClientIdentifier=mac

Статический IPv4 + DNS

Для серверов, требующих фиксированных адресов (веб-серверы, БД, шлюзы):

# /etc/netplan/00-static.yaml
network:
  version: 2
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24     # основной IPv4-адрес и маска
        - 2001:db8::10/64       # пример IPv6 (опционально)
      routes:
        - to: default           # маршрут по умолчанию
          via: 192.168.1.1      # шлюз IPv4
          metric: 100            # приоритет
        - to: default
          via: 2001:db8::1      # шлюз IPv6 (если используется)
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888]  # Google DNS
        search: [example.com]    # домен для поиска

Ключевые элементы:

  • addresses — поддерживает несколько адресов через перечисление;
  • routes:
    • to: default — маршрут по умолчанию (0.0.0.0/0);
    • via — IP-адрес шлюза;
    • metric — приоритет (100 для основного, 200 для резервного), чем меньше значение, тем выше приоритет;
  • nameservers:
    • addresses — массив DNS-серверов (IPv4 и IPv6);
    • search — список доменов для автоматического дополнения имён.

Возможные ошибки:

  • Неправильная маска — используйте только CIDR-нотацию.
  • Отсутствие шлюза — без routes: to: default не будет доступа в интернет.
  • Конфликт IP — проверьте уникальность адреса в сети (arping ххх.ххх.х.ххх).

В продакшене всегда указывайте metric для маршрутов — это предотвратит проблемы при наличии нескольких шлюзов. Для критичных серверов продублируйте DNS: корпоративный + публичный (Google/Cloudflare). Также используйте отдельный файл конфига для каждого интерфейса (например, 01-enp3s0.yaml).

Применение и отладка

Проверка синтаксиса и применение конфига

Перед применением всегда проверяйте синтаксис YAML-файлов:

sudo netplan generate

Эта команда проверяет корректность отступов, структуры и значений и генерирует низкоуровневые конфиги для systemd-networkd/NetworkManager в /run, при этом изменения не применяются к работающей сети.

При отсутствии вывода конфиг валиден, при ошибках вы увидите указание на проблемную строку:

Invalid YAML at //etc/netplan/01-bridge.yaml line 5 column 10: expected <block end>, but found '<scalar>'

Для активации новой конфигурации выполните:

sudo netplan apply

Netplan сравнит новую конфигурацию с текущей и перезагрузит только изменённые интерфейсы (без полного рестарта сети). Для изменений, требующих перезагрузки интерфейса (например, смена IP), выполняется последовательность:

  • временное дублирование адресов (IPv4 DAD);
  • переход без разрыва существующих TCP-сессий.

При изменении шлюза по умолчанию возможен кратковременный разрыв соединения (1-2 сек).

Для мостов/bonding интерфейсов требуется пересоздание — поэтому используйте --debug, чтобы контролировать ход процесса:

sudo netplan apply --debug  

Инструменты отладки

Просмотр логов в реальном времени (для systemd-networkd):

journalctl -u systemd-networkd -f 

Основные типы ошибок:

  • Could not set route — проблемы с маршрутизацией;
  • DHCPv4 request timed out — отсутствие ответа от DHCP-сервера;
  • File exists — конфликт IP-адресов.

Команда netplan status для полного вывода по всем интерфейсам:

netplan status --all 

Пример вывода:

● enp5s0: Ethernet (networkd: enp5s0)
    MAC: 00:11:22:33:44:55
    Link: up
    Addresses: 192.168.1.100/24
    Gateway: 192.168.1.1
    DNS: 8.8.8.8
    State: routable (configured)
● br0: Bridge (networkd: br0)
    Interfaces: enp5s0
    Addresses: 10.0.0.2/24
    STP: on (forward-delay: 4s)
    State: degraded (port enp5s0 blocked by STP)

Ключевые состояния:

  • routable — интерфейс работает корректно;
  • degraded — есть проблемы (например, порт заблокирован STP);
  • unmanaged — интерфейс не управляется Netplan.

Команды для ручной проверки интерфейсов (в примерах enp3s0 — замените на ваш).

  • Проверка состояния интерфейса и IP-адресов:
ip -c addr show enp3s0
  • Проверка таблицы маршрутизации:
ip route show
  • Состояние DNS:
resolvectl status 
  • Пример проверки конкретного интерфейса:
resolvectl status enp3s0
  • Быстрая комплексная проверка за одну команду:
echo "IP: $(ip -br a show enp3s0)";
echo "Routes: $(ip -c route list default)";
echo "DNS: $(resolvectl dns enp3s0)"

Тестирование сложных конфигураций с автоматическим откатом через 120 секунд:

sudo netplan try

Система вернёт предыдущую конфигурацию, если не нажать Enter для подтверждения.

Экстренное восстановление

Если после выполнения apply связь с сервером потеряна, войдите в консоль через IPMI/iDRAC и восстановите бекап:

sudo cp /etc/netplan.bak/*.yaml /etc/netplan/
sudo netplan apply

Для полного сброса к DHCP:

echo "network: {version: 2, ethernets: {enp5s0: {dhcp4: true}}}" | sudo tee /etc/netplan/00-reset.yaml
sudo netplan apply

Заключение

Рекомендации для продакшена:

  • Всегда используйте netplan generate перед apply.
  • На удалённых серверах применяйте изменения через screen/tmux;
  • Для критичных систем сначала тестируйте в виртуальной среде.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях