我正在運行 CentOS,並使用ip route
和ip 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
。
10.10.10.10 via 10.10.10.1 eth1
即使來源 IP 與規則匹配,我如何確保推翻“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。
答案1
你可以簡單地認為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