简介

      General Routing Encapsulation,简称GRE,是一种三层VPN封装技术。GRE可以对某些网络层协议(如IPX、Apple Talk、IP等)的报文进行封装,使封装后的报文能够在另一种网络中(如IPv4)传输,从而解决了跨越异种网络的报文传输问题。异种报文传输的通道称为Tunnel(隧道)。如图所示,通过在IPv4网络上建立GRE隧道,解决了两个IPv6网络的通信问题。

华为防火墙GRE隧道配置_GRE

      GRE除了可以封装网络层协议报文以外,它还具备封装组播报文的能力。由于动态路由协议中会使用组播报文,因此更多时候GRE会在需要传递组播路由数据的场景中被用到,这也是GRE被称为通用路由封装协议的原因。以下几个场景就是GRE在路由封装方面的应用。

GRE over IPSec

       IPSec隧道两端的IP网络需要通信,彼此就要获取到对端网络的私网路由信息。假设隧道两端的IP网络部署的是动态路由协议,那么IPSec隧道中就需要传递路由协议的组播报文。由于IPSec本身并不具备封装组播报文的能力,因此该场景下就需要寻求GRE的协助。GRE首先将组播报文封装成单播报文,封装后的单播报文就可以经过IPSec隧道发送到对端网络。此时,建立在两个IP网络中的隧道被称为GRE over IPSec隧道。

华为防火墙GRE隧道配置_华为防火墙_02

扩大跳数受限的网络工作范围

华为防火墙GRE隧道配置_GRE_03

       网络中运行RIP协议,如果两台电脑之间的跳数超过15,它们将无法通信。通过在网络中使用GRE隧道可以隐藏一部分跳数,从而扩大网络的工作范围。

       例如,在FW_A和FW_B之间建立GRE隧道后,FW_A和FW_B就相当于相邻的路由器,距离为一跳。这就隐藏了FW_A和FW_B之间的跳数,使网络得到了扩展。

GRE封装

       无论哪一种VPN封装技术,其基本的构成要素都可以分为3个部分:乘客协议、封装协议和运输协议,GRE也不例外。

       如图所示。可以看出,GRE能够承载的乘客协议包括IPv4、IPv6和MPLS协议,GRE所使用的运输协议是IPv4协议。

华为防火墙GRE隧道配置_VPN_04

GRE报文封装

       GRE是按照协议栈对报文进行逐层封装,如图所示。封装过程可以分成两步,第一步是为原始报文添加GRE头,第二步是在GRE头前面再加上新的IP头。加上新的IP头以后,就意味着原始报文可以在新网络上传输了。GRE的封装操作是通过逻辑接口Tunnel完成的,Tunnel接口是一个通用的隧道接口,所以GRE协议在使用这个接口的时候,会将接口的封装协议设置为GRE协议。

华为防火墙GRE隧道配置_华为防火墙_05

配置基于静态路由的GRE隧道

华为防火墙GRE隧道配置_VPN_06

      FWA和FWB通过Internet相连,两者公网路由可达。网络1和网络2是两个私有的IP网络,通过在两台FW之间建立GRE隧道实现两个私有IP网络互联。

配置思路

  1. 在FW_A和FW_B上分别创建一个Tunnel接口。在Tunnel接口中指定隧道的源IP地址和目的IP等封装参数。
  2. 配置静态路由,将出接口指定为本设备的Tunnel接口。该路由的作用是将需要经过GRE隧道传输的流量引入到GRE隧道中。
  3. 配置安全策略,允许GRE隧道的建立和流量的转发。

eNSP拓扑

华为防火墙GRE隧道配置_VPN_07

基本配置

  1. 配置FW_A

配置接口的IP地址,并将接口加入安全区域。

[FW1]interface GigabitEthernet 1/0/1
[FW1-GigabitEthernet1/0/1]ip address 1.1.1.1 24
[FW1-GigabitEthernet1/0/1]quit
[FW1]interface GigabitEthernet 1/0/2
[FW1-GigabitEthernet1/0/2]ip address 10.1.1.1 24
[FW1-GigabitEthernet1/0/2]quit
[FW1]interface Tunnel 1
[FW1-Tunnel1]ip address 172.16.2.1 24
[FW1-Tunnel1]quit
[FW1]firewall zone untrust
[FW1-zone-untrust]add interface GigabitEthernet 1/0/1
[FW1-zone-untrust]quit
[FW1]firewall zone trust
[FW1-zone-trust]add interface GigabitEthernet 1/0/2
[FW1-zone-trust]quit
[FW1]firewall zone dmz
[FW1-zone-dmz]add interface Tunnel 1
[FW1-zone-dmz]quit
[FW1]ip route-static 0.0.0.0 0.0.0.0 1.1.1.254

