Доступна система конфигурации сети Netplan 1.0, используемая в Ubuntu

После семи лет разработки опубликован релиз инструментария Netplan 1.0, развивающего формат для хранения настроек сетевых интерфейсов и связанные с ним утилиты для управления сетевыми конфигурациями. Netplan обеспечивает хранение параметров в формате YAML и предоставляет бэкенды, абстрагирующие доступ к конфигурации для NetworkManager и systemd-networkd. Код проекта написан на языках Python и C, и распространяется под лицензией GPLv3.

Помимо сотрудников из компании Canonical в разработке проекта также принимают участие сотрудники Microsoft и Deutsche Telekom. Netplan уже применяется в Ubuntu начиная с выпуска 17.10, задействован в Ubuntu 23.10 Desktop в качестве бэкенда по умолчанию в NetworkManager и применяется по умолчанию для управления сетевыми настройками в официальных сборках Debian 12 для облачных систем. Поддержка Netplan также реализована для cloud-init и инсталлятора Calamares. Новый выпуск Netplan 1.0 войдёт в состав дистрибутива Ubuntu 24.04 и будет поставляться в Debian 13.

Netplan 1.0 отмечен как первый значительный стабильный выпуск, позволивший избавиться от некоторых давно устаревших возможностей. Избавление от технического долга привело к упрощению сопровождения кодовой базы и устранило препятствия, мешавшие реализации некоторых новых идей. Кроме стабилизации API библиотеки libnetplan1, в новой версии отмечены следующие изменения:

  • Одновременная поддержка WPA2 и WPA3.
  • Поддержка сетевых устройств Mellanox VF-LAG с SR-IOV (Single-Root I/O Virtualization).
  • Новые параметры «hairpin» и «port-mac-learning», полезные при настройке туннелей VXLAN с использованием FRRouting.
  • Новый набор обвязок для языке Python (python3-netplan), упрощающие интеграцию со сторонними системами.
  • Команда «netplan status —diff», позволяющая наглядно оценить различия между фактическим состоянием настроек и файлами конфигурации.

Применение netplan унифицирует определение базовых конфигурационных файлов, используемых в NetworkManager и systemd-networkd, избавляя от необходимости изучения деталей форматов конфигурации каждой из этих систем. Суть работы netplan сводится к тому, что в процессе начальной загрузки он читает базовые сетевые настройки из файлов «/{lib,etc,run}/netplan/*.yaml» и записывает конфигурацию в каталог /run в формате, подходящем для дальнейшей обработки в systemd-networkd или NetworkManager.

Особенности Netplan:

  • Игнорирование устройств, не отмеченных в конфигурации;
  • Вся конфигурация хранится только в исходном YAML-файле (без использования /etc/network/interfaces);
  • Возможность разбиения конфигурации на несколько файлов (например, для выноса настроек libvirt и lxd);
  • Гибкие возможности выбора и смены бэкенда.
  • Описание параметров сетевых интерфейсов в netplan осуществляется при помощи декларативного синтаксиса, позволяющего достаточно просто описать структуру сложной сети.

Среди достоинств netplan по сравнению с ifupdown:

  • Декларативный синтаксис;
  • Возможность применения масок для имён сетевых интерфейсов, MAC-адресов, драйверов и других компонентов;
  • Учёт контекста при разборе иерархии параметров сетевых интерфейсов, что позволяет корректно и в правильном порядке передать настройки обработчикам (в ifupdown при разборе сложных конфигураций не исключено возникновение проблем, вызванных состоянием гонки).

Источник: http://www.opennet.ru/opennews/art.shtml?num=60932