Linux
ip 規則不應該打敗 ip route
我正在執行 CentOS 並且正在使用
ip route
andip rule
進行路由。我目前有一個
ip rule
from 10.8.23.0/28 table 1234
和
ip route
default via 10.8.23.254 eth1 10.10.10.10 via 10.10.10.1 eth1 10.0.0.0/14 dev test-interface table 1234
看來我
ip rule
的第二行成功了ip route
,所以即使目標 IP 是 10.10.10.10,test-interface
如果源 IP 是,我的數據包仍然會通過發送10.8.23.0/28
。即使源 IP 與規則匹配,我如何確保它
10.10.10.10 via 10.10.10.1 eth1
推翻了“p 規則”?希望它有意義:)測試
ip route get 10.10.10.10
給了我:10.10.10.10 via 10.10.10.1 dev eth1 src 10.8.23.1
但
ip route get 10.10.10.10 src 10.0.0.13
給了我:10.10.10.10 via 10.10.10.254 dev test-interface src 10.8.23.1
因此
src IP
優先於目標 IP。
您可以簡單地想到
ip rule
,這是一種創建/擁有更多 ip 路由表(不僅僅是預設路由表)的方法。要解決您的問題,您需要添加另一個
ip rule
條目來處理您的特定路線案例。例如,您可以使用以下命令:$ sudo ip rule add to 10.10.10.10/32 lookup 123 priority 10
在這裡,我假設
10
它足夠小,可以成為第一個ip rule
. 這取決於 的輸出ip rule ls
。它將根據優先級向您顯示所有規則(較小的值意味著較高的優先級並首先顯示)。如果您需要在您的 中結合源和目標檢查
ip rule
,您可以使用:$ sudo ip rule add from 10.8.23.0/28 to 10.10.10.10/32 lookup 123 priority 10
該表
123
應包含正確的路線,例如:$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123