Networking
使用 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 ^^^
因為有多個 NIC,我想
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 上執行。我應該如何實現這一點?
在這個執行緒中,您可以看到開發人員談論事情如何工作與事情應該如何工作:https ://github.com/systemd/systemd/issues/928
他們舉了幾個例子:
在 Route 標籤下
[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 適用於路由數據包,但不適用於保留在本地子網上的數據包
您想要的確切功能可能還不存在,因為我引用的票目前是開放的。如果您認為自己知道這應該如何工作,請隨時直接向開發人員提供回饋並加入討論。