使用ROS配置策略路由是遇到一个奇怪的现象,我本来是想配置电信和网通的分流的,分别有一条专线。

电信为默认路由,使用mangle 添加 Routing Mark 的方式来配置路由选择,AL.CNC是一个下载的网通地址表

 chain=prerouting action=mark-routing new-routing-mark=R.CNC
 passthrough=yes dst-address-list=AL.CNC

然后建立策略路由表,如下,看着比较多行,其实主要相关的是行号1:

 0 A S  0.0.0.0/0                          reachable     58.57.XXX.XX                       1        E.WAN.CTC[V3003]          
 ; routing mark - R.CNC
 1 A S  0.0.0.0/0                          reachable     218.56.XXX.XX                      1        E.WAN.CNC[V3001]          
 2 A S  10.0.0.0/8                         reachable     10.5.159.189                       1        E.LAN.OF                 
 3 ADC  10.5.159.188/30    10.5.159.190                                                     0        E.LAN.OF                 
 4 ADC  58.57.XX.XXX/30    58.57.XX.XXX                                                     0        E.WAN.CTC[V3003]          
 7 ADC  192.168.68.0/24    192.168.68.1                                                     0        E.LAN.HOME#1[V1001]       
 8 ADC  218.56.XXX.XX/30   218.56.XXX.XX                                                    0        E.WAN.CNC[V3001]

按照正常完成上面的配置后遇到一个奇怪的现象:

客户端无法Ping通网通段的IP地址,当然其它对网通地址段的访问也都不通,然后反复排查,查资料,头痛…..

中间发现:如果在R.CNC路由表中添加客户端的路由后客户端就可以正常访问了,但这不应该是解决问题的根本方法,有些连接路由或动态路由是无法手动处理的。

然后又尝试很多种处理方式,和可能出问题的地方,头真的很痛。。。

直接说原因吧:

上述配置中使用的AL.CNC地址表中包含了我的网通接口地址,(按情理来说当然应该包含的,我的网通接口地址当然在网通IP地址表范围内)

但是造成问题的原因就在这里,只要从地址表中去掉我的网通接口地址,一切就都正常了,可以直接修改AL.CNC地址表,也可以简单修改mangle排除掉接口地址,像这样:

chain=prerouting action=mark-routing new-routing-mark=R.CNC passthrough=yes 
dst-address=!218.56.XXX.XX dst-address-list=AL.CNC 

?仍然存在的疑问?

这种情况应该在配置网通电信策略路由时经常遇到,但在问题排查过程中,没有从网络上看到类似的讨论!为什么?

这种意外情况是ROS设计的本意还是它的一个BUG?我使用的版本是4.22

我真的找到了问题的根源了吗?

BTW

发现,当配置好网通、电信自动路由选择后,线路负载分配很大程度上受DNS设定影响,当使用网通的DNS服务器是,大部分访问会解析到网通的服务器上,电信的也同理。

(253)

分类: 应用

1 条评论

nomyself · 2010/12/19 4:14 下午

应该是DNS server上有做ACL的原因

发表评论

电子邮件地址不会被公开。