. Я использую Ubuntu 20.04 с systemd-networkd и Netplan. У меня есть два физических интерфейса (ens3
и ens4
), которые настроены DHCP (с оговорками, поэтому я всегда получаю одни и те же адреса).
Кроме того, у меня есть два туннельных устройства. Они находятся вне контроля Netplan/networkd (они созданы Strongswan, но во всех смыслах и целях они создаются вручную, запустив что-то вроде iptunnel add...
). К этим туннельным устройствам добавлен ip-маршрут
для отправки на них трафика.При первоначальном создании они работают нормально, но systemd-networkd в конечном итоге удалит маршруты.
Чтобы противостоять этому, я успешно настроил туннельные устройства в systemd-networkd, но маршрут не может быть создан, потому что он был предпринят до настройки ens3
/ens4
(я вижу tunnel1: не удалось установить маршрут: неверный адрес prefsrc. Неверный аргумент
в системном журнале). Я подтвердил заказ, включив ведение журнала отладки.
Я могу добавить маршрут вручную:
ip route add 10.0.32.0/20 dev tunnel1 scope link src 10.0.16.170 metric 100
... это работает нормально, но позже будет удалено systemd-networkd.
В документации говорится: «Все файлы конфигурации коллективно сортируются и обрабатываются в лексическом порядке, независимо от каталогов, в которых они находятся». Поэтому я поискал другие файлы конфигурации и нашел их в /run/systemd/network
:
10-netplan-ens3.link
10-netplan-ens3.network
10-netplan-ens4.link
10-netplan-ens4.network
Я пытался назвать свои файлы netdev
и network
как 99-tunnel1.netdev
или zzzz-tunnel1.netdev
и т.д., и даже пробовал с 00-
и т.д. Что бы я ни делал, всегда кажется, что ens3
и ens4
настроены после туннельных интерфейсов, поэтому маршрут всегда не добавляется.
Я также пытался настроить свои устройства в Netplan. Это усложняет некоторые вещи, но в конечном итоге имеет ту же проблему. Несмотря на то, что он создает такие файлы, как 10-netplan-tunnel1.network
(которые лексически идут после файлов ens3/ens4), они по-прежнему применяются networkd в неправильном порядке.
Я уверен, что что-то здесь упускаю, но не могу понять что. Есть идеи?
Мой tunnel1.netdev
выглядит так:
[NetDev]
Name=tunnel1
Kind=vti
MTUBytes=1419
[Tunnel]
Remote=1.2.3.4
Local=2.3.4.5
Key=100
...а .network
выглядит так:
[Match]
Name=tunnel1
[Link]
RequiredForOnline=no
MTUBytes=1419
[Address]
Address=169.254.102.162/30
Peer=169.254.102.161/30
[Route]
Destination=10.0.32.0/20
PreferredSource=10.0.16.170
Metric=100
Scope=link