目录
1. IPsec与NAT矛盾
在文章《IPsec》及《NAT》中介绍了IPsec及NAT的基本知识。我们知道IPsec的协议分为AH及ESP,封装模式分为传输模式及隧道模式,也知道由于NAT会对IP头进行修改导致AH协议下的IPsec不能穿越NAT。
那么ESP协议能不能穿越NAT?ESP协议对数据进行完整性检查,不包括外部的IP头,IP地址转换不会破坏ESP的Hash值。但ESP报文中TCP/UDP的端口已经加密无法修改,所以对于同时转换端口及IP地址的NAT来说,ESP无法穿越NAT。如果NAT只转换IP地址,那么不管是传输模式还是隧道模式,均能穿越NAT。
对于同时转换IP地址及端口的NAT而言,IPsec如何穿越?那就是NAT-T(NAT Traversal)。虽然NAT-T能解决IPsec穿越NAT的问题,但是穿越以后会有如下问题:
1. 穿越NAT后的身份确认:穿越NAT后的身份确认:在IP网络中IP地址是最好的身份标识,IPsec VPN中标准身份标识也是IP地址。NAT处理过程中会改变IP地址,因此IPsec的身份确认机制必须能够适应IP地址变化。目前解决此问题的方法主要有两种,第一种是使用数字证书替代IP地址作为身份标识,第二种是使用字符串取代IP地址作为身份标识;我国内市场范围内,第二种方法更为常见,部署也更为简单,所以本文主要对第二种方法着重进行介绍。
2. IP地址复用:ESP的IP协议号是50,并不是基于UDP和TCP的协议(虽然其封装的是整个IP层数据,包含TCP/UDP等传输层协议),因此当NAT网关背后存在多个ESP应用端时,无法只根据协议号进行反向映射,为了使ESP能够在NAT环境中进行地址复用,ESP必须做出改变。
下文将对上述问题及NAT-T进行介绍。
2. 身份确认
图 1 展示了IPsec穿越NAT时的身份认证过程:
![](https://i-blog.csdnimg.cn/blog_migrate/1e3f26024a74a861c3b1c30d1806891f.jpeg)
IPsec的身份确认最常见是通过IKE,IKE支持的身份认证机制有两种:
1. 数字证书方式,通过CA数字证书体系确认身份,是最为安全、可靠的方式
2. 身份标识+预共享密钥方式,通过发起方和响应方预先配置相同的密钥,如bigtree,完成双方对彼此身份的认证,这是最为常见的方式
在预共享秘密钥认证机制中,身份标识则可以分为几类:
1. 指定IP地址,使用IP地址作为身份标识,是IKE的默认方式,响应方只允许指定IP地址发起协商,安全性比较高
2. 指定IP地址范围,这种方式依然使用IP地址作为身份标识,由于发起方必须要指定IP地址,否则无法发起协商,指定IP地址范围是响应方特性,如响应方可以指定2.0.0.0/8范围内的地址都可以发起协商,而不是只允许2.1.1.2发起协商,能够减少配置,但安全性略有下降
3. 什么都不指定,也是使用IP地址作为身份标识,但允许任意IP地址发起协商,只要预共享密钥一致,双方就能够通过身份确认,通常适用于发起方动态获取公网地址,如PPPoE接入互联网方式,还适用于发起方众多,而响应方不想单独为每个发起方单独指定预共享密钥,这种方式虽然不是非常安全,但是可以简化配置,安全性再次下降<