GRE OVER IPSEC详解
背景分析
IPsec(IP security)协议族是IETF制定的一系列协议,它为IP数据报提供了高质量的、可互操作的、基于密码学的安全性。特定的通信方之间在IP层通过加密与数据源验证等方式,来保证数据报在网络上传输时的私有性、完整性、真实性。
GRE协议是对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议中传输。GRE是VPN的第三层隧道协议,在协议层之间采用了一种被称之为Tunnel的技术。Tunnel是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封装。
通常情况下,IPsec不能传输路由协议,例如RIP和OSPF;或者非IP数据流,例如IPX(Internetwork Packet Exchange)和AppleTalk。这样,如果要在IPsec构建的VPN网络上传输这些路由协议报文就需要借助于GRE协议,对路由协议报文等进行封装,使其成为IPsec可以处理的IP报文,这样就可以在IPsec VPN网络中实现不同的网络的路由。
gre over ipsec优势
该特性适合较为大型的网络中总部与分支机构之间,保证了所有的数据,包括路由信息在内的所有报文都能够得到保护。
基本配置介绍
IPsec本身只支持静态路由,所以为了体现gre over ipsec的优势,在配置GRE over IPsec ,动态路由进行配置,配置步骤大概如下:
1、配置GRE协议
2、配置IPsec
3、私网配置动态路由协议
IPsec的配置主要包含以下几个步骤:
1、配置访问控制列表
2、定义ipsec安全提议
3、配置IKE keychain和IKE profile
4、创建安全策略
5、在接口上应用安全策略
做自己开心的事
注意事项
当配置GRE over IPsec 时,应该注意以下几点:
1)IPsec保护的数据流应该是GRE的流量,也就是说ACL的源和目的地址应该为Tunnel接口的Source和Destination。
2)配置GRE over IPsec,首先报文要触发GRE封装,就必须配置路由使所有私网数据都由Tunnel接口转发。
3)但是如果此时私网配置了OSPF协议,那么私网路由就需要从tunnel口通过OSPF协议发送给对端tunnel口,此时就需要在私网的OSPF中宣告tunnel口的IP地址。
具体环境及配置参考
GRE over IPsec先进行GRE封装,再进行IPsec封装,封装格式如下图所示:
配置主要命令如下:
R1:
[rt1]dis cu
ospf 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255----除了宣告私网地址之外,也需要宣告tunnel口地址
network 192.168.1.0 0.0.0.255
interface GigabitEthernet0/0
port link-mode route
combo enable copper
ip address 192.168.1.254 255.255.255.0
#
interface GigabitEthernet0/1
port link-mode route
combo enable copper
ip address 100.1.1.1 255.255.255.0
ipsec apply policy 1-----策略在接口下的调用,表示数据流到达接口匹配ipsec policy的策略。
#
interface Tunnel0 mode gre
ip address 10.1.1.1 255.255.255.0
source 100.1.1.1
destination 200.1.1.2
keepalive 10 3
#
ip route-static 0.0.0.0 0 100.1.1.2
#
acl advanced 3000
rule 0 permit ip source 100.1.1.0 0.0.0.255 destination 200.1.1.0 0.0.0.255------安全acl的设置,因为当前为gre over ipsec模式,ipsec在外层保护gre的数据流。
#
ipsec transform-set 1
esp encryption-algorithm 3des-cbc
esp authentication-algorithm sha1
#
ipsec policy 1 10 isakmp
transform-set 1
security acl 3000
remote-address 200.1.1.2
ike-profile 1
#
ike profile 1
keychain 1
local-identity address 100.1.1.1
match remote identity address 200.1.1.2 255.255.255.255
proposal 1
#
ike keychain 1
pre-shared-key address 200.1.1.2 255.255.255.255 key cipher $c$3$lfNVjHoX1RMXd9sUoYI+ecL9HqtxpQ==----配置预共享密钥,两端设备密钥要一致
[rt1]
RT2的配置类似于RT1,此处篇幅有限,省略。
测试及检验
[rt1]dis acl all------观察ACL已经被匹配
Advanced IPv4 ACL 3000, 1 rule,
ACL's step is 5
rule 0 permit ip source 100.1.1.0 0.0.0.255 destination 200.1.1.0 0.0.0.255 (168 times matched)
[rt1]dis ike sa-----有IKE SA的协商
Connection-ID Remote Flag DOI
------------------------------------------------------------------
1 200.1.1.2 RD IPsec
Flags:
RD--READY RL--REPLACED FD-FADING RK-REKEY
[rt1]dis ipsec sa-----已经产生了ipsec sa,对报文进行加密和验证
-------------------------------
Interface: GigabitEthernet0/1
-------------------------------
-----------------------------
IPsec policy: 1
Sequence number: 10
Mode: ISAKMP
-----------------------------
Tunnel id: 0
Encapsulation mode: tunnel
Perfect Forward Secrecy:
Inside VPN:
Extended Sequence Numbers enable: N
Traffic Flow Confidentiality enable: N
Path MTU: 1444
Tunnel:
local address: 100.1.1.1
remote address: 200.1.1.2
Flow:
sour addr: 100.1.1.0/255.255.255.0 port: 0 protocol: ip
dest addr: 200.1.1.0/255.255.255.0 port: 0 protocol: ip
[Inbound ESP SAs]
SPI: 1484248348 (0x5877d51c)
Connection ID: 4294967296
Transform set: ESP-ENCRYPT-3DES-CBC ESP-AUTH-SHA1
SA duration (kilobytes/sec): 1843200/3600
SA remaining duration (kilobytes/sec): 1843189/3084
Max received sequence-number: 166
Anti-replay check enable: Y
Anti-replay window size: 64
UDP encapsulation used for NAT traversal: N
Status: Active
[Outbound ESP SAs]
SPI: 2264112167 (0x86f39c27)
Connection ID: 4294967297
Transform set: ESP-ENCRYPT-3DES-CBC ESP-AUTH-SHA1
SA duration (kilobytes/sec): 1843200/3600
SA remaining duration (kilobytes/sec): 1843189/3084
Max sent sequence-number: 167
UDP encapsulation used for NAT traversal: N
Status: Active
配置成功之后,左右两边的私网就可以实现互通。下一期我们给大家介绍GRE over IPsec的排错。