马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 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访问加速。 |