
常见NAT转换的缺点
?
普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换。
解决常见NAT转换缺陷方式
:
NAT ALG
(Application Level Gateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。
例如,FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。
为了实现应用层协议的转发策略而提出了ASPF功能。
ASPF
:开放相应的包过滤规则。
NAT
:进行地址转换。
由于两者通常都是结合使用的,所以使用同一条命令就可以将两者同时开启。

图中私网侧的主机要访问公网的FTP服务器。NAT设备上配置了私网地址192.168.1.2到公网地址8.8.8.11的映射,实现地址的NAT转换,以支持私网主机对公网的访问。组网中,若没有ALG对报文载荷的处理,私网主机发送的PORT报文到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。整个通信过程包括如下四个阶段:
1、
私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接。
2、
控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接。
3、
PORT报文在经过支持ALG特性的NAT设备时,报文载荷中的私网地址和端口会被转换成对应的公网地址和端口。即设备将收到的PORT报文载荷中的私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487。
4、
公网的FTP服务器收到PORT报文后,解析其内容,并向私网主机发起数据连接,该数据连接的目的地址为8.8.8.11,目的端口为12487(注意:一般情况下,该报文源端口为20,但由于FTP协议没有严格规定,有的服务器发出的数据连接源端口为大于1024的随机端口,如本例采用的是wftpd服务器,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。

通常情况下,如果在设备上配置严格包过滤,那么设备将只允许内网用户单方向主动访问外网。但在实际应用中,例如使用FTP协议的port方式传输文件时,既需要客户端主动向服务器端发起控制连接,又需要服务器端主动向客户端发起服务器数据连接,如果设备上配置的包过滤为允许单方向上报文主动通过,则FTP文件传输不能成功。
为了解决这一类问题,USG设备引入了Server-map表,Server-map基于三元组,用于存放一种映射关系,这种映射关系可以是控制数据协商出来的数据连接关系,也可以是配置NAT中的地址映射关系,使得外部网络能透过设备主动访问内部网络。
1、
生成Server-map表之后,如果一个数据连接匹配了Server-map表项,那么就能够被设备正常转发,而不需要去查会话表,这样就保证了某些特殊应用的正常转发。
2、
配置NAT Server成功后,设备会自动生成Server-map表项,用于存放Global地址与Inside地址的映射关系。
3、
当不配置"no-reverse"参数时,每个生效的NAT Server都会生成正反方向两个静态的Server-map;当配置了"no-reverse"参数时,生效的NAT Server只会生成正方向静态的Server-map。用户删除NAT Server时,Server-map也同步被删除。
4、
PAT是接口地址转换。NO-PAT 是不做端口转换,只作IP地址转换,也就是BASIC NAT 。而如果是NAPT的话,NO-PAT是不配置的。建议不要配置NO-PAT,不然同一个进程只能使用一个IP地址