1. GRE

1.1 GRE概述

GRE(Generic Routing Encapsulation,通用路由封装),是简单的VPN。GRE是第三层隧道协议,采用Tunnel(隧道)技术。

  • 优点:支持IP网络作为承载网络、支持多种协议、支持IP组播,配置简单,容易部署
  • 缺点:缺少保护功能,不能执行如认证、加密以及数据完整性检查这些任务
  • 因为安全上的限制,GRE通常不能用作一个完整的VPN解决方案,然而它可以和其他解决方案结合在一起,例如IPsec,来产生一个极强大的、具有扩展性的VPN实施方案

1.2 GRE工作原理

GRE技术 gre技术优点_数据

隧道起点路由查找-->封装-->承载协议路由转发-->公网转发-->解封装-->隧道终点路由查找

1.3 报文格式

  • GRE在封装数据报文时。会添加GRE头部信息及新的IP头部信息
  • IP用协议号47标识GRE
  • GRE使用以太类型0x0800标识载荷协议为IP

GRE技术 gre技术优点_数据_02

GRE技术 gre技术优点_数据_03

1.4 配置命令

GRE技术 gre技术优点_数据_04

R1

interface Tunnel0/0/0   # 创建Tunnel隧道
 ip address 192.168.3.1 255.255.255.0  # 隧道IP
 tunnel-protocol gre   # 配置隧道协议
 source 100.1.1.1   # 隧道源地址
 destination 100.1.1.2  # 隧道目的地址
ip route-staic 192.168.2.0 24 Tunnel 0/0/0 # 配置静态路由让数据报文从tunnel走

R2

interface Tunnel0/0/0   # 创建Tunnel隧道
 ip address 192.168.3.2 255.255.255.0  # 隧道IP
 tunnel-protocol gre   # 配置隧道协议
 source 100.1.1.2   # 隧道源地址
 destination 100.1.1.1  # 隧道目的地址
ip route-staic 192.168.1.0 24 Tunnel 0/0/0 # 配置静态路由让数据报文从tunnel走

2. IPsec VPN

2.1 IPsec VPN概述

  • VPN(Virtual Private Network),利用公共网络来构建的私人专用网络
  • IPsec(IP security),是一组开放协议的总称。定义了保护数据私密性、保证数据完整性、确保数据合法性的方法,能做到:
  • 数据的合法性:身份认证,确保信息来源的可信
  • 数据的完整性:保证数据不被修改
  • 数据的私密性:进行加密,确保数据的安全性
  • 抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击
  • 通过HASH来确保数据的合法性和完整性MD5、SHA-1
  • 通过数据加密来实现数据传输的安全性:DES、3DES、AES

2.2 工作原理

2.2.1 VPN加密技术

  • 对称密钥算法
  • 加密方与解密方采用相同的密钥
  • 用于加密用户数据
  • DES、3DES、AES
  • 非对称密钥算法
  • 加密方通过对端的公钥加密数据
  • 解密方通过自己的私钥解密数据
  • 用于密钥交换和数字签名
  • RSA、DH
  • 散列函数
  • MD5
  • SHA1
  • 用于验证数据完整性

2.2.2 IPsec协议/组件构成

  • 算法:用于加密/解密或身份验证
  • 安全协议:AH或ESP
  • 密钥管理:ISAKMP

2.2.3 IPsec安全架构组成

  • IKE(Internet Key Exchange,密钥交换协议),他的对象是密钥,用来保证密钥的安全传输、交换以及存储
  • ESP(Encapsulation Security Payload,封装安全负载),对象为用户数据。对用户的数据进行封装,提供对数据进行认证和加密。通常采用3DES来加密,使用IP协议号50
  • AH(Authentication Header),对象为用户数据,对用户数据进行封装,只提供认证,不加密。使用IP协议号51

2.2.4 IPsec VPN模式

  • 传输模式(Transport Mode),封装的时候不会产生新的IP头部
  • 隧道模式(Tunnel Mode),封装的时候产生新的IP头部
    ESP协议

GRE技术 gre技术优点_GRE技术_05

