
Недавно я настроил сервер, сеть которого управлялась напрямую с помощью systemd-networkd
(nuked netplan.io
и Network Manager), и присвоил ему статические IP-адреса, например:
/etc/systemd/network/10-ethernet.network
[Match]
Name=eno1
[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=192.168.1.1
После перезапуска systemd-networkd.service
маршруты по умолчанию выглядят так:
default via 192.168.1.1 dev eno1 proto static
default via 172.16.0.1 dev eno2 proto static
default via 172.31.255.1 dev eno3 proto static
^^^
Поскольку имеется несколько сетевых карт и я хочу сделать eno1
из них предпочтительную, мне нужно, чтобы маршруты были организованы следующим образом:
default via 192.168.1.1 dev eno1 proto static metric 100
default via 172.16.0.1 dev eno2 proto static metric 300
default via 172.31.255.1 dev eno3 proto static metric 500
^^^^^^^^^^
Без metric
значения по умолчанию используется значение 0, что означает, что все маршруты имеют одинаковый приоритет (наивысший), чего я хочу избежать.
Я попробовал эту настройку:
[Route]
Gateway=192.168.1.1
Metric=100
Но это только создаетдополнительныймаршрут с желаемой метрикой, в то время как исходные (отсутствующие metric
) все еще остаются.
Я работаю на Systemd 240. Как мне этого добиться?
решение1
В этой теме вы можете увидеть, как разработчики обсуждают, как все работает, и как все должно работать:https://github.com/systemd/systemd/issues/928
Они приводят несколько примеров:
Под тегом «Маршрут»
[Route]
Destination=192.168.0.0/24
Metric=2048
Под тегом DHCP
[DHCP]
RouteMetric=1024
Объясняется это тем, что:
Маршруты подсети настраиваются без метрики через address_configure в networkd-address.c при получении IP, а предоставленные DHCP маршруты с метрикой обрабатываются позже через link_set_dhcp_routes в networkd-dhcp4.c
Далее следует оговорка:
RouteMetric работает для маршрутизируемых пакетов, но не для тех, которые остаются в локальной подсети.
Возможно, что именно та функциональность, которую вы хотите, еще не существует, поскольку тикет, на который я ссылался, в настоящее время открыт. Не стесняйтесь давать обратную связь напрямую разработчикам и присоединяйтесь к обсуждению, если вы считаете, что у вас есть идея о том, как это должно работать.