После смены маршрутизатора сервер потерял статический адрес и не берёт новый из netplan: ручной файл systemd-networkd перебивал конфигурацию

Что было. Сервер на Ubuntu 22.04 после замены маршрутизатора остался без статического адреса. Правки в netplan не помогали, попытки настроить IPv6 вручную (с адресом шлюза в виде MAC-адреса) сделали хуже. В итоге автор обнаружил самодельный файл /etc/systemd/network/eno1.network, удалил его, пересоздал конфигурацию netplan, и всё заработало. Подтверждено.

Почему. На серверной Ubuntu netplan это генератор: из своих YAML он создаёт файлы для systemd-networkd в /run/systemd/network/. Файлы в /etc/systemd/network/ имеют приоритет над /run/ и применяются к тому же интерфейсу параллельно. Получается два источника правды: netplan пишет одно, ручной файл диктует другое, а результат зависит от порядка и совпадения имён. Особенно коварно, что netplan apply проходит без ошибок.

Правило. На одной машине интерфейсом управляет один инструмент. Если это netplan, каталог /etc/systemd/network/ должен быть пуст (или содержать только то, что netplan не умеет, с другими именами интерфейсов). Если решили писать networkd руками, убрать конфигурацию интерфейса из netplan.

Диагностика.

networkctl status eno1          # какой файл применён: строка Network File
ls /etc/systemd/network/ /run/systemd/network/
netplan get                     # что думает netplan
ip -br addr; ip route

networkctl status прямо показывает путь к файлу, из которого взята конфигурация: если он в /etc/systemd/network/, netplan не при делах.

Про IPv6 из обсуждения. Шлюз это адрес, а не MAC: via: fe80::1 (link-local шлюза) или глобальный адрес маршрутизатора. На большинстве площадок IPv6 для сервера настраивается либо автоматически (RA/SLAAC, в netplan accept-ra: true), либо статически с адресом из выделенного блока и шлюзом, который указан в панели. Смешивать SLAAC и статику на одном интерфейсе без понимания не стоит.

После смены сетевого оборудования проверять по порядку: подсеть и шлюз (могли измениться), DHCP-резервирование (если адрес выдаётся по MAC), DNS-серверы, и только потом лезть в конфиги. Часто «пропавший» статический адрес это просто новая подсеть на маршрутизаторе.

Минимальная рабочая конфигурация netplan для статики с IPv4 и IPv6 через RA:

network:
  version: 2
  ethernets:
    eno1:
      addresses: [192.0.2.10/24]
      routes: [{to: default, via: 192.0.2.1}]
      nameservers: {addresses: [192.0.2.53]}
      accept-ra: true

Формат описан в документации netplan.