随着互联网的不断发展,采用IPSec技术实现利用互联网建立VPN网络,越来越被众多大型企业所采用,但是在很多情况下,这些IPSec的设备都面临如何穿越NAT环境这个问题。
为什么IPSec和NAT有矛盾
NAT和AH IPSec无法一起运行,因为根据定义,NAT会改变IP分组的IP地址,而IP分组的任何改变都会被AH标识所破坏,从而造成对这个分组的AH校验失败。
建议的解决方案
实现NAT和IPSEC和平共处,业界比较流行的叫法是IPSec之NAT穿越。IPSec之NAT穿越是IETF的IPSec工作组至今仍争执未休的技术问题,目前尚没有定案的解决办法,只有一些草案给出了解决的办法,但不一定会被采纳到RFC中。
下面是一种比较流行的做法,关于这个做法的详细文档可以参考IETF的以下草案:draft-ietf-ipsec-udp-encaps-06.txt, draft-ietf-ipsec-nat-t-ike-05.txt, draft-ietf-ipsec-nat-reqts-04.txt。该解决方案分为两个部分,一个是解决IPSEC封装处理的,一个是解决IKE协商的。
● 针对IPSEC封装:
将IPSec封装通过UDP承载,解决NAT穿越问题。UDP端口使用协商IPSec-SA使用的IKE会话过程采用的端口。
● 针对IKE协商:
要让IKE协议支持NAT穿越,只需要修改IKE协议的主模式阶段,修改后的协议如下:
目前有部分安全厂商开发的VPN产品已经可以支持穿越NAT。例如亿阳信通股份有限公司开发的亿阳网警VPN系统采用标准的IPSEC协议,同时具有IPSEC穿越NAT功能,可以自动判断网络中是否存在NAT环境,在穿越NAT的同时也支持与那些不支持NAT穿越的IPSEC设备之间的互联互通,可以适应各种较复杂的网络环境。