网工干货知识

网工技术详解
当前位置:首页 > 干货知识

使用GRE建立VPN隧道

更新时间:2021年11月15日   作者:spoto   标签(Tag):

GRE简介

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。
•GRE实现机制简单,对隧道两端的设备负担小。
•GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。
•GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。
•GRE隧道可以封装组播数据,和IPSec结合使用时可以保证语音、视频等组播业务的安全。
•GRE隧道支持使能MPLS LDP,使用GRE隧道承载MPLS LDP报文,建立LDP LSP,实现MPLS骨干网的互通。
•GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。
 

GRE基本原理

实现过程

报文在GRE隧道中传输包括封装和解封装两个过程。如图所示,如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。
GRE隧道中传输包括封装和解封装两个过程

 

•封装

1.Ingress PE从连接X协议网络的接口接收到X协议报文后,首先交由X协议处理。
2.X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。
3.根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。
4.根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。
 

•解封装

解封装过程和封装过程相反。
1.Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。
2.GRE协议剥掉GRE报头,获取X协议报文,再交由X协议对此数据报文进行后续的转发处理。
 

GRE的Keepalive检测

由于GRE协议并不具备检测链路状态的功能,如果对端接口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因隧道不通接收不到报文,由此就会形成数据空洞。
GRE的Keepalive检测功能可以检测隧道状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免因对端不可达而造成的数据丢失,有效防止数据空洞,保证数据传输的可靠性。

Keepalive检测功能的实现过程如下:
1.当GRE隧道的源端使能Keepalive检测功能后,就创建一个定时器,周期地发送Keepalive探测报文,同时通过计数器进行不可达计数。每发送一个探测报文,不可达计数加1。
2.对端每收到一个探测报文,就给源端发送一个回应报文。
3.如果源端的计数器值未达到预先设置的值就收到回应报文,就表明对端可达。如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。但是源端口仍会继续发送Keepalive报文,若对端Up,则源端口也会Up,建立隧道链接。
 

Ethernet over GRE

通用路由封装协议GRE(Generic Routing Encapsulation)提供了将一种协议报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输,这种在异种网络中传输报文的通道称为隧道(Tunnel)。

目前,GRE隧道可以通过两种隧道接口建立:

•GRE隧道接口

GRE隧道接口是为实现报文的封装而提供的一种点对点类型的逻辑接口,包含源地址、目的地址和隧道接口IP地址。

•mGRE隧道接口

mGRE隧道接口是为实现DSVPN而提供的一种点到多点类型的逻辑接口,包含源地址、目的地址和隧道接口IP地址。
与GRE隧道接口手工指定目的地址不同,mGRE隧道接口的目的地址来自于NHRP地址解析协议,一个mGRE隧道接口上,可以存在多条GRE隧道,有多个GRE对端。
如图所示,分支与总部的网络都是以太网络,分支与总部之间通过IP骨干网相连,如果用户希望分支与总部之间能够互通,可以部署Ethernet over GRE功能,实现以太报文通过GRE隧道进行透传。
mGRE隧道接口

 

GRE配置举例

配置GRE通过静态路由实现IPv4协议互通示例

组网需求

如图,RouterA、RouterB、RouterC使用OSPF协议路由实现公网互通。在PC1和PC2上运行IPv4私网协议,现需要PC1和PC2通过公网实现IPv4私网互通。
其中PC1和PC2上分别指定RouterA和RouterC为自己的缺省网关。

 

配置GRE通过静态路由实现IPv4协议互通组网需求

 

配置思路

要实现PC1和PC2通过公网互通。需要在RouterA和RouterC之间建立直连链路,部署GRE隧道,通过静态路由指定到达对端的报文通过Tunnel接口转发,PC1和PC2就可以互相通信了。
配置GRE通过静态路由实现IPv4协议互通的思路如下:
1.所有设备之间运行OSPF路由协议实现设备间路由互通。
2.在RouterA和RouterC上创建Tunnel接口,创建GRE隧道,并在RouterA和RouterC上配置经过Tunnel接口的静态路由,使PC1和PC2之间的流量通过GRE隧道传输,实现PC1和PC2互通。

 

 

 

 

操作步骤

 

 

1.配置各物理接口的IP地址