配置路由,将需要经过GRE隧道传输的流量引入到GRE隧道中。

[FW1]ip route-static 10.1.2.0 24 Tunnel1

配置Tunnel接口的封装参数。

[FW1]interface Tunnel 1
[FW1-Tunnel1]tunnel-protocol gre
[FW1-Tunnel1] source 1.1.1.1
[FW1-Tunnel1]destination 5.5.5.5
[FW1-Tunnel1]gre key cipher 123456
[FW1-Tunnel1]quit

配置域间安全策略。

[FW1]security-policy 
[FW1-policy-security]rule name policy1
[FW1-policy-security-rule-policy1]source-zone trust dmz
[FW1-policy-security-rule-policy1]destination-zone dmz trust
[FW1-policy-security-rule-policy1]action permit
[FW1-policy-security-rule-policy1]q

配置Local和Untrust的域间安全策略,允许封装后的GRE报文通过域间安全策略。

[FW1]security-policy 
[FW1-policy-security]rule name policy2
[FW1-policy-security-rule-policy2]source-zone untrust
[FW1-policy-security-rule-policy2]destination-zone untrust local
[FW1-policy-security-rule-policy2]service gre
[FW1-policy-security-rule-policy2]action permit
[FW1-policy-security-rule-policy2]quit

2.配置FW_B

配置接口的IP地址,并将接口加入安全区域。

[FW2]interface GigabitEthernet 1/0/1
[FW2-GigabitEthernet1/0/1]ip address 5.5.5.5 24
[FW2-GigabitEthernet1/0/1]quit
[FW2]interface GigabitEthernet 1/0/2
[FW2-GigabitEthernet1/0/2]ip address 10.1.2.1 24
[FW2-GigabitEthernet1/0/2]quit
[FW2]interface Tunnel 1
[FW2-Tunnel1]ip address 172.16.2.2 24
[FW2-Tunnel1]quit
[FW2]firewall zone untrust
[FW2-zone-untrust]add interface GigabitEthernet 1/0/1
[FW2-zone-untrust]quit
[FW2]firewall zone trust
[FW2-zone-trust]add interface GigabitEthernet 1/0/2
[FW2-zone-trust]quit
[FW2]firewall zone dmz
[FW2-zone-dmz]add interface Tunnel 1
[FW2-zone-dmz]quit
[FW2]ip route-static 0.0.0.0 0.0.0.0 5.5.5.254

配置路由,将需要经过GRE隧道传输的流量引入到GRE隧道中。

[FW2]ip route-static 10.1.2.0 24 Tunnel1

配置Tunnel接口的封装参数。

[FW2]interface Tunnel 1
[FW2-Tunnel1]tunnel-protocol gre
[FW2-Tunnel1] source 5.5.5.5
[FW2-Tunnel1]destination 1.1.1.1
[FW2-Tunnel1]gre key cipher 123456
[FW2-Tunnel1]quit

配置域间安全策略。

[FW2]security-policy 
[FW2-policy-security]rule name policy1
[FW2-policy-security-rule-policy1]source-zone trust dmz
[FW2-policy-security-rule-policy1]destination-zone dmz trust
[FW2-policy-security-rule-policy1]action permit
[FW2-policy-security-rule-policy1]q

配置Local和Untrust的域间安全策略,允许封装后的GRE报文通过域间安全策略。

[FW2]security-policy 
[FW2-policy-security]rule name policy2
[FW2-policy-security-rule-policy2]source-zone untrust
[FW2-policy-security-rule-policy2]destination-zone untrust local
[FW2-policy-security-rule-policy2]service gre
[FW2-policy-security-rule-policy2]action permit
[FW2-policy-security-rule-policy2]quit

结果验证

  1. 网络1中的PC与网络2中的PC能够相互ping通。

华为防火墙GRE隧道配置_华为防火墙_08

华为防火墙GRE隧道配置_GRE_09

  1. 在FW_A使用display ip routing-table命令查看路由表。可以看到目的地址为10.1.2.0/24,出接口为Tunnel1的路由。

华为防火墙GRE隧道配置_VPN_10