ip 规则不应该打败 ip 路由

ip 规则不应该打败 ip 路由

我正在运行 CentOS 并且使用ip routeip 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

相关内容