我最近设置了一个服务器,其网络由systemd-networkd
(nukednetplan.io
和网络管理器)直接管理,并给它静态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
据解释:
获取 IP 时,通过 networkd-address.c 中的 address_configure 不配置子网路由,并且稍后通过 networkd-dhcp4.c 中的 link_set_dhcp_routes 处理带有度量的 dhcp 提供的路由。
此外还有一个警告:
RouteMetric 适用于路由数据包,但不适用于保留在本地子网上的数据包
您想要的确切功能可能尚不存在,因为我引用的票证当前处于打开状态。如果您认为自己知道如何运作,请随时直接向开发人员提供反馈并加入讨论。