Linux
修改linux中現有的路由條目
修改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
(將各種評論組合成一個答案)
目前,無法修改路由的指標。作為關於 LKML 的 2005 年消息指出:
$$ … $$無法更改指標/優先級,因為我們沒有單獨的欄位供要匹配的欄位和新值,因此如果您指定指標,則根本找不到條目,並且請求失敗並顯示 ENOENT,因為未指定 NLM_F_CREATE。這是目前協議的一個限制,改變它可能是一個好主意,但它不是微不足道的$$ … $$
這似乎適用於
ip route change
和ip 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