找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13337|回复: 14

[其它] 【分享】ROS回流问题分析及处理

  [复制链接]
发表于 2011-11-5 10:06:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 ewangsoft 于 2011-11-5 10:07 编辑

1.jpg

正确和错误时的通信概图



2.jpg

有问题时的通信过程


3.jpg

正确的通信过程(备注:上图第③⑤步,包进出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访问加速。

评分

参与人数 3铜板 +22 收起 理由
bobwalker + 6 确实很用心
9939781 + 6 支持原创
zhjchina + 10 图画的不错,很用心,赞一个!

查看全部评分

routeros
发表于 2011-11-5 10:57:48 | 显示全部楼层
来几个截图。没看明白src-nat下“to address为ROS的LAN接口IP”?笔误还是?
routeros
回复

使用道具 举报

发表于 2011-11-5 12:10:15 | 显示全部楼层
这玩意发过无数次了,其实只要在srcnat中指定源地址,就不会有NAT-反射的问题。

而且回流这个词,听起来不好理解,相反是英文的 nat反射更好理解点。
routeros
回复

使用道具 举报

发表于 2011-11-5 17:37:41 | 显示全部楼层
我昨天还碰到一种问题:
故障表现:
临时的路由器,偷懒用的masquerade
使用BT软件下载东西,做了端口映射。BT软件上提示端口映射不成功

后修改为源映射 src-add=IP/子网         to address=公网地址后,
BT软件立刻显示正常

并且两者速度相差极大(在路由内观察),在用伪装时速度在30-40Mbps左右,修改为源映射后跑满线路50Mbps
routeros
回复

使用道具 举报

发表于 2011-11-5 23:07:57 | 显示全部楼层
没有怎么看明白,收下研究中。
routeros
回复

使用道具 举报

发表于 2011-11-6 00:13:43 | 显示全部楼层
routeros
回复

使用道具 举报

发表于 2011-11-6 10:44:50 | 显示全部楼层
只有第一条规则从伪装修改到源映射,下面的端口映射未修改过

  1. [admin@MikroTik] > ip firewall nat print
  2. Flags: X - disabled, I - invalid, D - dynamic
  3. 0   chain=srcnat action=src-nat to-addresses=124.172.173.14
  4.      src-address=192.168.0.0/23

  5. 1   chain=dstnat action=dst-nat to-addresses=192.168.0.126 to-ports=55000
  6.      protocol=tcp dst-address=124.172.173.14 dst-port=55000

  7. 2   chain=dstnat action=dst-nat to-addresses=192.168.0.126 to-ports=55000
  8.      protocol=udp dst-address=124.172.173.14 dst-port=55000
复制代码
routeros
回复

使用道具 举报

 楼主| 发表于 2011-11-6 16:48:48 | 显示全部楼层
本帖最后由 ewangsoft 于 2011-11-6 16:53 编辑
bobwalker 发表于 2011-11-5 23:12
只看楼主的图,不要看楼主的图上的文字。图是没有错的,文字解释也不能算错只是不恰当,看了反而会晕。 ...


我又看了下我配图的说明,仍认为没有问题。
或许是我功力不够,既然网友看出了问题,那就指出来吧,我虚心请教。

下面的文字说明我也看过了,也没发现问题,请发现问题的朋友说出问题所在吧。我真心接受改正。

另外,给我评分的朋友,大可不必,铜板这东西我不感冒。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-11-6 16:51:53 | 显示全部楼层
host2318 发表于 2011-11-6 10:44
只有第一条规则从伪装修改到源映射,下面的端口映射未修改过

很显然你的映射规则不过具体,导致些没意义的映射发生,而这些映射并不影响你看到的结果。
routeros
回复

使用道具 举报

发表于 2011-11-6 18:37:46 | 显示全部楼层
看了犯晕。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-11-7 09:37:14 | 显示全部楼层
bobwalker 发表于 2011-11-6 22:04
你说“备注:上图第③⑤步,包进出LAN都不会再做NAT,因为已经存在NAT映射条目。”容易让人产生误解 ...

注意,我那个地方的备注,说的是:不会“再”做,而不是说:不会做。加上上下文提示,没有歧义。
routeros
回复

使用道具 举报

发表于 2011-11-7 13:17:44 | 显示全部楼层
如此深奥的东东
routeros
回复

使用道具 举报

发表于 2011-11-7 14:45:37 | 显示全部楼层
呀,这不是大河博客里的吗,偶全套教程中也讲了这个,莫非 楼主。。。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-11-7 17:51:36 | 显示全部楼层
jiangyufu 发表于 2011-11-7 14:45
呀,这不是大河博客里的吗,偶全套教程中也讲了这个,莫非 楼主。。。

哥哥,我就是大河博主

你丫教程中讲了这个?拿出来,看是不是和我的图和分析一样,要是的话,丫的。。。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-11-7 17:53:50 | 显示全部楼层
bobwalker 发表于 2011-11-7 11:51
我理解你的意思,你想说第三五步ROS管理员不用再做NAT规则,但你说"包进出LAN都不会再做NAT"毫无疑问是错 ...

哥哥,我认错好了。。。
我说“不再”的意思是,不会再生成NAT映射条目。。。。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-6-5 02:07 , Processed in 0.080417 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表