Netplan — слой описания сети в Ubuntu и Debian: вы пишете YAML, а утилита генерирует конфигурацию для systemd-networkd или NetworkManager. Такой подход убирает разнобой между /etc/network/interfaces и настройками графической среды. В статье — статический адрес, DHCP, Wi-Fi, мост, VLAN, диагностика и типичные ошибки, из-за которых после netplan apply сервер теряет связь.

Как устроен Netplan

Файлы лежат в /etc/netplan и читаются в лексикографическом порядке. Обычно там один файл 50-cloud-init.yaml или 01-netcfg.yaml. Каждый документ содержит корневой ключ network с version: 2 и одним из рендереров: networkd для серверов, NetworkManager для десктопов. Netplan не является демоном: он вызывает генератор при загрузке и по команде.

  • netplan generate — только собрать конфиги бэкенда, без применения.
  • netplan apply — применить сразу, без возможности отката.
  • netplan try — применить на 120 секунд и вернуть всё назад, если не подтвердить Enter.
  • netplan status — показать текущее состояние, адреса и маршруты (Ubuntu 24.04 и новее).

На сервере по SSH используйте netplan try: при ошибке связь восстановится сама. Это дешевле, чем ехать в дата-центр с консолью.

DHCP и статический адрес

Минимальный конфиг для DHCP выглядит так. Имя интерфейса подставьте своё, его показывает команда ip link.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
      dhcp6: false

Для статического адреса указывайте routes вместо устаревшего gateway4. Ключ gateway4 всё ещё встречается в старых руководствах, но помечен как deprecated и в новых версиях может быть удалён.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.50/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
        search: [lan]

Обратите внимание на отступы: YAML не прощает табуляцию. После сохранения выставите права: файл с паролем Wi-Fi не должен быть доступен всем.

sudo chmod 600 /etc/netplan/01-netcfg.yaml
sudo netplan generate
sudo netplan try

Если адрес выдаётся по DHCP, но DNS нужно переопределить, используйте dhcp4-overrides с use-dns: false и отдельный блок nameservers. Такой приём полезен, когда локальный DHCP-сервер раздаёт неверный резолвер, а менять его настройки нельзя.

Несколько адресов и маршрутов

Один интерфейс может иметь несколько адресов, в том числе IPv6. Дополнительный маршрут в другую подсеть задаётся отдельной записью с metric: чем меньше значение, тем выше приоритет.

      addresses: [192.168.1.50/24, 192.168.1.51/24, "fd00::50/64"]
      routes:
        - to: default
          via: 192.168.1.1
          metric: 100
        - to: 10.20.0.0/16
          via: 192.168.1.254
          metric: 200

Если нужно отправить трафик в отдельную таблицу, добавьте table и правило в routing-policy. Это пригодится, когда в системе два провайдера и требуется развести ответы по источнику. Для домашней сети такие схемы избыточны.

Wi-Fi на ноутбуке

Для беспроводного интерфейса нужен пакет wpasupplicant, если используется networkd. На десктопе проще указать renderer: NetworkManager — тогда настройка останется видимой в графическом интерфейсе.

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp2s0:
      dhcp4: true
      access-points:
        "HomeNet":
          password: "сложный-пароль"

SSID и пароль чувствительны к регистру. Для скрытой сети добавьте hidden: true, для WPA3 — блок auth с key-management: sae. Не храните этот файл в публичном репозитории и не публикуйте вывод netplan get.

Мост и VLAN

Мост нужен для виртуальных машин и контейнеров. Физический интерфейс становится портом моста и не получает адрес сам.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: false
  bridges:
    br0:
      interfaces: [enp3s0]
      addresses: [192.168.1.10/24]
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        stp: false
        forward-delay: 0

VLAN создаётся поверх родительского интерфейса и получает собственный адрес. Идентификатор должен совпадать с настройкой порта на коммутаторе.

  vlans:
    vlan10:
      id: 10
      link: enp3s0
      addresses: [10.0.10.5/24]

Если VLAN не поднимается, проверьте, что на порту коммутатора разрешён тег 10 и что родительский линк в состоянии UP. Ошибка в id приводит к тому, что интерфейс существует, но не получает трафик.

Диагностика

После применения проверяйте не только YAML, но и фактическое состояние ядра. netplan status показывает расхождения между желаемым и текущим.

netplan status --diff
ip -br addr
ip route
resolvectl status

Если адрес не появился, смотрите journalctl -u systemd-networkd и networkctl status enp3s0. Частая причина — опечатка в имени интерфейса: современные системы используют предсказуемые имена вроде enp3s0, а не eth0. Узнать имя можно через ip link.

networkctl status enp3s0
sudo journalctl -u systemd-networkd -n 80 --no-pager
sudo netplan --debug apply

Проверка перед перезагрузкой

Синтаксис проверяется командой netplan generate: она не меняет сеть, но показывает ошибки YAML и неизвестные ключи. Полный прогон удобно делать на копии каталога /etc/netplan, чтобы не задеть рабочий конфиг. Перед перезагрузкой убедитесь, что нужная служба включена: systemctl is-enabled systemd-networkd, а для десктопа — NetworkManager.

systemctl is-enabled systemd-networkd
sudo cp -a /etc/netplan /root/netplan-backup
ls -l /etc/netplan

Если после apply пропал DNS, проверьте /etc/resolv.conf: systemd-resolved управляет им через симлинк, а ручная правка файла будет перезаписана. Настройки резолвера смотрите через resolvectl status, а не через содержимое симлинка.

Типичные ошибки

  • Файл 50-cloud-init.yaml перезаписывается cloud-init. Отключите управление сетью в /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg строкой network: {config: disabled}.
  • Слишком открытые права: Netplan предупреждает и может отказаться применять файл.
  • Два файла задают один интерфейс. Файл с более поздним именем перекрывает предыдущий, но лучше держать один источник истины.
  • Смена IP по SSH без netplan try приводит к потере сессии.
  • Шлюз указан через gateway4, а версия Netplan уже не поддерживает ключ.

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

Итог

Netplan сводит настройку сети к одному YAML-файлу и делает конфигурацию воспроизводимой. Для сервера достаточно статического адреса, маршрута по умолчанию и DNS; для ноутбука удобнее NetworkManager. Главное правило — менять сеть удалённо через netplan try и всегда проверять результат командами ip и netplan status, а не только отсутствием ошибок в YAML.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте