我在 CentOS-6.6 服务器上的基于策略的路由方面遇到了一些奇怪的困难。我有一个设置,需要将所有来自的数据包路由到目的地172.25.0.0/16
,172.24.0.0/16
一些数据XXX.155.106.50
包通过 VPN 隧道后面的某个网关 ( 10.4.20.5
)。我只是在做我一直做的事情。
1)我zone2
在/etc/iproute2/rt_tables中定义了表:
255 local
254 main
253 default
0 unspec
25 zone2
2)我添加了一些规则,因此我得到的回复如下ip rule show
:
0: from all lookup local
32762: from all to 172.25.0.0/16 lookup zone2
32763: from 172.25.0.0/16 lookup zone2
32766: from all lookup main
32767: from all lookup default
3)最后,我在表中添加了一些路线,因此ip route show table zone2
我得到了以下回复:
XXX.155.106.50 via 10.4.20.5 dev tun0
172.25.64.0/24 dev cloudbr0 scope link
172.25.65.0/24 dev cloudbr0 scope link
172.24.0.0/16 via 10.4.20.5 dev tun0
一切看起来都很合法,对吧?但是,这些规则似乎不起作用,因为 tcpdump 显示所有数据包172.25.0.0/16
都不是通过我的隧道发送的,而是直接发送的。
最有趣的是:当我执行类似操作时ping -I 172.25.65.254 XXX.155.106.50
,一切都正常,数据包正在通过隧道路由。但如果数据包来自网络(顺便说一下,网络接口是桥接的) - 所有这些规则似乎都被忽略,数据包直接通过。 :(
如能提供任何线索或提示我们将非常感激!