我们知道IPSEC在工作的时候,如果遇到了NAT,就会带来麻烦,什么麻烦呢?(IPSEC的基础需要清晰)
主要有2种麻烦
1 如果IPSEC和NAT在同一台设备上的时候,是先进行路由查找,然后进行进行IPSEC的,最后是NAT,这个时候如果IPSEC对原本的内网数据实施保护,则NAT转换,无法解析需要转换的私有IP头无法实施转换,此时解决的办法很简单,就是将IPSEC所保护的内网数据从NAT的访问控制列表内剔除掉,使得内网数据能够进行正常的IPSEC加密服务。(NAT与IPSEC先天就矛盾都是连通内网用的,但是IPSEC总是优先级别搞些)
2 如果IPSEC和NAT不在同一台设备上,即内网存在一台IPSEC的PEER,而此时必须经过NAT才能与公网联系,这个时候麻烦就大了。因为先是路由查找,然后在内网的IPSEC的PEER上进行了安全封装服务。此时再提交给NAT网关,而NAT网关对于TUNNEL模式的IPSEC头不认可,或者认可,即进行NAT转换服务,此时到了对方的IPSECPEER处,会验证失败,因为IPSEC的外部头被NAT转换了。而IPSEC自身是无法穿越NAT的因为它没有端口号,无法标示会话。此时需要做特殊处理,利用IPSEC的NAT穿越技术,让IPSEC封装在IKE内使用UDP的500端口号,(使用UDP是因为效率高,其实TCP也可以)然后穿越NAT,此时需要改变2端的封装方式因此,2边都必须配置NAT穿越。此时会有3层封装。内网数据UDP封装-----IKE的IPtunnel。因为配置时有较多地方需要注意。
 
1    在peer的2端必须开启nat穿越功能以及野蛮模式,注意必须是双方开启,否则即使是所有的SA都建立起来了,但数据不会通,因为NAT的穿越是一种特殊的IPSEC报文结构,需要将IPSEC封装在IKE内发送出去,在此之前还需要发送一系列的探寻报文看是否双方都支持NAT穿越,以及是否有NAT设备存在。一但确定即可改变封装格式。
2.H3C的野蛮模式配合基于ID的源端身份认证机制,可以很好的解决NAT穿越所带来的问题,有2个优势,1客户这边可以非固定IP,很多ADSL拨入的就是这样。 2 可以忽略源端的IP认证跨越NAT改为利用名称方式,配置要点切记必须2端都互相配置ID-TYPE NAME,否则IKE的SA建立不成功,因为有一端无法使用名字的ID。切记必须由客户端发起请求,且客户必须指向对方公网IP,以及对方的IDNAME。、
3 如果是使用IP作为ID-type,则需要配置NAT SERVER映射IPSEC的服务。这样IKE的SA可以建立,同时2方都可以发起IPSEC,但是如果不配置NAT SERVER,则在公网设备上需要配置一条到达对方的IPSEC PEER私有IP的路由,主要是因为IKE交互的时候携带有IP信息是它自己始发的时候的IP,但后来经过NAT网关被改变了,很遗憾,对方虽然认识IKE的隧道起止,但是依然无法倒达内网理由是没有路由,因此只要加上该路由便通了。当然如果使用名字的方法则无这么麻烦,因为源是一个名字,公网的PEER,只需要认识对方的名字即可。