Linux

修改linux中現有的路由條目

  • April 12, 2022

修改linux中現有路由條目的度量的命令是什麼?我可以使用下面的“ip route change”命令更改現有條目的網關,但無法更改指標。還有其他命令嗎?

route –n
40.2.2.0        30.1.3.2        255.255.255.0   eth2

ip route change 40.2.2.0/24 via 30.1.2.2

route -n
40.2.2.0        30.1.2.2        255.255.255.0   eth1

如對該問題的評論中所述,引用 linux-net 郵件列表中的一條消息:“無法更改度量/優先級

$$ … $$這是目前協議的限制$$ … $$."

唯一的方法是刪除路線並添加一條新路線。 這是使用route命令完成的,例如:

sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1

route 命令的 Debian 手冊頁

(將各種評論組合成一個答案)

目前,無法修改路由的指標。作為關於 LKML 的 2005 年消息指出

$$ … $$無法更改指標/優先級,因為我們沒有單獨的欄位供要匹配的欄位和新值,因此如果您指定指標,則根本找不到條目,並且請求失敗並顯示 ENOENT,因為未指定 NLM_F_CREATE。這是目前協議的一個限制,改變它可能是一個好主意,但它不是微不足道的$$ … $$

這似乎適用於ip route changeip route replace- 前者對我來說會導致錯誤,而後者會創建一個廣告的附加路由(其手冊頁狀態replace將替換創建路由)。這與核心響應 ENOENT 並ip route replace跟進路由創建請求是一致的。


因此,解決方案是刪除現有路線並添加一條新路線。例如

ip route del 40.2.2.0/24 via 30.1.2.2
ip route add 40.2.2.0/24 via 30.1.2.2 metric 1234

引用自:https://unix.stackexchange.com/questions/245208