一、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表示本端为发起端

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