【分享】ROS回流问题分析及处理
本帖最后由 ewangsoft 于 2011-11-5 10:07 编辑正确和错误时的通信概图
有问题时的通信过程
正确的通信过程(备注:上图第③⑤步,包进出LAN都不会再做NAT,因为已经存在NAT映射条目。)
上图中第三步的SRC-NAT操作的to address最好为ROS的LAN接口IP,这样可以避免服务器应答包进ROS的LAN接口时,受策略路由影响。(2011年9月12日后记:应该只对内部通过ROS外部IP访问内部服务器的出LAN接口的做SRC-NAT,to address为ROS的LAN接口IP,src.address为内部网段IP,dst.address为服务器内网IP。也就是说,不管不管是NAT还是mangle,操作的对象要尽可能的具体。即使源和目的是一个网段的,也会受到策略路由的影响而改变路由转发的目的地。2011年9月20日后记:最简单的解决此问题的方法是:在内部服务器上添加同网段下一跳为ROS的LAN接口IP。)
上图第五步出LAN应答给用户的数据包出LAN时不会做SRC-NAT,因为在此之前有DST-NAT条目1。
内部服务器应答包经LAN口进入ROS后,ROS会根据之前的NAT条目,将此应答包经ROS的LAN接口传出给内部用户,包出ROS的LAN口时不存在SRC-NAT问题,因为之前已经有NAT映射条目1,通信不能完成。
上述是对回流的原因分析及解决回流时NAT方面的问题。另外还需要注意的是,内部用户通过服务器外网IP访问时,通信是否走我标识的路线,这由ROS上的静态路由、策略路由以及动态路由等路由决定。所以除了考虑配置正确的NAT外,还要制定正确的路由,以便通信沿我标识的路线走。
另外,除了上述从“根本”上解决回流问题外,还可以创建建一个供内部用户使用的DNS服务器,将服务器的域名资源记录转换成服务器的内网IP,通信将在内部进行,不会受服务器发布的DST-NAT以及路由选择方面的影响。
另外,如果不想建内部DNS服务器的话,可以在ROS上做DNS劫持,将内部到外部所有的DNS请求转发到ROS中,然后在ROS中创建服务器域名资源记录对应的内网IP(也就是让ROS充当DNS转发服务器,这种方式,内网的DNS通信请求均有ROS应答,可能会增加ROS的负担)。
综合上述,建立供内部使用的域名服务器是最合适的方法,此方法不会给ROS增加任何负担。创建一个内部DNS转发缓存服务器,也有利于内部用户DNS访问加速。 来几个截图。没看明白src-nat下“to address为ROS的LAN接口IP”?笔误还是? 这玩意发过无数次了,其实只要在srcnat中指定源地址,就不会有NAT-反射的问题。
而且回流这个词,听起来不好理解,相反是英文的 nat反射更好理解点。 我昨天还碰到一种问题:
故障表现:
临时的路由器,偷懒用的masquerade
使用BT软件下载东西,做了端口映射。BT软件上提示端口映射不成功
后修改为源映射 src-add=IP/子网 to address=公网地址后,
BT软件立刻显示正常
并且两者速度相差极大(在路由内观察),在用伪装时速度在30-40Mbps左右,修改为源映射后跑满线路50Mbps :') 没有怎么看明白,收下研究中。 host2318 发表于 2011-11-5 17:37 static/image/common/back.gif
我昨天还碰到一种问题:
故障表现:
临时的路由器,偷懒用的masquerade
原来怎么做的映射? 只有第一条规则从伪装修改到源映射,下面的端口映射未修改过
> ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat action=src-nat to-addresses=124.172.173.14
src-address=192.168.0.0/23
1 chain=dstnat action=dst-nat to-addresses=192.168.0.126 to-ports=55000
protocol=tcp dst-address=124.172.173.14 dst-port=55000
2 chain=dstnat action=dst-nat to-addresses=192.168.0.126 to-ports=55000
protocol=udp dst-address=124.172.173.14 dst-port=55000
本帖最后由 ewangsoft 于 2011-11-6 16:53 编辑
bobwalker 发表于 2011-11-5 23:12 static/image/common/back.gif
只看楼主的图,不要看楼主的图上的文字。图是没有错的,文字解释也不能算错只是不恰当,看了反而会晕。 ...
我又看了下我配图的说明,仍认为没有问题。
或许是我功力不够,既然网友看出了问题,那就指出来吧,我虚心请教。
下面的文字说明我也看过了,也没发现问题,请发现问题的朋友说出问题所在吧。我真心接受改正。
另外,给我评分的朋友,大可不必,铜板这东西我不感冒。 host2318 发表于 2011-11-6 10:44 static/image/common/back.gif
只有第一条规则从伪装修改到源映射,下面的端口映射未修改过
很显然你的映射规则不过具体,导致些没意义的映射发生,而这些映射并不影响你看到的结果。 看了犯晕。:lol bobwalker 发表于 2011-11-6 22:04 static/image/common/back.gif
你说“备注:上图第③⑤步,包进出LAN都不会再做NAT,因为已经存在NAT映射条目。”容易让人产生误解 ...
注意,我那个地方的备注,说的是:不会“再”做,而不是说:不会做。加上上下文提示,没有歧义。
如此深奥的东东
呀,这不是大河博客里的吗,偶全套教程中也讲了这个,莫非 楼主。。。 jiangyufu 发表于 2011-11-7 14:45 static/image/common/back.gif
呀,这不是大河博客里的吗,偶全套教程中也讲了这个,莫非 楼主。。。
哥哥,我就是大河博主:shutup:
你丫教程中讲了这个?拿出来,看是不是和我的图和分析一样,要是的话,丫的。。。 bobwalker 发表于 2011-11-7 11:51 static/image/common/back.gif
我理解你的意思,你想说第三五步ROS管理员不用再做NAT规则,但你说"包进出LAN都不会再做NAT"毫无疑问是错 ...
哥哥,我认错好了。。。
我说“不再”的意思是,不会再生成NAT映射条目。。。。
页:
[1]