opened image

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

 

Ubuntu 24.04 использует Netplan как единственный инструмент конфигурации сети. Конфигурация хранится в YAML-файлах в /etc/netplan/, а сам Netplan генерирует конфиги для systemd-networkd или NetworkManager. В этой статье разберём настройку статического IP, маршрутов, DNS, VLAN и bond-интерфейсов - с реальными примерами файлов и командами.

 

 

Как работает Netplan

 

Netplan читает файлы из /etc/netplan/*.yaml и передаёт конфигурацию нужному бэкенду. В серверной установке Ubuntu 24.04 по умолчанию используется systemd-networkd. На десктопе - NetworkManager.

 

Файлы читаются в алфавитном порядке. Если несколько файлов конфигурируют одно устройство, последний выигрывает. Стандартный файл после установки Ubuntu Server называется 00-installer-config.yaml.

 

ls /etc/netplan/
# 00-installer-config.yaml

 

Применение конфига без перезагрузки:

sudo netplan apply

 

Для отладки используют:

sudo netplan --debug apply
sudo netplan try   # применяет конфиг на 120 секунд, потом откатывает, если не подтвердить

 

netplan try особенно полезен при удалённой работе - если что-то пойдёт не так, соединение восстановится само через 2 минуты.

 

 

Структура YAML-файла

 

Все файлы Netplan начинаются с версии и секции network:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      ...

Поддерживаемые типы устройств: ethernets, wifis, bridges, bonds, vlans, tunnels.

 

 

Статический IP-адрес

По умолчанию Ubuntu настраивает DHCP. Для перехода на статический IP:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: false
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8
        search:
          - example.local

 

Здесь ens3 - имя интерфейса. Его можно узнать командой:

ip link show
# или
networkctl list

 

 

 

 

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

sudo netplan apply

 

Для проверки:

ip addr show ens3
ip route show
resolvectl status

 

 

Настройка нескольких IP на одном интерфейсе

 

Netplan поддерживает несколько адресов на одном интерфейсе - просто добавляем их в список:

ethernets:
  ens3:
    dhcp4: false
    addresses:
      - 192.168.1.100/24
      - 192.168.1.101/24
      - 10.0.0.5/8

 

 

Статические маршруты

 

Для добавления маршрутов используется секция routes:

ethernets:
  ens3:
    dhcp4: false
    addresses:
      - 192.168.1.100/24
    routes:
      - to: default
        via: 192.168.1.1
        metric: 100
      - to: 10.10.0.0/16
        via: 192.168.1.254
      - to: 172.16.0.0/12
        via: 192.168.1.254
        on-link: true

metric задаёт приоритет маршрута (меньше = выше приоритет). on-link: true указывает, что шлюз находится прямо в той же сети.

 

 

Настройка DNS

DNS настраивается через nameservers. Можно указать серверы и домены поиска:

nameservers:
  addresses:
    - 1.1.1.1
    - 1.0.0.1
  search:
    - corp.example.com
    - dev.example.com

 

Для проверки DNS-конфигурации:

resolvectl status
# или
cat /etc/resolv.conf

На Ubuntu 24.04 файл /etc/resolv.conf является симлинком на /run/systemd/resolve/stub-resolv.conf. Напрямую его редактировать не нужно.

 

 

VLAN-интерфейсы

 

VLAN настраивается в отдельной секции vlans. Физический интерфейс (ens3) нужно объявить в ethernets, даже без IP:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: false
  vlans:
    vlan10:
      id: 10
      link: ens3
      dhcp4: false
      addresses:
        - 10.10.10.5/24
      routes:
        - to: default
          via: 10.10.10.1
    vlan20:
      id: 20
      link: ens3
      dhcp4: false
      addresses:
        - 10.20.0.5/24

 

После применения:

sudo netplan apply
ip link show vlan10
ip addr show vlan10

 

 

 

 

Bond-интерфейс (агрегация каналов)

 

Bond объединяет два физических интерфейса в один логический. Это полезно для отказоустойчивости или увеличения пропускной способности.

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: false
    ens4:
      dhcp4: false
  bonds:
    bond0:
      interfaces:
        - ens3
        - ens4
      parameters:
        mode: active-backup
        primary: ens3
        mii-monitor-interval: 100
      dhcp4: false
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 1.1.1.1

 

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

Режим

Описание

balance-rr

Балансировка round-robin

active-backup

Один активный, второй резервный

balance-xor

XOR по MAC-адресам

802.3ad

LACP (нужна поддержка коммутатора)

balance-tlb

Адаптивная балансировка исходящего трафика

 

Проверка состояния bond:

cat /proc/net/bonding/bond0

 

 

Несколько интерфейсов и маршрутизация

 

На серверах с двумя сетевыми картами (например, публичная и приватная сеть) нужно аккуратно управлять маршрутами:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: false
      addresses:
        - 185.10.20.30/24
      routes:
        - to: default
          via: 185.10.20.1
          metric: 100
      nameservers:
        addresses:
          - 1.1.1.1
    ens4:
      dhcp4: false
      addresses:
        - 10.0.0.5/24
      routes:
        - to: 10.0.0.0/8
          via: 10.0.0.1
          metric: 200

metric здесь важен - дефолтный маршрут через ens3 имеет приоритет 100, поэтому весь интернет-трафик идёт через него. Маршрут в 10.0.0.0/8 использует ens4.

 

 

Диагностика проблем

 

Если netplan apply выдаёт ошибки:

# Проверить синтаксис YAML
sudo netplan generate

# Посмотреть ошибки systemd-networkd
journalctl -u systemd-networkd -n 50

# Посмотреть статус сетевых интерфейсов
networkctl status

 

Типичная ошибка - неправильный отступ в YAML. Netplan требует пробелы (не табы) и строгое соблюдение иерархии.

 

 

 

Итог

 

Netplan в Ubuntu 24.04 покрывает все стандартные задачи сетевой настройки: статический IP, несколько адресов, маршруты, DNS, VLAN и bond. Конфиги на YAML читаются проще, чем старые файлы /etc/network/interfaces. Команда netplan try защищает от потери доступа при ошибке в конфиге. Для сложных сценариев с несколькими интерфейсами - следите за метриками маршрутов.