5.4.7 NAT穿越
NAT的广泛使用对IPSec/IKE的部署造成了很大影响。
首先,NAT设备对来往的IP包修改IP地址,而NAPT会对TCP/UDP端口号做修改。而AH的完整性检查包括了IP地址,因此穿越NAT后会造成完整性检查失败。
另外如前所述,IKE在IP交换过程中,采用IP地址作为标识符,并对IP地址和端口号(UDP500)进行了验证。如果IKE消息穿过NAT设备时包头遭到修改,则验证检查会失败。
如上节所述,在IPSec/IKE组建的VPN隧道中,若存在NAT网关设备,且NAT网关设备对VPN业务数据流进行了NAT转换的话,就必须配置IPSec/IKE的NAT穿越功能。如图5.72所示。
该功能删去了IKE协商过程中对UDP端口号的验证过程,同时实现了对VPN隧道中NAT网关设备的发现功能。(https://www.daowen.com)
如果发现途中存在NAT网关设备,则将在之后的IPSec数据传输中使用UDP封装,即将IPSec报文封装到IKE协商所使用的UDP连接隧道里。如此,NAT网关设备将只能够修改最外层的IP和UDP报文头,对UDP报文封装的IPSec报文将不作修改。

图5.72 使用NAT穿越
这种方法避免了NAT网关对IPSec报文进行篡改,从而保证了IPSec报文的完整性。目前仅在野蛮模式下能实现NAT穿越。