所谓断流: 在这里我定义断流为打网络游戏不断,但是看网页断断续续,甚至根本打不开的现象。
问题分析:nat的原理即为将源地址转换为公网IP地址出去,对于TCP应用来说,在转换源IP地址的同时还将转换PORT.即一条TCP连接的地址转换关系为ip+port.router一般会建立一张NAT连接对应关系表.以便于数据报文回来的时候及时的将这条报文转换给当初发出TCP请求的机器..但是一般router在实现nat的时候会隐含两个条件,1)NAT很消耗资源,所以一般会对nat连接数进行限制.否则碰到有用户带病毒的胡乱建连接两下路由器就瘫痪了.2) nat对tcp udp icmp这类协议的nat转换对应关系表有一定的老化时间,时间一到对方没有数据回来该条连接就从对应关系表中删除.
接着对问题进行分析,网络游戏不断说明接口没问题.而网页断断续续则是因为没有多余的连接条数了.为什么网络游戏能不断呢?因为网络游戏就那几条TCP连接.数据报文一直在发送,能保持NAT转换表项一直被刷新,把有限的连接条数占的很稳,当然不会断了。同理如果用FTP下载应该也是不会断的。
问题解决:在做nat配置的时候,多做一条对于tcp协议的规则,在Extra中定义connection- limit的连接数更大一些.默认应该只是100条而已. 在这里我不确定connection-limit是针对一个IP地址100条NAT连接还是所有的IP地址最多只能建立100条NAT连接.这个需要机器多的朋友做下实验.但是我认为更改这个值,断流问题会得到解决。
ps:connection-limit不建议配置过大,因为如果有病毒攻击可能会搞瘫痪router.建议针对每个client的ip地址配置nat的connection-limit数量为100.这样的解决方案比较完美一些.