一、IPsec VPN基本概念
1、隧道建立方式:分为手动建立和IKE自动协商,手动建立需要人为配置指定所有IPsec建立的所有参数信息,不支持为动态地址的发起方,实际网络中很少应用;IKE协议是基于密钥管理协议ISAKMP框架设计而来,建立IKE SA 对等体后,双方通过IKE SA交互数据加密的秘钥信息,并协商建立IPsec SA,数据在IPsec SA上进行加密传输。
2、传输模式和隧道模式:两种方式表现为对报文的封装方式差异。
隧道模式是在原报文的基础上新封装一个IP头部,对原报文所有信息进行认证和加密,主要在跨公网场景中使用该模式,由于需要新增IP头部,使得报文更大,相对而言传输效率较低,但安全性相对较高。
传输模式不改变原报文的IP头部信息,对数据报文中IP头部后的内容进行认证和加密封装,主要在内网传输中使用该模式,由于不改变IP头信息使得报文更小,传输效率更高,但安全性相对较低。
3、IKE建立SA分为两种模式,主模式和野蛮模式,主模式包含三次双向交换,用到了六条信息,野蛮模式只用到三条信息。
与主模式相比,野蛮模式减少了交换信息的数目,提高了协商的速度,但是没有对身份信息进行加密保护。虽然野蛮模式不提供身份保护,但它可以满足某些特定的网络环境需求。
- 如果发起方的IP地址不固定或者无法预知,而双方都希望采用预共享密钥验证方法来创建IKE SA,则推荐采用野蛮模式。
- 如果发起方已知响应方的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快地创建IKE SA。
4、IPsec VPN、NAT、路由条目之间的关系:
当流量到达设备上后,先按照路由条目指导流量下送到相对应的出接口(注意华为设备与其他厂商设备转发逻辑有差异,无需通过路由条目区分流量,例如山石、华三等厂商需要将流量通过路由指定到具体的隧道出口,只有当华为设备通过tunnel接口建立IPsec VPN隧道时,才需要使用路由将流量指向对应的tunnel隧道地址),出接口下既存在NAT策略也存在IPsec策略时,优先进行NAT感兴趣流匹配,NAT匹配不上再进行IPsec感兴趣流匹配。所以当源NAT和IPsec VPN的数据感兴趣流冲突时,数据流量会被优先NAT,此时会导致选定的流量无法进入IPsec VPN隧道进行转发。
5、NAT穿越是指在两台建立IPsec VPN的设备之间存在NAT设备,双方在开始建立隧道前通过ISAKMP探测报文感知到NAT设备,于是在外层新增的IP头后插入UDP4500的报文头,配置方面还需要在NAT设备上配置目的NAT将UDP4500的流量引入到内网建立IPsec VPN的设备上,NAT设备对该报文的外层IP头和增加的UDP报头进行地址和端口号转换(UDP500和UDP4500都需要做映射,未进行NAT穿越的IKE报文为UDP500端口,如果不进行UDP500映射双方第一个IKE报文无法正常交互);转换后的报文到达IPSec隧道对端后,与普通IPSec报文处理方式相同。
6、IPsec VPN的发起端和响应端:在实际组网中,一般总部为响应端,分部为主动发起端,在华为设备中主动端需要配置remove ip 地址,通过ISAKMP创建IKE动态协商方式安全策略;响应端无需配置remove ip地址,通过策略模板创建IKE动态协商方式安全策略。在IPSec隧道的两端,协商发起方采用ISAKMP策略配置安全策略,协商响应方采用策略模板方式配置安全策略。
7、remove id何时应用:在一方为动态地址的场景中可以应用remove id,由于地址会周期变化,于是通过id的方式来确认身份,动态地址方需要配置local id,固定地址方配置remove id,两端的id信息需要相同。在NAT穿越的场景中也使用该方式认证身份,位于NAT设备后的IPsec VPN设备配置local id,对端配置remove id。
8、AH和ESP安全协议,AH仅具有认证功能,ESP具有认证和加密功能,AH认证的范围为整个报文,ESP为IP头后面的内容,如果为隧道模式则为新IP头后面的内容,可以使用AH+ESP安全协议,设备会先对报文进行ESP封装,再进行AH封装;IPSec解封装时,设备先对报文进行AH解封装,再进行ESP解封装。仅ESP支持NAT穿越场景,主要是UDP4500头的插入,AH会导致NAT设备无法识别UDP头。
二、NAT穿越实验拓扑
互联地址配置方面为从左下到右下依次配置,左下设备优先配置地址,如FW3与FW1互联地址配置上,FW3为10.0.0.1/30,FW1为10.0.0.2/30,FW1、R2、FW3配置OSPF跑通底层路由,总部子网的网关配置在FW3的G1/0/2子接口下,分部子网的网关配置在FW2的G1/0/2子接口下,网关地址都为 1.254,所有FW缺省策略为允许。
三、实验配置
FW1上配置:
ip service-set ipsec type object //配置服务组
service 0 protocol udp destination-port 500
service 1 protocol udp destination-port 4500
nat-policy //配置目的NAT策略,将IPsec的UDP端口映射出去
rule name nat2
destination-address 221.0.0.1 mask 255.255.255.255
service ipsec
action destination-nat static address-to-address address 10.0.0.1
rule name nat //配置源NAT,使建立隧道的源地址具有访问对端隧道公网地址能力
source-address 10.0.0.0 mask 255.255.255.252
action source-nat easy-ip
ip route-static 0.0.0.0 0.0.0.0 221.0.0.2 //配置出访路由
ip route-static 192.168.1.0 255.255.255.0 10.0.0.1 //配置内网子网回包路由
FW2上配置:
acl number 3000 //配置IPsec感兴趣流
rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 172.16.1.0 0.0.0.255
ipsec proposal to_FW2 //IPsec提案
esp authentication-algorithm md5
esp encryption-algorithm 3des
#
ike proposal 1 //IKE提案
encryption-algorithm aes-256
dh group14
authentication-algorithm sha2-256
authentication-method pre-share
integrity-algorithm hmac-sha2-256
prf hmac-sha2-256
#
ike peer to_FW2 //配置IKE 对等体
undo version 2
pre-shared-key 555
ike-proposal 1 //绑定ike提案
local-id 10.0.0.1 //配置本端的id
#
ipsec policy-template A 10 //配置为IPsec模板,作为响应端
security acl 3000
ike-peer to_FW2
proposal to_FW2
#
ipsec policy to_FW2 10 isakmp template A //将模板绑定到isakmp下
ip route-static 0.0.0.0 0.0.0.0 10.0.0.2 //配置出访路由
interface GigabitEthernet1/0/2.200 //配置内网网关信息
vlan-type dot1q 200
ip address 192.168.1.254 255.255.255.0
FW3上配置:
acl number 3000
rule 5 permit ip source 172.16.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
ipsec proposal to_FW3
esp authentication-algorithm md5
esp encryption-algorithm 3des
#
ike proposal 1
encryption-algorithm aes-256
dh group14
authentication-algorithm sha2-256
authentication-method pre-share
integrity-algorithm hmac-sha2-256
prf hmac-sha2-256
#
ike peer to_FW3
undo version 2
pre-shared-key 555
ike-proposal 1
remote-id-type ip //指定id认证的对端的Id类型为ip模式
remote-id 10.0.0.1 //配置对端id与FW3的local id一致
remote-address 221.0.0.1 //配置对端IP地址,本端作为发起端
#
ipsec policy to_FW3 10 isakmp //配置isakmp模式,作为IPsec建立发起端
security acl 3000
ike-peer to_FW3
proposal to_FW3
#
ip route-static 0.0.0.0 0.0.0.0 221.0.0.5 //出访路由
interface GigabitEthernet1/0/2.100 //配置内网子网网关信息
vlan-type dot1q 100
ip address 172.16.1.254 255.255.255.0
四、抓包验证:
1、NAT穿越协商报文
在FW2的G1/0/3口抓包:
1、开始进行NAT-T探测报文交互,注意此时UDP端口为500
2、互相收到探测报文后,进行哈希算法(对建立IPsec VPN的本端地址+端口号进行哈希得出一个值,对端地址+端口号进行哈希得出一个值),确定那台设备在NAT设备后:
通过哈希字段发现两端对221.0.0.6的FW2进行哈希后的值两端一致(FW2哈希的为221.0.0.1+UDP4500、221.0.0.6+UDP4500;FW3哈希的为221.0.0.6+UDP4500、10.0.0.1+UDP4500),导致两端对FW3的哈希值不同,由此判断出FW3在NAT设备之后。
3、查看第五个报文已更换为UDP4500端口进行IKE交互
4、ike主模式下通过6个报文建立了IKE SA,接下来通过IKE SA建立IPsec SA,使用快速模式,IPsec SA的建立仅只有快速模式一种。
5、此时ike sa和IPsec sa都建立完毕,处于NAT设备后的设备开始周期发送NAT-T的保活报文,避免NAT设备端丢失NAT表项,通过NAT-T保活报文周期进行NAT表项刷新。
2、IKE SA和IPsec SA查看
在FW2上查看信息,SA都是单向建立的,需要两条SA才能一去一回。IKE中Flag上的ST表示本端为发起端