1 IPSec 与 NAT 的不兼容性分析
NAT的核心思想是修改IP头中的IP地址,但IPsec却要保护IP包免受非法的修改, 因此将NAT和IPsec结合使用时便会出现一些问题。 两者的不兼容性主要体现在以 下三个方面: NAT对认证报头的影响 1.1 NAT对认证报头的影响 认证头(Authentication Header,AH)使用消息摘要算法生成一个散列值, 以保护整个IP分组,包括不变的报头字段(如源IP地址和目标IP地址)。接收方使 用该散列值来验证分组。如果原始IP分组中的任何字段被修改,验证将失败,接 收方将丢弃该分组。AH用于防止未经授权的修改、信源欺骗和中间人攻击。但根 据NAT的
工作原理,NAT设备将修改外层IP包头的源地址及其校验和,这样就会使 IPsec 接 收 方 无 法 认 证 AH 分 组 的 真 实 性 和 完 整 性 。 对 于 网 络 地 址 端 口 转 换 (Network Address Port Translation,NAPT)来说,由于NAPT需要TCP/UDP端口 来对进出的信包或者连接进行匹配,所以AH分组无法跨越NAPT。由此可见,NAT /NAPT与AH无法兼容。 NAT对封装安全负载的影响 1.2 NAT对封装安全负载的影响 封装安全负载(Encapsulating Security Payload,ESP)并不对IP地址进行 加密,但是NAT的引入所造成的
问题依然存在。由于TCP/UDP校验和涉及虚构的 IP包头,该虚构包头里含有IP源和目的地址,因此,当NAT设备改变IP地址时, 也需要更新IP头和TCP/UDP头的校验和。 然而应用了ESP传输模式的IP包经过NAT 设备时,由于TCP/UDP校验和处于加密负载中,该值在修改了外层IP包头后无法 被NAT设备更新。这样,当该信包在经过IPsec层后被送往上层进行协议处理时, 将会因为TCP协议层的校验和错误而被丢弃。 ESP隧道模式可以和静态或者动态NAT相兼容, 因为TCP/UDP检验和只与内层 “原始” IP包头有关, 对于外层IP包头的修改并不对其造成影响, 然而与AH一样, 在NAPT存在的情况下,ESP也无法通过NAPT,NAPT需要TCP/UDP端口来匹配出入 的信包, 上层端口信息对于NAT网关是不可知的, 所以ESP分组
通信将被完全阻隔。 NAT对IKE 1.3 NAT对IKE的影响 IKE协商是由来自UDP端口500的分组建立的, 绝大多数IPSec实现也都把该端 口作为进行IKE协商的唯一合法端口。如果该分组经过NAPT设备后,那么最终的 分组端口号将不是期望的端口号,从而使IKE协商将不能启动。