AH协议

GRE技术 gre技术优点_VPN_06

2.2.5 SA安全联盟

  • SA是隧道的一组规则,内容包括采用何种IPsec协议(AH还是ESP)、运行模式(传输模式还是隧道模式)、验证算法、加密算法、密钥生存期、抗重放窗口、计数器等,从而决定保护什么、如何保护以及谁来保护,可以说SA是构成IPsec的基础
  • 安全联盟是单向的,两个对等体之间的双向通信至少需要两个SA
  • ISAKMP SA(也叫IKE SA):定义了如何保护密钥。IKE SA要保护的对象是与密钥有关的,IKE并不直接关心用户数据,并且IKE SA是为安全协商IPsec SA服务的
  • IPsec SA:定义了如何保护数据。IPSec SA直接为用户数据流服务。即IPsec SA中所有安全策略都是为了用户数据流的安全。每个IPsec对等体都有一对IPsec SA,一个去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地SA Database中
  • 建立SA的方式
  • 手工方式:SA所需全部信息都必须手工配置,比较复杂,适合对等体较少或小型静态环境
  • IKE动态协商方式:只需要对等体之间配置好IKE协商参数,由IKE自动协商来创建和维护SA

2.2.6 隧道建立过程

IKEv1支持的身份验证方法
  • 预共享密钥
    这种方法要求对等体双方必须要有相同的预共享密钥(该密钥直接参与SKEYID的生成计算)。对于设备数量较少的VPN网络来说易于配置,在大型VPN网络中,不建议采用预共享密钥来做身份认证
  • RSA签名(数字证书)
    数字证书需要由CA服务器来颁发。这种方法适用于大型动态的VPN网络,证书验证和预共享密钥验证的主要区别在于SKEYID的计算和交换身份信息,其他的交换和计算过程和预共享密钥验证方式相同
IKE协商过程
  • 第一阶段:建立ISAKMP SA(IKE SA)
  • 两种模式:
  • 主模式(main mode):6条ISAKMP消息交互(针对站点到站点)
  • 野蛮模式(aggressive mode):3条ISAKMP消息交互(针对远程访问)
  • ISAKMP SA是为第二阶段的ISAKMP消息提供安全保护,对象为密钥,保证密钥安全
  • 第二阶段:建立IPsec SA
  • 一种模式
  • 快速模式(quick mode):3条ISAKMP消息交互
  • IPsec SA是为IP数据提供安全保护
  • ISAKMP SA可以用来保护多个第二阶段的IPsec SA协商的通信过程
IKE协商第一阶段过程分析(main mode)

GRE技术 gre技术优点_数据_07

  • 第1、2个ISAKMP报文(协商加密算法、认证算法、认证方式和DH等)
  • 用于交换并协商保护ISAKMP消息的安全参数以及对等体验证方式,包含加密算法、验证算法、验证方式、ISAKMP SA生存时间等安全策略信息(即SA载荷)。IPsec实体会选择双方都支持的安全策略信息。
  • 路由器会将本地配置的所有ISAKMP策略放置在SA载荷中,发送给对端
  • 对端路由器收到发来的安全策略后,会返回本地与之匹配的策略。若本地存在多条匹配策略,则选择序号最小的策略
  • 第3、4个ISAKMP报文(算出共同密钥)
  • 用于交互IKE的密钥交换载荷(Key exchange)(预共享密钥)和随机值载荷(nonce),此过程交互信息用于双方使用DH算法计算出共同的密钥材料。SKEYID为基础密钥,通过它推导出SKEYID_a(消息完整性验证密钥)和SKEYID_e(消息加密密钥)以及SKEYID_d,用于衍生出IPsec报文加密验证密钥
  • 第5、6个ISAKMP报文(做身份验证,从此报文开始接下来的报文会被加密)
  • 用于交换身份(Identification)载荷和HASH载荷
  • 在前4条ISAKMP消息中通信双方并没有核实对方的合法性,很有可能与假冒者计算出公共密钥,从而与假冒者进行加密通信。因此要对双方的真实身份进行核实。由于已经计算出SKEYID_a和SKEYID_e,因此第5、6个ISAKMP报文是经过保护的,具体的策略为第1、2个ISAKMP报文协商的加密算法、验证算法以及刚计算出来的SKEYID_a和SKEYID_e
  • 对端路由器收到第5条ISAKMP报文后,首先对消息进行验证再解密,会将收到的身份载荷与本地存储的信息一起进行HMAC计算,得到一个HASH值,再与收到的HASH载荷进行比较,如果不相等,则会中断协商过程,相等则发出第6条ISAKMP消息
  • 对端验证本端合法后(即通过对比计算得到的HASH值与所收到的HASH值相等,及判断掌握了相同密钥),发送本地信息,供本端来验证。本端使用同样的方法判断对端是否掌握相同密钥,若判断为也合法,则第一阶段协商过程结束
