С чего начать Первые шаги трек · 15 ступеней
Linux Labs

Постоянная настройка сети netplan

5 мин Ubuntu 24.04 · netplan

Постоянная конфигурация сети в Ubuntu — YAML-файлы netplan, статический адрес и DHCP, безопасное применение.

Шпаргалка

4 команды Версия для печати
  • sudo netplan generate проверить синтаксис и собрать бэкенд-конфиг
  • sudo netplan try применить с автооткатом через 120 c
  • sudo netplan apply применить сразу
  • cat /etc/netplan/*.yaml что сейчас описано в файлах

Обзор

ip-команды меняют сеть временно, до перезагрузки. Постоянная конфигурация в Ubuntu Server задаётся через netplan: YAML-файлы в /etc/netplan/, которые netplan транслирует в конфигурацию бэкенда — на серверах это обычно systemd-networkd.

bash
ls /etc/netplan/                  # какие файлы описания сети есть
cat /etc/netplan/01-netcfg.yaml   # содержимое конкретного файла

netplan get печатает не текущее состояние сети, а сведённую конфигурацию из файлов /etc/netplan/ — то, что должно быть применено. Реальное состояние интерфейсов и адресов смотри отдельно: ip -br a, ip -br l, networkctl status.

Конфигурация

DHCP на интерфейсе:

yaml
# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true                 # получать адрес по DHCP

Статический адрес:

yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.1.10/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]

YAML чувствителен к отступам: только пробелы, без табов, и уровень вложенности должен совпадать по всему файлу.

Рецепты

3

Применение изменений

bash
sudo netplan generate              # проверить синтаксис без применения
sudo netplan try                   # применить с откатом через 120 c, если не подтвердить Enter
sudo netplan apply                 # применить сразу, без отката
sudo netplan --debug apply         # с подробным выводом

По SSH на удалённой машине конфигурацию сети меняет netplan try: если новый конфиг рвёт соединение, через 120 секунд без подтверждения netplan возвращает прежний файл и доступ восстанавливается. netplan apply такой страховки не даёт — ошибка в адресе или шлюзе может отрезать единственный канал к машине.

Несколько файлов в /etc/netplan

Файлы применяются все вместе, в порядке имён (01-..., 50-...); поздний файл может переопределить настройки раннего для того же интерфейса. Держи один интерфейс в одном файле, чтобы не искать конфликт по нескольким.

Постоянный маршрут к сети через соседа

Маршрут из ip route add живёт до перезагрузки. Постоянный пишут в routes: того интерфейса, через который виден сосед: to — сеть назначения, via — адрес соседа в общей сети. Маршрут по умолчанию (to: default) остаётся как был, новая строка встаёт рядом:

yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.50.10/24]
      routes:
        - to: default
          via: 192.168.50.1
        - to: 10.99.0.0/24        # сеть за соседом
          via: 192.168.50.20      # адрес соседа
bash
sudo netplan try                  # или apply на учебной машине
ip route get 10.99.0.1            # … via 192.168.50.20 dev eth0 …
ip route show 10.99.0.0/24        # маршрут в таблице

ip route get показывает, каким путём ядро отправит пакет на адрес: если в ответе via соседа — маршрут работает. Адрес via должен быть в сети самого интерфейса, иначе маршрут не встанет. Подробнее о таблице маршрутов — в ip.

Неполадки

5

Маршрут пропал после перезагрузки

Его добавили командой ip route add, а в файлах /etc/netplan/ его нет. Запиши маршрут в routes: интерфейса и примени конфигурацию.

После apply пропал доступ по сети

Ошибка в конфиге: неверный адрес, шлюз или отступ. Зайди через консоль гипервизора, поправь файл и примени netplan try, а не apply. Если доступ пропадал именно из-за apply без отката — переходи на try для всех последующих правок сети на этой машине.

netplan apply: ничего не изменилось

Проверь синтаксис (sudo netplan generate покажет ошибку и файл), правильный ли файл правился и совпадает ли имя интерфейса (ip -br a) с тем, что указано в YAML.

Нет DNS после настройки

Добавь блок nameservers: addresses: [...] в конфиг интерфейса. Проверь, какие серверы реально используются: resolvectl status (см. dns-resolv).

netplan get показывает не то, что видно в системе

netplan get читает только файлы /etc/netplan/, не реальное состояние интерфейсов. Если после ручных команд ip или сбоя применения расхождение велико — сверься с ip addr и networkctl status, затем приведи файлы в соответствие и примени их заново.

Термины

2
YAML
Текстовый формат структурированных данных, где отступы задают вложенность. Ещё встречается в: docker compose, ansible-playbook: запуск плейбука, cloud-init, ip и ещё 1
сетевой renderer network renderer
Исполнитель сетевой конфигурации, для которого Netplan генерирует настройки.

См. также

  • ip — Управление интерфейсами, адресами и маршрутами (iproute2) — замена ifconfig/route.
  • dns-resolv — Как имя превращается в IP — resolv.conf, systemd-resolved, /etc/hosts, dig.
  • network-diagnostics — Лесенка проверки связности — от шлюза до DNS и порта назначения.
Загрузка…