syhandwork 发表于 2011-10-18 09:54:55

继续“关于ROS本身访问请求做标记”

虚拟这么一个环境,有三条外线分别为wan1wan2   wan3,外部有一服务器A地址为10.10.10.10。
此时我希望ROS访问A的1723端口走wan2 ,
ROS访问A的icmp协议走wan3,
ROS访问A的其它端口和协议走wan1,

分析上面情况,因为目标地址均相同,此时“按目标地址添加路由”的方式已经不能用了。
我尝试添加三条路由:目标地址均为A,getway分别为wan1、wan2、wan3,分别标记路由为1、2、3,然后在mangle里output链针对上面三种情况先做连接标记,再根据连接标记分别做路由标记为1、2、3,理论上应该可以实现啊,但事实却是无情的,timeout!

针对上面这些情况,大家帮我整理一下思路,有没有办法实现。先在这里谢谢大家。

syhandwork 发表于 2011-10-20 18:48:01

经过老马的帮助,已经知道不成功的原因,现在解答一下,给在这方面也困惑的朋友们一些提示。

我上面的方法二:
    添加三条路由:目标地址均为A,getway分别为wan1、wan2、wan3,分别标记路由为1、2、3,然后在mangle里output链针对上面三种情况先做连接标记,再根据连接标记分别做路由标记为1、2、3。
   
    此时这种做标记的方法是完全没错的。但为什么会timeout呢。这时因为ROS主动访问时也是有原地址的,它会选择默认路由所在网卡的地址为原地址,如上面,默认路由如果是wan3,那么ROS访问时的原地址就是wan3的地址,当ROS访问1723连接时,我们标记了路由为2,那此时会有原地址为wan3,目标端口为1723的数据请求发送过来。这里是问题关键了,你要访问外网,wan3的地址如果是公网地址,那好直接出去了,如果wan3是你的私网地址,那对不起,你不做nat,它是不会让你的请求出去的。此时访问请求就停在线路2的NAT这块不走了。所以你得针对wan3的地址经过wan2时做nat。这个问题就解决了。
    另外再讲一下,如果wan3的地址是公网地址的话,那标记做完之后就可以出去,但此时的地址为wan3的公网地址,意味着回程路由会走3的线路,那此时会形成所以上传按要求负载均衡了,但下载流量会集中到默认路由3上。

syhandwork 发表于 2011-10-20 18:50:33

经过老马的帮助,已经知道不成功的原因,现在解答一下,给在这方面也困惑的朋友们一些提示。

我上面的方法二:
    添加三条路由:目标地址均为A,getway分别为wan1、wan2、wan3,分别标记路由为1、2、3,然后在mangle里output链针对上面三种情况先做连接标记,再根据连接标记分别做路由标记为1、2、3。
   
    此时这种做标记的方法是完全没错的。但为什么会timeout呢。这时因为ROS主动访问时也是有原地址的,它会选择默认路由所在网卡的地址为原地址,如上面,默认路由如果是wan3,那么ROS访问时的原地址就是wan3的地址,当ROS访问1723连接时,我们标记了路由为2,那此时会有原地址为wan3,目标端口为1723的数据请求发送过来。这里是问题关键了,你要访问外网,wan3的地址如果是公网地址,那好直接出去了,如果wan3是你的私网地址,那对不起,你不做nat,它是不会让你的请求出去的。此时访问请求就停在线路2的NAT这块不走了。所以你得针对wan3的地址经过wan2时做nat。这个问题就解决了。
    另外再讲一下,如果wan3的地址是公网地址的话,那标记做完之后就可以出去,但此时的地址为wan3的公网地址,意味着回程路由会走3的线路,那此时会形成所以上传按要求负载均衡了,但下载流量会集中到默认路由3上。
页: [1]
查看完整版本: 继续“关于ROS本身访问请求做标记”