IKE协商第二阶段过程分析(quick mode)

真正开始保护数据安全

  • 第1、2、3个ISAKMP报文
  • 第1个ISAKMP报文携带本端所配置的IPsec安全提议,即使用ESP还是AH、采用什么模式、加密IP数据使用什么加密算法、验证IP数据使用什么算法、对什么样的数据流进行保护等。以及身份认证信息,包括第一阶段计算出的密钥和第二阶段产生的密钥材料,可以再次认证对等体
  • 对端收到发出的第二阶段第1个ISAKMP报文后,首先验证报文并解密,查看SA载荷中的策略是否与本地匹配,并在本地使用同样的方法计算HASH值,并与收到的HASH载荷进行比较(身份认证)。若相同,发出第2条ISAKMP消息,包含的载荷与收到的第1个ISAKMP报文一致,并生成IPsec密钥
  • 本端收到发出的第二阶段第2个ISAKMP报文后,首先验证报文并解密,查看SA载荷中的策略是否与本地匹配,并在本地使用同样的方法计算HASH值,并与收到的HASH载荷进行比较。若相同,发出第3条ISAKMP消息,只包含HASH载荷,用以通知对端完成第二阶段IPsec SA协商并可以使用IPsec SA对IP数据进行保护

2.3 配置步骤

  • 配置网络可达
  • 匹配感兴趣ACL
  • 配置第一阶段和第二阶段
  • 创建安全策略
  • 应用安全策略

实验拓扑

GRE技术 gre技术优点_VPN_08

R2配置

  1. 匹配感兴趣流
acl number 3000  
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
  1. 第一阶段第二阶段均有默认的安全策略,故不需要配置也能协商成功
    故本实验第一阶段只配置了对等体,第二阶段只配置了安全策略名称
ike peer huawei v1    # 定义对等体名字,ike版本
 pre-sha  huawei   # 配置预共享密钥
 remote-address 34.1.1.4  # 对端ip
 
ipsec proposal tran1   # 第二阶段

GRE技术 gre技术优点_数据_09

GRE技术 gre技术优点_VPN_10

  1. 配置安全策略及应用安全策略
ipsec policy vpn 1 isakmp
 security acl 3000
 ike-peer huawei
 proposal tran1
 
interface GigabitEthernet0/0/1
 ip address 23.1.1.2 255.255.255.0 
 ipsec policy vpn
  1. 应用安全策略
interface GigabitEthernet0/0/1
 ip address 23.1.1.2 255.255.255.0 
 ipsec policy vpn

R2完整配置

[R2]  dis cu
[V200R003C00]
#
 sysname R2
#
 snmp-agent local-engineid 800007DB03000000000000
 snmp-agent 
#
 clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
 drop illegal-mac alarm
#
 set cpu-usage threshold 80 restore 75
#
acl number 3000  
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
 
#
ipsec proposal tran1     
 esp encryption-algorithm aes-128
#
ike peer huawei v1
 pre-shared-key simple huawei
 remote-address 34.1.1.4
#
ipsec policy vpn 1 isakmp
 security acl 3000
 ike-peer huawei
 proposal tran1
