前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用GRE建立VPN隧道

如何使用GRE建立VPN隧道

作者头像
网络工程师笔记
发布2021-05-17 15:35:15
6.6K0
发布2021-05-17 15:35:15
举报
文章被收录于专栏:网络工程师笔记
正文
通用路由封装协议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隧道。

••封装

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隧道进行透传。

GRE配置举例

组网需求

如图,RouterA、RouterB、RouterC使用OSPF协议路由实现公网互通。在PC1和PC2上运行IPv4私网协议,现需要PC1和PC2通过公网实现IPv4私网互通。

其中PC1和PC2上分别指定RouterA和RouterC为自己的缺省网关。

配置思路

要实现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。

<Huawei> 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。

<Huawei> 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。

<Huawei> 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 : <Active>

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 : <Inactive>

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通。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络工程师笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现过程
    • 组网需求
      • 配置思路
        • 操作步骤
        相关产品与服务
        VPN 连接
        VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档