IT咨询 >

回流的产生

[2013/10/31]

回流的产生

正常NAT情况

是数据包出wan口时做源地址伪装 数据包回来的时候去掉伪装

比方我的公网地址是1.1.1.1  内网地址192.168.1.2  通过路由器上网 访问百度

假设百度服务器地址是2.2.2.2 80提供web服务

Pc访问百度是会产生一个syn请求

源地址      源端口    目的地址    目的端口

192.168.1.2   4567     2.2.2.2.2      80    syn请求)(第一次握手)

当数据包通过wan口后数据包就变成(源地址伪装)

1.1.1.1       4567     2.2.2.2.2      80

当百度收到这个syn请求时 会给个回应

2.2.2.2      80        1.1.1.1       4567

当路由器收到这个回应的时候包进入wan口去掉伪装

2.2.2.2      80        192.168.1.2   4567           (第二次握手)

Pc用户收到这个回应之后发送一个确实数据包完成tcp三次握手然后开始传数据

192.168.1.2  4567    2.2.2.2         80    (此包出wan口和以前一样)(第三次握手)

那么回流是如何产生的呢假设内网中有台服务器192.168.1.100

公网地址是1.1.1.1 192.168.1.100上开了远程桌面服务端口3389

路由上做了端口映射3389192.168.1.100

外网用户通过1.1.1.1能访问到192.168.1.1003389

但是内网用户通过公网地址1.1.1.1就无法访问 此现象就叫回流

如下图

还是看数据包

源地址      源端口    目的地址    目的端口

Pc用户通过1.1.1.1访问192.168.1.100会产生如下数据包(源端口随机产生)

192.168.1.2   6789     1.1.1.1       3389

因为1.1.1.1是公网地址所以要出路由(源端口伪装)数据包会变成

1.1.1.1       6789     1.1.1.1       3389

因为是路由器所有允许源地址和目的地址是一样的 这时候因为3389映射到内网所有要进入路由器 进入路由就要去掉源端口伪装 又因为做了端口映射所有要给目的地址伪装成内网地址(192.168.1.100)于是数据包就变成了下面

192.168.1.2   6789     192.168.1.100  3389

问题就在这里了 192.168.1.100收到这个syn请求后发现这个(192.168.1.2)是内网数据包啊 于是就把响应直接给192.168.1.2发过去了,没有走路由器,而192.168.1.2收到192.168.1.100的响应后,说我给1.1.1.1发的请求,你给我响应干嘛 于是把192.168.1.100的响应给丢掉了,三次握手链接失败,造成无法链接。

回流问题解决办法就是在lan口上做源地址伪装伪装 把数据包源地址伪装成lan口地址 还是上面的例子

源地址      源端口    目的地址    目的端口

Pc用户通过1.1.1.1访问192.168.1.100会产生如下数据包(源端口随机产生)

192.168.1.2   6789     1.1.1.1       3389 

因为1.1.1.1是公网地址所以要出路由(源端口伪装)数据包会变成

1.1.1.1       6789     1.1.1.1       3389

192.168.1.2   6789     192.168.1.100  3389 (此时数据包要出lan口,之前没做lan口伪装所以回流了,现在做了lan口伪装数据包会变成如下)

192.168.1.1  6789      192.168.1.100  3389  

192.168.1.100 收到这个请求后发现是路由器发过来的数据包(因为源地址是路由器网关),于是把数据包发给路由器

192.168.1.100  3389    192.168.1.1   6789

路由器lan收到上面的数据包后要去掉伪装 变成

192.168.1.100  3389    192.168.1.2   6789

此时数据包又要出lan 所以又要做源地址伪装

192.168.1.1   3389    192.168.1.2    6789

Pc用户收到下面的数据包又转发给路由

192.168.1.2  6789    192.168.1.1   3389

路由收到上面的包后通过路由lan又要去掉伪装

192.168.1.2   6789   192.168.1.100  3389

就这样192.168.1.2192.168.1.100之间的通讯就通过路由器的lan口来转发避免了回流

烟台海风网络科技有限公司主要经营:CRM客户关系管理系统,工程项目管理系统,人力资源派遣系统,微信商城三级分销系统
联系电话:0535-6936388 13361397700 联系人:赵玉新 联系地址: 烟台开发区万寿山路5号内一号3楼 网站地图 快递查询