#
aaa 
 authentication-scheme default
 authorization-scheme default
 accounting-scheme default
 domain default 
 domain default_admin 
 local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
 local-user admin service-type http
#
firewall zone Local
 priority 15
#
interface Ethernet0/0/0
#
interface Ethernet0/0/1
#
interface Ethernet0/0/2
#
interface Ethernet0/0/3
#
interface Ethernet0/0/4
#
interface Ethernet0/0/5
#
interface Ethernet0/0/6
#
interface Ethernet0/0/7
#
interface GigabitEthernet0/0/0
 ip address 12.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 23.1.1.2 255.255.255.0 
 ipsec policy vpn
#
interface NULL0
#
ospf 1 
 area 0.0.0.0 
  network 23.1.1.2 0.0.0.0 
#
ip route-static 192.168.1.0 255.255.255.0 12.1.1.1
ip route-static 192.168.2.0 255.255.255.0 23.1.1.3
#
user-interface con 0
 authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return

R4完整配置

<R4>dis cu
[V200R003C00]
#
 sysname R4
#
 snmp-agent local-engineid 800007DB03000000000000
 snmp-agent 
#
 clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
 drop illegal-mac alarm
#
 set cpu-usage threshold 80 restore 75
#
acl number 3000  
 rule 5 permit ip source 192.168.2.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
 
#
ipsec proposal tran1
#
ike peer huawei v1
 pre-shared-key simple huawei
 remote-address 23.1.1.2
#
ipsec policy vpn 1 isakmp
 security acl 3000
 ike-peer huawei
 proposal tran1
#
aaa 
 authentication-scheme default
 authorization-scheme default
 accounting-scheme default
 domain default 
 domain default_admin 
 local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
 local-user admin service-type http
#
firewall zone Local
 priority 15
#
interface Ethernet0/0/0
#
interface Ethernet0/0/1
#
interface Ethernet0/0/2
#
interface Ethernet0/0/3
#
interface Ethernet0/0/4
#
interface Ethernet0/0/5
#
interface Ethernet0/0/6
#
interface Ethernet0/0/7
#
interface GigabitEthernet0/0/0
 ip address 34.1.1.4 255.255.255.0 
 ipsec policy vpn
#
interface GigabitEthernet0/0/1
 ip address 45.1.1.4 255.255.255.0 
#
interface NULL0
#
ospf 1 
 area 0.0.0.0 
  network 34.1.1.4 0.0.0.0 
#
ip route-static 192.168.1.0 255.255.255.0 34.1.1.3
ip route-static 192.168.2.0 255.255.255.0 45.1.1.5
#
user-interface con 0
 authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return

3. GRE over IPsec VPN

GRE实现了隧道的功能,但是GRE不支持认证、不支持加密、无法确保数据的安全性。IPsec能够对数据进行加密传输。所以IPsec VPN既满足了隧道的功能同时也能对隧道中传输的数据进行加密。但是IPsec VPN目前只支持IPv4 Unicast(IPv4 单播),不支持其他任何协议。二者结合,既能支持组播(路由协议等),又能保证数据的安全

GRE将组播报文加上一层新IP头部,封装成单播提供给IPsec封装,就能安全的传递组播报文

配置步骤

GRE技术 gre技术优点_VPN_11

  1. 确保公网、内网通
  2. 配置GRE(隧道口互通通过OSPF实现)
interface Tunnel0/0/0
 ip address 192.168.79.7 255.255.255.0 
 tunnel-protocol gre
 source 78.1.1.7
 destination 89.1.1.9
  1. 配置IPsec
1. 匹配感兴趣流
acl number 3000  
 rule 5 permit ip source 78.1.1.7 0 destination 89.1.1.9 0   # 因为已经被封装上了新的IP头
 
2. 第一阶段IKE SA/第二阶段IPsec SA
ike proposal 10
 encryption-algorithm 3des-cbc
 authentication-algorithm md5
 ike peer R9 v1
 pre-shared-key cipher %$%$}H"z!S,^u*;l(AQmOU4+,.2n%$%$
 remote-address 89.1.1.9
 
 ipsec proposal tran1
 encapsulation-mode transport
 esp encryption-algorithm 3des
 
