RouterOS ROS的策略路由表的意外故障
使用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服务器是,大部分访问会解析到网通的服务器上,电信的也同理。

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