NAT穿越场景
在ipsec pn部署中,如果发起者比如fwc位于私网内部,而它希望与fwa之间直接建立一条ipsec隧道,这种情况下nat会对部署ipsec pn网络造成障碍。
在多站点企业中,有的站点连动态的公网IP地址都没有,只能先由网络中的nat设备进行地址转换,然后才能访问internet,此时如果同时需要和另一个站点建立ipsec通道的话,就存在问题。
IPSec是用来保护报文不被修改的,而NAT却专门修改报文的IP地址,所以肯定存在问题。
协商IPSec的过程是由isakmp报文完成的,isakmp报文封装在udp中,源目端口都是500,nat设备可以转换该消息的ip地址和端口,因此isakmp消息可以完成nat转换,协商得到IPSec sa,但是数据流量是通过ah或者 esp进行封装的,在nat转换过程中存在问题。
NAT对IPSec的影响
IKE协商问题
NAT转换会改变对等体的ip地址,在IKEV1主模式+预共享密钥验证下,由于依赖IP地址标识身份,所以存在问题。
由于野蛮模式不依赖ip地址标识身份,使得野蛮模式+预共享密钥验证不影响。
解决方式
开启NAT-T。
AH+NAT问题
NAT的存在对其是致命的。因为AH对包括最外层IP头部的整个包进行认证。但是地址转换会改变IP地址,从而破坏ah的hash值,因此使用ah的ipsec隧道无法穿越nat设备。
传输模式
隧道模式
no-pat+ESP传输模式问题
隧道模式默认支持no-pat下形式的nat穿越
no-pat+ESP隧道模式下,ESP对数据包的hash不包括外层ip报头字段,这解决了认证范围包括最外层IP头部情况下的NAT问题,足以满足隧道模式下ESP报文的认证和加密。
传输模式默认不支持no-pat下形式的nat穿越
由于TCP校验问题,在不进行加密的情况下,因为NAT修改了IP地址,所以导致TCP报文中校验和字段变更。这个字段的变更导致了ESP认证范围内数据的变更,使得其无法通过接收方的验证。
在进行加密的情况下,由于TCP首部作为载荷被加密,NAT后虽然IP地址发送了变更,但是由于TCP头部被加密,NAT设备无法更新TCP校验和,接收方收到后进行TCP报文校验时会失败。
TCP报文
TCP的校验和计算和IP头部的校验和计算方法是一致的,但是覆盖的数据范围不一样。TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的头部。TCP的校验和是必需的,而UDP的校验和是可选的。TCP和UDP计算校验和时,都要加上一个12字节的伪首部。
伪首部包含:源IP地址、目的IP地址