室外在使用×××设备时,因×××设备都是接入到internet网进行传输,同时又需要局域网的PC机上公网,要使用NAT转换。这就使得在同一台设备上面既要做IPSEC处理,又要做NAT转换,因两者在路由器上面处理顺序的不同会造成一些问题。以下对IPSEC和NAT结合使用的注意事项进行说明。
一、 本地NAT:
本地路由器的对数据包的处理流程是先处理NAT,然后才是IPSEC,所以对要进行IPSEC封装的数据,就必须要避开之前的NAT处理,
1. 对于动态NAT,数据包的匹配是通过ACL来实现,所以把需要IPSEC的数据在ACL里面deny就行了,这也是最常见的应用。
配置举例:(做NAT的ACL)
ip access-list extended 1001
 deny ip 10.0.2.0 0.0.0.255 10.0.1.0 0.0.0.255        拒绝IPSEC的数据流
 permit ip 10.0.2.0 0.0.0.255 any
 exit
2.对于静态NAT,数据包就不是通过ACL来匹配,而是通过NAT里面的配置的地址来匹配。所以就需要通过其它模块来避免NAT处理。众所周知,NAT要生效,除了数据要匹配外,还需在在接口上定义输入输出接口,两个条件只要有一个不符合,那么NAT就不会处理。解决办法可以使用策略路由把数据送到路由器环回口来避免地址转换。
  配置举例:(策略路由配置)
interface loopback0
 ip address 2.2.2.2 255.255.255.0
exit
ip access-list extended 1001
 permit ip 10.0.2.0 0.0.0.255 10.0.1.0 0.0.0.255        匹配IPSEC的数据流
exit
route-map dial permit 10
 match ip address 1001
 set interface loopback 0
 exit
3.在配置NAT匹配数据流时,访问列表不要配置permit ip any any,以防止通过IPSEC处理完后,又匹配NAT的数据流再作一次NAT转换。
二、 ×××网关间存在NAT时
在两台×××网关之间有NAT存在时,不能使用AH的加密方式,×××网关可以使用ESP加密来实现IPSEC NAT穿越技术解决。一旦发现传输路径上存在NAT, IKE协议的在第二个阶段的时候将IKE 的UDP 500端口浮动至UDP 4500端口。因此存在NAT的环境时,IPSEC通信使用的端口号为:UDP 500、UDP 4500、IP协议号 50,51。整个传输线路上需要打开这三个端口。
三、 IPSEC和NAT结合的一种使用方法:
两端×××通过隧道传输数据,中心接收端把网点上来的数据解封装后,这时的数据就是网点实际的源和目的地址,通过把数据包的源地址再做一次NAT转换,变成和中心内网的地址是相同地址段,这样对于中心服务器来说,就完全是相同网段地址之间的访问,这样就不存在另外加路由的问题。
实际的处理流程为:中心×××收到网点数据包后先透传经过NAT模块,然后经过IPSec模块,IPSec处理完成了以后,又重新放入IP队列,重新路由,再经过NAT模块,NAT模块处理完成后,然后透传经过IPSec(IPSec模块永远只对报文做一次处理),最后发送出去。
配置举例:(NAT配置)
interface fastethernet0
 ip address 10.0.2.1 255.255.255.0
 ip nat inside
 exit

interface fastethernet1
 ip address 221.10.5.112 255.255.255.240
 ip nat outside
 exit

ip nat outside source static 10.0.1.2 10.0.2.10
IPSEC解封装后,网点的源地址为10.0.1.2 转换成10.0.2.10 和中心内网地址相同。