# 配置RouterA。
system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ip address 20.1.1.1 255.255.255.0
[RouterA-GigabitEthernet1/0/0] quit
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] ip address 10.1.1.2 255.255.255.0
[RouterA-GigabitEthernet2/0/0] quit
# 配置RouterB。
system-view
[Huawei] sysname RouterB
[RouterB] interface gigabitethernet 1/0/0
[RouterB-GigabitEthernet1/0/0] ip address 20.1.1.2 255.255.255.0
[RouterB-GigabitEthernet1/0/0] quit
[RouterB] interface gigabitethernet 2/0/0
[RouterB-GigabitEthernet2/0/0] ip address 30.1.1.1 255.255.255.0
[RouterB-GigabitEthernet2/0/0] quit
# 配置RouterC。
system-view
[Huawei] sysname RouterC
[RouterC] interface gigabitethernet 1/0/0
[RouterC-GigabitEthernet1/0/0] ip address 30.1.1.2 255.255.255.0
[RouterC-GigabitEthernet1/0/0] quit
[RouterC] interface gigabitethernet 2/0/0
[RouterC-GigabitEthernet2/0/0] ip address 10.2.1.2 255.255.255.0
[RouterC-GigabitEthernet2/0/0] quit

2.配置设备间使用OSPF路由

# 配置RouterA。
[RouterA] ospf 1
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
# 配置RouterB。
[RouterB] ospf 1
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] quit
# 配置RouterC。
[RouterC] ospf 1
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# 配置完成后,在RouterA和RouterC上执行display ip routing-table命令,可以看到他们能够学到去往对端接口网段地址的OSPF路由。
# 以RouterA的显示为例。
[RouterA] display ip routing-table protocol ospf
Public routing table : OSPF
Destinations : 1 Routes : 1
OSPF routing table status :
Destinations : 1 Routes : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
30.1.1.0/24 OSPF 10 2 D 20.1.1.2 GigabitEthernet1/0/0
OSPF routing table status :
Destinations : 0 Routes : 0

3.配置Tunnel接口

# 配置RouterA。
[RouterA] interface tunnel 0/0/1
[RouterA-Tunnel0/0/1] tunnel-protocol gre
[RouterA-Tunnel0/0/1] ip address 10.3.1.1 255.255.255.0
[RouterA-Tunnel0/0/1] source 20.1.1.1
[RouterA-Tunnel0/0/1] destination 30.1.1.2
[RouterA-Tunnel0/0/1] quit
# 配置RouterC。
[RouterC] interface tunnel 0/0/1
[RouterC-Tunnel0/0/1] tunnel-protocol gre
[RouterC-Tunnel0/0/1] ip address 10.3.1.2 255.255.255.0
[RouterC-Tunnel0/0/1] source 30.1.1.2
[RouterC-Tunnel0/0/1] destination 20.1.1.1
[RouterC-Tunnel0/0/1] quit
# 配置完成后,Tunnel接口状态变为Up,Tunnel接口之间可以Ping通,直连隧道建立。
# 以RouterA的显示为例:
[RouterA] ping -a 10.3.1.1 10.3.1.2
PING 10.3.1.2: 56 data bytes, press CTRL_C to break
Reply from 10.3.1.2: bytes=56 Sequence=1 ttl=255 time=1 ms
Reply from 10.3.1.2: bytes=56 Sequence=2 ttl=255 time=1 ms
Reply from 10.3.1.2: bytes=56 Sequence=3 ttl=255 time=1 ms
Reply from 10.3.1.2: bytes=56 Sequence=4 ttl=255 time=1 ms
Reply from 10.3.1.2: bytes=56 Sequence=5 ttl=255 time=1 ms
--- 10.3.1.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/1/1 ms

4.配置静态路由

# 配置RouterA。
[RouterA] ip route-static 10.2.1.0 255.255.255.0 tunnel 0/0/1
# 配置RouterC。
[RouterC] ip route-static 10.1.1.0 255.255.255.0 tunnel 0/0/1
# 配置完成后,在RouterA和RouterC上执行display ip routing-table命令,可以看到去往对端用户侧网段的静态路由出接口为Tunnel接口。
# 以RouterA的显示为例。
[RouterA] display ip routing-table 10.2.1.0
--------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.2.1.0/24 Static 60 0 D 10.3.1.2 Tunnel0/0/1
PC1和PC2可以相互Ping通。

 马上抢免费试听资格
意向课程: *必选
姓名: *必填
联系方式: *必填
QQ:
思博SPOTO在线咨询

上一篇:动态路由协议

下一篇:最后一页

相关资讯

7天无条件退款
24小时实验室开放
全程跟踪服务
无条件免费重读

如在过程中遇到任何问题
欢迎在此填写反馈意见

思博网络SPOTO官方公众号

官方公众号

思博网络SPOTO新活动