一.源NAT
主要从会话表和server-map表角度考虑以下三者的区别:
1.会话表主要是记录同一股流量(五元组相同,包括返回的流量)
2.server-map表主要是根据已有的流量提前预判即将到来的另外一股流量,已有流量的返回流量会匹配会话表,不经过server-map表处理
3.NAPT(网络地址端口转换)为什么不生成server-map表?
理论上讲,流量经过NAPT后,五元组已经改变,需要生成server-map表提前预判新的流量,实际上却没有必要,因为五元组虽然改变了,但仍然属于同一股流量,并没有其他的流量产生,新老流量都是同一个会话,用会话表记录新老流量之间的变化即可,这和FTP的控制会话产生额外的数据会话不同。如下图:
4.NAT NO-PAT为什么会生成正反两个server-map表项?
和NAPT不同,NO-PAT只进行源IP地址转换,不转换源端口(一对一地址转换),这样NO-PAT就有两个功能,一是内网访问外网时做源IP转换,二是外网用户可以通过转换后的地址主动发起新的连接访问内网(虽然是动态不是静态转换,但外网仍然可以主动发起)相当于目的地址转换。server-map表主要是用来预判即将到来的流量,正向表项是对同一个源IP地址的不同流量(五元组不同,也就是不同的会话)的预判,用来加快源地址的转换的处理速度,即多股流量复用同一个表项。反向表项是对外网主动访问内网的流量(注意,不是内网访问外网的返回流量)预判,同理访问内网同一目的IP地址的多股流量复用同一个表项,用于加快地址转换速度。
5. NO-PAT的流量匹配了server-map表,为什么不能跳过策略检查?
由以上第四条可知,NAT NO-PAT的server-map表项,预判了多股流量,被多股流量复用,但是这些流量之间并没有逻辑上的关联,是互相独立的,这一点和FTP不同,FTP的控制流量产生了数据流量,控制流量和数据流量是有内在的逻辑关联的,而且数据流量自己的server-map表项,并不会被其他流量复用的,所以FTP的数据流量可以跳过安全策略检查,而NO-PAT的提前预判的流量不能跳过安全策略检查。如下图,FTP的server-map表
6.三元组NAT的流量为什么可以跳过安全策略检查?
三元组NAT的server-map工作原理类似于NO-NAPT,会产生两条server-map表项,即源表项和目的表项,两个表项都可被多股流量复用,源表项用于将同一源IP和源端口的流量转换为相同的IP和端口,保证了内部PC对外呈现的端口的一致性。目的表项是对外网主动访问内网多股流量的预判,和NO-PAT不同,这些流量是有逻辑关系的(是否有逻辑关系,是由应用的工作原理决定的),所以匹配目的表项的流量是可以跳过安全策略检查的。源表项的目的并不是对其他流量的预判,所以匹配源表项流量(源IP,源端口,协议相同,其余不同)原则上不能跳过安全策略检查,各种资料中并没有提及这一点,需要实验验证。实际中,应用在主动发起连接时,无论是TCP还是UDP,目的地址或目的端口不同时,会使用不同的源端口,所以源IP,源端口,协议相同,目的IP和目的端口不同的流量很少见到。常见的就是QQ/MSN等STUN协议和P2P协议。
二.NAT server
NAT server配置完成后,会产生静态的server-map表项,不需要流量触发,和三元组NAT类似,也会生成正反两个表项,两个表项都不允许跳过安全策略检查。反向表项没有限制端口,即策略允许下私网服务器可以作为客户端主动访问公网任何服务器,存在安全隐患,可用no-reverse禁止生成反向表项。两个表项都是可以被复用的,可参考源NAT表项来理解
三. 参考文献
华为防火墙技术漫谈
强叔侃墙