Linux

ip 規則和路由沒有得到尊重

  • May 3, 2019

我正在嘗試packets基於他們的路由source address,並添加了以下內容:

# ip rule add from 10.10.10.0/16 dev eth0 table foobar
# ip route add default via 100.100.100.1 dev eth0 table foobar

然而,測試路由給了我錯誤的via地址:

# ip route get 4.3.2.1 from 10.10.10.1
4.3.2.1 from 10.10.10.1 via 100.0.0.1 dev eth0

這怎麼不被尊重?

這是我的正常routes

# ip route list
default via 100.0.0.1 dev eth0

# ip route show table foobar
default via 100.100.100.1 dev eth0

# ip rule list
0:  from all lookup local
32765:  from 10.10.10.0/16 iif eth0 lookup foobar
32766:  from all lookup main
32767:  from all lookup default

你的問題不是問題。在規則中,您不僅使用源地址,還使用輸入介面匹配。因此,有兩種方法可以解決您的“問題”:

  1. 不要dev eth0在規則中使用
  2. iif eth0ip route get...命令中添加。該iif選項允許您在命令中使用非本地地址ip route get,因此您可以使用以下內容: ip route get 4.3.2.1 from 10.10.20.253 iif eth0

引用自:https://serverfault.com/questions/965743