使用 systemd-networkd 設定靜態 IP 的路由指標?

使用 systemd-networkd 設定靜態 IP 的路由指標?

我最近設定了一個伺服器,其網路由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 適用於路由資料包,但不適用於保留在本地子網路上的資料包

您想要的確切功能可能尚不存在,因為我引用的票證目前處於開啟狀態。如果您認為自己知道如何運作,請隨時直接向開發人員提供回饋並加入討論。

相關內容