IPSec NAT 穿越简介
IPSec NAT穿越的场景:
本质上解决ESP协议无法提供转换端口,插入UDP 4500端口
有以下两种场景,需要进行进行NAT穿越。
- 场景一、FW既做IPSEC网关,又做NAT转换此种场景下,是当运营商给客户的动态分配的私网地址情况下,FW需要穿越运营商的nat。IPSEC网关与NAT在同一台设备 ,如果运营商给分配的是公网地址,需要做NAT旁路(NAT豁免)
- 场景二、FW处于内部只做IPSEC网关,前面有专门的设备做NAT(可以FW也可以ROUTER)
IPSec的封装协议分析:
总结:
- AH的传输模式和隧道模式都不支持NAT穿越
- ESP传输模式也是不支持的
- ESP隧道模式默认只支持一对一NAT转换,不支持PAT
解决方案:
NAT-T技术,即在IP和ESP报文之间插入一个8个字节UDP头部(端口号默认为4500)
关键NAT-T的3个问题:
- IPSEC网关如何知道自己是否支持NAT-T?决定双方是否支持NAT-T和判断peers之间是否有NAT存在的任务在IKEv1的第一阶段完成,NAT-T能力探测使用IKEv1第一阶段1-2个包交换来实现,双方互相交换NAT-T的Vendor ID来表示本段是否支持NAT-T。
- IPSEC网关如何判定经过NAT的设备?为了决定Peers之间是否有NAT存在,Peer会发送一个hash负载(源目IP和端口计算),如果双方计算的hash和接受的hash值匹配,那么Peers之间就没有NAT存在(就采用ESP封装),如果hash值不同,那么Peers就需要使用NAT-T技术封装穿越NAT。hash负载也叫作NAT-D负载,在主模式中的3-4个包发送,在野蛮模式的2-3个包中发送。IKEV1通过3-4个包的NAT-D参数来判定
通过源IP源端口, 目的IP 目的端口算HASH值如果HASH值相同,说明没有经过NAT,如果HASH值不等,说明经过了NAT - 什么时候添加UDP的端口?如果确定了经过nat,就在IKEV1的通过5 6的时候,增加 UDP 4500端口
IKEv1的NAT穿越协商过程:
IKEv1的NAT穿越场景中,需要在IKEv1阶段1协商中对NAT执行两种探测:
- 探测是否支持NAT穿越(NAT-T能力)。IKEv1使用VID载荷来确定是否支持NAT穿越。
- 探测在网络中是否存在NAT网关。IKEv1使用NAT-D载荷探测两个IKE对等体之间是否存在NAT网关以及存在的位置(即谁在NAT网关的后面)。
由于NAT网关会改变IKE UDP的源端口,所以响应方必须能处理源端口不是500的IKE报文。
IKEv1主模式NAT-T协商过程:
若双方发的IKEv1消息中都包含该载荷,说明双方都支持NAT-T,协商继续,否则终止。从而可以协商出是否支持NAT-T功能。
完成NAT-T检测和NAT网关探测后,如果发现NAT网关,则后续UDP报文端口号修改为4500。
当前UDP封装的是ISAKMP消息,此处增加了一个non-ESP marker(为4个值为0的字节),以示跟封装ESP报文有区别。
IKEv1阶段2的SA协商时,需确认是否使用NAT穿越以及NAT穿越的封装模式:UDP-Encapsulated-tunnel和UDP-Encapsulated-transport。确认后,后续传输的ESP报文将都采用UDP封装(AH协议不支持NAT穿越,故只能封装ESP报文)。UDP封装ESP报文时,没有non-ESP marker字段,该位置为SPI,为非0字节。
IKEv2判断是否支持NAT-T协商过程:
KEv2的NAT穿越场景中,IKE协商的发起方和响应方在IKE_SA_INIT交换中增加两个N载荷(在Ni和Nr载荷之后),一个消息类型为NAT_DETECTION_SOURCE_IP,标识发起方的IP地址;另一个消息类型为NAT_DETECTION_DESTINATION_IP,标识响应方的IP地址。
IKEv2的NAT穿越协商过程如下:
IKEv2报文协商NAT-T过程
两端必须都开启NAT穿越功能,才能保证IKE协商成功。
IPSec NAT-T实验配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
阶段一: ike proposal 10 authentication-algorithm sha2-256 integrity-algorithm aes-xcbc-96 hmac-sha2-256 # ike peer 10 pre-shared-key Huawei@123 ike-proposal 10 阶段二: acl number 3000 rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255 ipsec proposal 10 encapsulation-mode auto esp authentication-algorithm sha2-256 ipsec policy-template 10 ipsec_temp security acl 3000 ike-peer 10 proposal 10 ipsec policy ipsec_policy 100 isakmp template ipsec_temp interface GigabitEthernet0/0/2 ipsec policy ipsec_policy 对端配置: 阶段一: ike proposal 10 authentication-algorithm sha2-256 integrity-algorithm aes-xcbc-96 hmac-sha2-256 # ike peer 10 pre-shared-key Huawei@123 ike-proposal 10 remote-address 202.100.1.10 阶段二: acl number 3000 rule 5 permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255 # ipsec proposal 10 encapsulation-mode auto esp authentication-algorithm sha2-256 # ipsec policy ipsec_policy 100 isakmp security acl 3000 ike-peer 10 proposal 10 interface GigabitEthernet0/0/2 ipsec policy ipsec_policy |
注意: IKEV2默认开启NAT-T功能
默认华为防火墙NAT-T 无论在IKEV1还是IKEV2都是默认开启的。开启命令:
nat traversal
关闭命令NAT-T
ike-peer fw2
undo nat traversal
—
1 2 3 4 5 |
//通过查看会话表,从而证明走的是udp4500端口 display firewall session table Current Total Sessions : 2 udp VPN:public --> public 10.1.21.10:4500-->202.100.1.10:4500 //用的是udp的4500端口 |