¿Establecer métricas de enrutamiento para IP estáticas con systemd-networkd?

¿Establecer métricas de enrutamiento para IP estáticas con systemd-networkd?

Recientemente configuré un servidor con su red administrada directamente por systemd-networkd(nuked netplan.ioy Network Manager) y le di direcciones IP estáticas como esta:

/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

Después de reiniciar systemd-networkd.service, las rutas predeterminadas se ven así:

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
                                               ^^^

Debido a que hay varias NIC y quiero elegir eno1la preferida, quiero que las rutas se presenten así:

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
                                               ^^^^^^^^^^

Sin el metricvalor, el valor predeterminado es 0, lo que significa que todas las rutas tienen la misma prioridad (la más alta), lo cual quiero evitar.

Probé esta configuración:

[Route]
Gateway=192.168.1.1
Metric=100

Pero sólo genera unextraruta con la métrica deseada mientras aún quedan las originales (faltantes metric).

Estoy ejecutando Systemd 240. ¿Cómo debo lograr esto?

Respuesta1

En este hilo puedes ver a los desarrolladores hablando sobre cómo funcionan las cosas y cómo deberían funcionar:https://github.com/systemd/systemd/issues/928

Dan un par de ejemplos:

Debajo de la etiqueta de ruta

[Route]
Destination=192.168.0.0/24
Metric=2048

Bajo la etiqueta DHCP

[DHCP]
RouteMetric=1024

Se explica que:

Las rutas de subred se configuran sin métricas a través de address_configure en networkd-address.c cuando se obtiene una IP y las rutas proporcionadas por dhcp con métricas se procesan más tarde a través de link_set_dhcp_routes en networkd-dhcp4.c

Además hay una advertencia:

RouteMetric funciona para paquetes enrutados, pero no para aquellos que permanecen en la subred local

Es posible que la funcionalidad exacta que desea no exista todavía, ya que el ticket que cité está actualmente abierto. No dudes en enviar comentarios directamente a los desarrolladores y unirte a la discusión si crees que tienes una idea sobre cómo debería funcionar.

información relacionada