一,产生背景
IPsec是如今十分主流的分支机构互联VPN协议,其本身强大的加密与验证功能保障了在互联网传递时私网数据的安全,但是面对当前多元化的访问需求,Ipsec VPN并不能满足客户对私网网段之间复杂的互访要求;在实际环境中,分隔两地的机构要求通过VPN隧道建立私网之间的路由邻居关系,而Ipsec VPN本身并不具备传递路由的能力,所以GRE over IPSEC技术应运而生。
二,基本原理
我们知道,传统的IPsec VPN针对数据包的安全性要求,通常采用采用两种协议进行数据包封装:AH与ESP。AH主要采用验证机制,结合相应摘要算法计算出验证字段填充到数据包当中,接收方通过比较验证字段中的相关信息来分析报文的合法性与完整性,但是AH本身并不具备安全加密功能,由此便引出了ESP,ESP除了本身具备的验证功能之外,实现上会先将数据包进行加密后再添加ESP头部和尾部,以保护数据的机密性;
除了AH与ESP之外,还有一个重点协议IKE,主要用于密钥交换,常用于VPN中建立SA,且IKE自身基于UDP500端口,本身具备穿越NAT的可能;IKE的交换模式分为:main模式和aagresive模式,两种模式根据网关之间的IP地址情况分别采取不同的措施,main模式主要适用于线路两端IP地址固定的情况,协商的时候采取6个协商报文,在身份验证阶段会在发送前加密对端身份的ID信息,aggressive模式在第1,2个报文发送时的ID信息都是以明文方式发送,所以主模式安全性更好;aggressive模式适用于双方IP地址不固定的情况(如pppoe拨号,DHCP获取,IPCP协商地址等),协商时发送3个消息,建立速度更快,且支持nat穿越功能;
三,拓扑结构
四,拓扑需求:
本实验环境是具备NAT设备的环境,RT3(分支机构)和RT1(总部)通过公网建立GRE OVER IPSEC,SW1模拟公网运营商的设备,对RT2动态分配IP地址;
五,拓扑分析:
1,此环境中分支机构的边界上存在NAT设备,RT3在与RT1建立VPN时必须考虑NAT的问题,所以在建立IKE时必须开启NAT穿越功能;在RT2上不能让VPN感兴趣流量进入RT2的NAT引擎,否则VPN的IKE建立会发生错误;在NAT穿越的VPN环境中,除了上述存在单一NAT网关设备的情况外,还存在如下情况:
此拓扑中RT2既作为VPN网关,也作为NAT网关,在路由器中默认是优先处理NAT,然后才会匹配感兴趣数据流,如果此时是H3C设备时,需要采取隧道分离的措施保证感兴趣流量的正常通过,即在通过acl挑选感兴趣数据流时,需要在访问控制中有将感兴趣数据流量在rule中deny掉,并随后加一条rule来permit需要NAT转发的流量,如此一来既可以保证NAT流量的正常访问公网,也可以使感兴趣流量正常通过;
2,GRE建立隧道时会定义源地址与目的地址,而在GRE OVER IPSEC报文中GRE是封装IPsec的内部的,所以由整个GRE建立的隧道流量都是被IPSEC 加密的,所以在定义感兴趣流量时,需要将tunnel接口的源与目的接口定义为感兴趣流的源与目的;
3,在GRE隧道中运行动态路由协议时,发布的路由为tunnel隧道地址和私网路由地址,在以loopback接口建立VPN时,loopback接口不能发布到此路由协议中,否则tunnel接口会发生up/down的情况,
4,公网设备中不需要拥有去往两地loopback接口的路由,通过GRE OVER IPSEC报文封装即可分析出来;
5,GRE OVER IPSEC与IPSEC OVER GRE的区别:一,首先根据名字就可以判断出一点,前者是GRE封装在IPSEC 报文中,而后者则是IPSEC报文封装在GRE中;其次,后者加密的数据流量是单独定义的个别私网网段,前者加密的流量则是整个GRE隧道,只要通过GRE隧道运行的路由协议发布的私网数据,都会被加密;
第三点,GRE OVER IPSEC因为是IPSEC报文头在外,根据边界网关之间的IP地址情况,可灵活运用IPSEC隧道的两种模式:transport和tunnel模式,且因为transport模式的报文封装更加简单,在流量处理和软件资源消耗方面要小于隧道模式
二,拓扑配置:
RT1:
IPsec配置
Ike local-name center
ike peer zwc
exchange-mode aggressive
pre-shared-key simple 123
id-type name
remote-name banch
nat traversal
ipsec proposal 1
ipsec policy-template zwc 1
ike-peer zwc
proposal 1
ipsec policy zwc1 1 isakmp template zwc
interface GigabitEthernet0/0/0
port link-mode route
ip address 200.1.1.2 255.255.255.0
ipsec policy zwc1
GRE配置:
interface Tunnel0
ip address 10.1.1.1 255.255.255.0
source LoopBack0
destination 3.3.3.3
路由配置:
ospf 100
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 172.16.1.1 0.0.0.0
#
ip route-static 0.0.0.0 0.0.0.0 200.1.1.1
地址配置:
interface LoopBack0
ip address 1.1.1.1 255.255.255.255 //loopback接口地址
#
interface LoopBack1
ip address 172.16.1.1 255.255.255.255 //内部私网地址
RT3配置:
IPsec配置
Ike local-name banch
ike peer zwc
exchange-mode aggressive
pre-shared-key simple 123
id-type name
remote-name center
remote-address 200.1.1.2
nat traversal //若不敲此命令ike协商可以正常建立,但是tunnel口无法up
#
ipsec proposal 1
acl number 3000
rule 0 permit gre source 3.3.3.3 0 destination 1.1.1.1 0 //tunnel两端流量
ipsec policy zwc 1 isakmp
security acl 3000
ike-peer zwc
proposal 1
ipsec policy zwc 1 isakmp
security acl 3000
ike-peer zwc
proposal 1
GRE配置:
interface Tunnel1
ip address 10.1.1.2 255.255.255.0
source LoopBack0
destination 1.1.1.1
路由配置:
ospf 100
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 192.168.3.1 0.0.0.0
#
ip route-static 0.0.0.0 0.0.0.0 23.1.1.2
RT2配置:
acl number 2000
rule 0 permit source 23.1.1.0 0.0.0.255 //定义的流量无需考虑分离隧道
interface GigabitEthernet0/0/0
port link-mode route
nat outbound 2000 //NAT配置
ip address dhcp-alloc
interface GigabitEthernet0/0/1
port link-mode route
ip address 23.1.1.2 255.255.255.0
ip route-static 0.0.0.0 0.0.0.0 100.1.1.1
查看NAT转换记录:
[RT2]display nat session
There are currently 1 NAT session:
Protocol GlobalAddr Port InsideAddr Port DestAddr Port
UDP 100.1.1.2 12291 23.1.1.3 500 200.1.1.2 500
status:11 TTL:00:04:00 Left:00:03:52 VPN:---
在建立SA协商阶段,IKE会利用UDP500端口发起会话,此处可以看到NAT网关将ipsec数据包的源地址及源端口进行了转换,由500->12291,23.1.1.3->100.1.1.2,由于NAT的穿越功能开启,IKE在建立SA时所协商的参数不再是IP地址信息,而是标识符信息,及ike local-name
查看RT1的ike SA状态:
<RT1>disp
<RT1>display ike sa
total phase-1 SAs: 1
connection-id peer flag phase doi
----------------------------------------------------------
38 100.1.1.2 RD 1 IPSEC
39 100.1.1.2 RD 2 IPSEC
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING TO—TIMEOUT
查看RT1的IPSec SA状态:
<RT1>display ipsec sa
===============================
Interface: GigabitEthernet0/0/0
path MTU: 1500
===============================
-----------------------------
IPsec policy name: "zwc1"
sequence number: 1
mode: template
-----------------------------
connection id: 21
encapsulation mode: tunnel
perfect forward secrecy:
tunnel:
local address: 200.1.1.2
remote address: 100.1.1.2
flow:
sour addr: 1.1.1.1/255.255.255.255 port: 0 protocol: GRE
dest addr: 3.3.3.3/255.255.255.255 port: 0 protocol: GRE
[inbound ESP SAs]
spi: 3981374185 (0xed4ef2e9)
proposal: ESP-ENCRYPT-DES ESP-AUTH-MD5
sa duration (kilobytes/sec): 1843200/3600
sa remaining duration (kilobytes/sec): 1843195/2950
max received sequence-number: 52
anti-replay check enable: Y
anti-replay window size: 32
udp encapsulation used for nat traversal: Y
[outbound ESP SAs]
spi: 2812594908 (0xa7a4cadc)
proposal: ESP-ENCRYPT-DES ESP-AUTH-MD5
sa duration (kilobytes/sec): 1843200/3600
sa remaining duration (kilobytes/sec): 1843195/2950
max received sequence-number: 53
udp encapsulation used for nat traversal: Y
查看RT1的ospf状态:
<RT1>display ospf peer
OSPF Process 100 with Router ID 172.16.1.1
Neighbor Brief Information
Area: 0.0.0.0
Router ID Address Pri Dead-Time Interface State
192.168.3.1 10.1.1.2 1 39 Tun0 Full/ -
查看私网路由学习状况:
<RT1>display ip routing-table
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 60 0 200.1.1.1 GE0/0/0
1.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.0/24 Direct 0 0 10.1.1.1 Tun0
10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.16.1.1/32 Direct 0 0 127.0.0.1 InLoop0
192.168.3.1/32 OSPF 10 1562 10.1.1.2 Tun0
200.1.1.0/24 Direct 0 0 200.1.1.2 GE0/0/0
200.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0
可以看到,RT3 的私网路由192.168.3.1/32已经通过ospf学习到了
此处SW1模拟的是公网设备,在SW1上开启DHCP分配地址,配置接口IP即可,无需添加任何路由,RT2上只需一条对外访问公网的默认路由即可,不需要定义任何去往RT3上私网VPN网段的路由
注:拓扑图见附件