3. 配置安全策略(关联感兴趣流+第一阶段+第二阶段)
ipsec policy vpn 10 isakmp
 security acl 3000
 ike-peer R9
 proposal tran1
  1. 应用安全策略
interface GigabitEthernet0/0/1
 ip address 78.1.1.7 255.255.255.0 
 ipsec policy vpn

完整配置

R7

<R7>dis cu
[V200R003C00]
#
 sysname R7
#
 snmp-agent local-engineid 800007DB03000000000000
 snmp-agent 
#
 clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
 drop illegal-mac alarm
#
 set cpu-usage threshold 80 restore 75
#
acl number 3000  
 rule 5 permit ip source 78.1.1.7 0 destination 89.1.1.9 0 
#
ipsec proposal tran1
 encapsulation-mode transport
 esp encryption-algorithm 3des
#
ike proposal 10
 encryption-algorithm 3des-cbc
 authentication-algorithm md5
#
ike peer R9 v1
 pre-shared-key cipher %$%$}H"z!S,^u*;l(AQmOU4+,.2n%$%$
 remote-address 89.1.1.9
#
ipsec policy vpn 10 isakmp
 security acl 3000
 ike-peer R9
 proposal tran1
#
aaa 
 authentication-scheme default
 authorization-scheme default
 accounting-scheme default
 domain default 
 domain default_admin 
 local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
 local-user admin service-type http
#
firewall zone Local
 priority 15
#
interface GigabitEthernet0/0/0
 ip address 37.1.1.7 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 78.1.1.7 255.255.255.0 
 ipsec policy vpn
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface Tunnel0/0/0
 ip address 192.168.79.7 255.255.255.0 
 tunnel-protocol gre
 source 78.1.1.7
 destination 89.1.1.9
#
ospf 1 router-id 7.7.7.7 
 default-route-advertise always
 area 0.0.0.0 
  network 37.1.1.7 0.0.0.0 
  network 192.168.79.7 0.0.0.0 
#
ospf 2 
 area 0.0.0.0 
  network 78.1.1.7 0.0.0.0 
#
user-interface con 0
 authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return

R9

<R9>dis cu
[V200R003C00]
#
 sysname R9
#
 snmp-agent local-engineid 800007DB03000000000000
 snmp-agent 
#
 clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
 drop illegal-mac alarm
#
 set cpu-usage threshold 80 restore 75
#
acl number 3000  
 rule 5 permit ip source 89.1.1.9 0 destination 78.1.1.7 0 
#
ipsec proposal tran1
 encapsulation-mode transport
 esp encryption-algorithm 3des
#
ike proposal 10
 encryption-algorithm 3des-cbc
 authentication-algorithm md5
#
ike peer R7 v1
 pre-shared-key cipher %$%$}H"z!S,^u*;l(AQmOU4+,.2n%$%$
 remote-address 78.1.1.7
#
ipsec policy vpn 10 isakmp
 security acl 3000
 ike-peer R7
 proposal tran1
#
aaa 
 authentication-scheme default
 authorization-scheme default
 accounting-scheme default
 domain default 
 domain default_admin 
 local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
 local-user admin service-type http
#
firewall zone Local
 priority 15
#
interface GigabitEthernet0/0/0
 ip address 89.1.1.9 255.255.255.0 
 ipsec policy vpn
#
interface GigabitEthernet0/0/1
 ip address 49.1.1.9 255.255.255.0 
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface Tunnel0/0/0
 ip address 192.168.79.9 255.255.255.0 
 tunnel-protocol gre
 source 89.1.1.9
 destination 78.1.1.7
#
ospf 1 router-id 9.9.9.9 
 default-route-advertise always
 area 0.0.0.0 
  network 49.1.1.9 0.0.0.0 
  network 192.168.79.9 0.0.0.0 
#
ospf 2 
 area 0.0.0.0 
  network 89.1.1.9 0.0.0.0  
#
user-interface con 0
 authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return