二、GRE VPN

GRE VPN

  • 1、GRE介绍
  • 2、GRE基本原理
  • 3、GRE报文格式
  • 4、报文在GRE中传输过程
  • 5、价值
  • 6、Keepalive检测
  • 7、GRE应用
  • 8、配置GRE隧道
    • 8.1、配置绑定GRE协议的接口
    • 8.2、配置Tunnel接口
    • 8.3、配置Tunnel路由
  • 9、GRE配置举例
    • 9.1、GRE静态路由示例
      • 9.1.1、路由器运行动态路由协议实现互通
      • 9.1.2、配置Tunnel接口
      • 9.1.3、配置静态路由
      • 9.1.4、验证
      • 9.1.5、可选配置Keepalive
      • 9.1.6、可选配置GRE安全选项
    • 9.2、GRE动态路由示例
      • 9.2.1、配置Tunnel接口OSPF协议
    • 9.2、其他

加粗样式

——————————————————————————————————————————————————

1、GRE介绍

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

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输,而异种报文传输的通道称为Tunnel。

目的

为了使某些网络层协议(如IPX、IPv6、AppleTalk等)的报文能够在IPv4网络中传输,可以将某些网络层协议的报文进行封装,以此解决了异种网络的传输问题。

GRE也可以作为VPN的第三层隧道协议,为VPN数据提供透明传输通道。目前,只有IPv4 L3VPN支持GRE隧道,IPv6 L3VPN暂时不支持GRE隧道。

——————————————————————————————————————————————————

2、GRE基本原理

产生的原因

骨干网中一般采用单一网络协议(例如IPv4)进行数据报文传输,但是不同的非骨干网上可能会使用不同网络协议(例如:IP、IPv6、IPX等)进行数据报文传输。由于骨干网与非骨干网使用的协议不同,这样将导致非骨干网之间无法通过骨干网传输数据报文。GRE协议通过实现一种协议封装另一种协议来解决这个问题。

如图:Group1和2运行Novell IPX的非骨干网,Term1和2运行IPv6的非骨干网,中间使用的是IPv4网络,为了实现group1和group2、term1和term2通过骨干网传输数据,可以在A和B之间采用GRE协议建立隧道,数据包封装在IPV4协议中,然后转发。

在这里插入图片描述

——————————————————————————————————————————————————

3、GRE报文格式

系统收到需要进行封装数据时,将首先对其加上GRE报文头,使之成为GRE报文,再将其封装在另一协议(如IP)中。这样,此报文的转发就可以完全由IP协议负责。

封装后的报文的格式:

在这里插入图片描述

净荷(Payload):系统收到的需要封装和传输的数据报称为净荷。

乘客协议(Passenger Protocol):封装前的报文协议称为乘客协议。

封装协议(Encapsulation Protocol):上述的GRE协议称为封装协议,也称为运载协议(Carrier Protocol)。

传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。

例如一个封装在IP Tunnel中的IPX报文的格式可以表示为:

在这里插入图片描述

——————————————————————————————————————————————————

4、报文在GRE中传输过程

报文在GRE隧道中传输包括封装和解封装两个过程。如果私网报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成;而解封装在Egress PE上进行。

在这里插入图片描述

封装:

Ingress PE从连接私网的接口接收到私网报文后,首先交由私网上运行的协议模块处理。私网协议模块检查私网报文头中的目的地址域在私网路由表或转发表中查找出接口,确定如何路由此包。如果发现出接口是GRE Tunnel接口,则将此报文发给隧道模块。处理如下:

1、根据乘客报文的协议类型及GRE隧道所配置的Key参数,对报文进行GRE封装,即添加GRE头。

2、根据配置信息(传输协议为IP),给报文加上IP头。源地址是隧道的地址,IP头目的地址是隧道的目的地址。

3、根据该IP头目的地址,在公网路由表中查找相应的出接口并发送报文。

解封装:

解封装过程和封装过程相反。Egress PE从连接公网的接口收到该报文,分析IP头发现报文的目的地址为本设备,且协议字段值为47,表示协议为GRE,于是交给GRE模块处理。GRE模块去掉IP头和GRE报文头,并根据GRE头的Protocol Type字段,发现此报文的乘客协议为私网上运行的协议,于是交由此私网协议处理。此私网协议像对待一般数据报一样对此数据报进行转发。

——————————————————————————————————————————————————

5、价值

在网络中部署GRE隧道价值三个方面:

使客户的部署不同协议网络使用单一网络协议进行数据传输。
可以扩大受协议的步跳数限制的网络的工作范围。
将一些不能连续的子网连接起来,用于组建VPN。

——————————————————————————————————————————————————

6、Keepalive检测

由于GRE协议并不具备检测链路状态的功能。如果远端端口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因Tunnel不通而丢弃所有报文,由此就会形成数据发送的空洞。

GRE的Keepalive检测功能用于时刻检测隧道链路是否处于Keepalive状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。

实现过程:

周期地发送Keepalive探测报文给对端。若对端可达,则源端会收到对端的回应报文;否则,收不到对端的回应报文。

1、当使能检测功能后,创建一个定时器周期地发送Keepalive探测报文,同时进行不可达计数。每发送一个探测报文,不可达计数加1。

2、对端每收到一个探测报文,就给源端发送一个回应报文。

3、如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。

只要在隧道一端配置Keepalive,该端就具备Keepalive功能,而不要求隧道对端也具备该功能。隧道对端收到报文,如果是Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回应报文。

——————————————————————————————————————————————————

7、GRE应用

扩大网络工作范围

网络运行IP协议,假设IP协议限制跳数为255。如果两台PC之间的跳数超过255,它们将无法通信。在网络中使用隧道可以隐藏一部分步跳,从而扩大网络的工作范围。

在这里插入图片描述

将不连续的子网连接起来,用于组建VPN

使用GRE隧道可以将不连续的子网连接起来,实现跨越广域网的VPN。例如,两个VPN子网Site1和Site2位于不同的城市,通过在网络边界设备之间建立GRE隧道,可以把这两个子网连接成一个连续的VPN网络。

GRE可应用于L2VPN,也可以应用于L3VPN。有两种模式:

CPE-based VPN中,GRE隧道两端驻留在CE上。在此模式中,CE指的就是客户终端设备CPE。

在这里插入图片描述

Network-based VPN中,GRE隧道两端驻留在PE上。

在这里插入图片描述

通常,VPN骨干网使用LSP作为公网隧道。但如果骨干网核心设备(P设备)只提供纯IP功能,不具备MPLS功能;而网络边缘的PE具备MPLS功能,这样,就不能使用LSP作为公网隧道。此时,可以使用GRE隧道替代LSP,在核心网提供三层或二层VPN解决方案。

——————————————————————————————————————————————————

8、配置GRE隧道

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种协议的网络中传输,而异种报文传输的通道称为Tunnel。

——————————————————————————————————————————————————

8.1、配置绑定GRE协议的接口

对应的源接口或者源地址所在接口上需要配置绑定GRE隧道协议,只有这些接口上绑定了GRE隧道协议,GRE隧道才能使用这些接口传输GRE封装的报文。

在隧道两端的路由器上进行如下配置。

——————————————————————————————————————————————————

8.2、配置Tunnel接口

创建Tunnel接口后,需要指定封装方式为GRE、设置Tunnel接口的源地址或源接口、设置Tunnel接口的目的端地址。此外为使隧道支持动态路由协议,还要配置Tunnel接口的IP地址。

配置隧道的源接口时,需要注意:隧道的源接口不能指定为自身的Tunnel接口,但可以指定为其他隧道的Tunnel接口。MTU值仅对设备本身发送报文时,经过GRE封装的报文有效,对于设备收到的报文进行GRE封装转发时,MTU值不生效。

——————————————————————————————————————————————————

8.3、配置Tunnel路由

在源端设备和目的端设备上都必须存在经过Tunnel转发的路由,需要进行GRE封装的报文才能正确转发。经过Tunnel接口的路由可以是静态路由,也可以是动态路由。

配置静态路由时,源端设备和目的端设备都需要配置:此路由目的地址不是Tunnel的目的地址,也不是对端Tunnel接口的地址,而是未进行GRE封装的报文的原始目的地址,出接口是本端Tunnel接口。

配置动态路由协议时,在Tunnel接口和与私网相连的路由器接口上都要使能该动态路由协议。并且,配置去往Tunnel目的端实际接口地址的路由时,为保证能够选择正确的路由,应注意Tunnel接口不能作为该路由的下一跳。

——————————————————————————————————————————————————

9、GRE配置举例

——————————————————————————————————————————————————

9.1、GRE静态路由示例

以典型组网为背景,介绍如何配置GRE使用静态路由,使得用户端之间的流量通过GRE隧道传输。设备到与其相连的客户端之间需要配置静态路由。

AR1、AR2、AR3属于VPN骨干网,之间运行OSPF。现需要在AR2和AR3之间建立直连链路,因此在AR2和AR3之间部署GRE隧道,通过静态路由指定到达对端的报文通过Tunnel接口转发,实现PC4和PC6互相通信。PC4和PC6分别指定AR2、AR3为自己的默认网关。

在这里插入图片描述

——————————————————————————————————————————————————

9.1.1、路由器运行动态路由协议实现互通

AR1:

int lo 0
ip add 1.1.1.1 32

int g0/0/0
ip add 192.168.100.1 30
int g0/0/1
ip add 192.168.100.5 30

router id 1.1.1.1
ospf 100
area 0
net 1.1.1.1 0.0.0.0
net 192.168.100.0 0.0.0.3
net 192.168.100.4 0.0.0.3

AR2:

int lo 0
ip add 2.2.2.2 32

int g0/0/0
ip add 192.168.100.2 30
int g0/0/1
ip add 192.168.1.254 24

router id 2.2.2.2
ospf 100
area 0
net 2.2.2.2 0.0.0.0
net 192.168.100.0 0.0.0.3

AR3:

int lo 0
ip add 3.3.3.3 32

int g0/0/0
ip add 192.168.100.6 30
int g0/0/1
ip add 192.168.2.254 24

router id 3.3.3.3
ospf 100
area 0
net 3.3.3.3 0.0.0.0
net 192.168.100.4 0.0.0.3

在这里插入图片描述

——————————————————————————————————————————————————

9.1.2、配置Tunnel接口

AR2:

int Tunnel 0/0/0
tunnel-protocol gre
ip add 192.168.100.9 30
source 192.168.100.2
destination 192.168.100.6

AR3:

int Tunnel 0/0/0
tunnel-protocol gre
ip add 192.168.100.10 30
source 192.168.100.6
destination 192.168.100.2

在配置隧道的时候,一定注意在配置目标地址的时候,别把命令搞错了。destination目标命令和description描述命令。

配置完成后,Tunnel接口状态变为UP,接口之间可以Ping通。

在这里插入图片描述

在这里插入图片描述

——————————————————————————————————————————————————

9.1.3、配置静态路由

AR2:

ip route-static 192.168.2.0 24 Tunnel 0/0/0

AR3:

ip route-static 192.168.1.0 24 Tunnel 0/0/0

PC之间可以相互通信

在这里插入图片描述
路由跟踪显示走的是隧道

在这里插入图片描述

——————————————————————————————————————————————————

9.1.4、验证

PC Ping查看下数据包。

在这里插入图片描述
AR2 G0/0/1口收到PC的数据包,Src:192.168.1.1,Dst:192.168.2.1。
AR2收到数据包之后根据目的查找路由表和出接口,发现出接口是GRE Tunnel接口后,对源数据包进行封装,添加GRE头。添加隧道的源地址和目标地址。根据封装好的数据包查找相应的接口进行转发。

解封装反之。

——————————————————————————————————————————————————

9.1.5、可选配置Keepalive

由于GRE协议并不具备检测链路状态的功能。如果远端端口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因Tunnel不通而丢弃所有报文,由此就会形成数据发送的空洞。

GRE隧道的Keepalive功能是单向的。如果希望使两端都具备Keepalive功能,需在两端都使能GRE隧道的Keepalive功能。对端是否支持Keepalive功能不影响本端的Keepalive功能。但建议在隧道两端都使能Keepalive功能。

AR2:

int Tunnel 0/0/0
keepalive

AR3:

int Tunnel 0/0/0
keepalive

默认配置,指定发送Keeppalive报文定时器周期5秒。指定不可达计数器参数,默认3。

AR2:

int Tunnel 0/0/0
keepalive period 12 retry-times 4

AR3:

int Tunnel 0/0/0
keepalive period 12 retry-times 4

使能GRE隧道Keepalive功能并指定发送周期为12秒,不可达计数器为4。

——————————————————————————————————————————————————

9.1.6、可选配置GRE安全选项

为了增强GRE隧道的安全性,可以对GRE隧道两端进行端到端校验或者设置GRE隧道的识别关键字,通过这种安全机制防止错误识别、接收其它地方来的报文。

AR2:

int Tunnel 0/0/0
gre key 1111

AR3:

int Tunnel 0/0/0
gre key 1111

在这里插入图片描述

——————————————————————————————————————————————————

9.2、GRE动态路由示例

在骨干网上各路由器运行IGP协议实现互通,这里用OSPF进程100。与PC相连的路由器之间建立GRE隧道,使其彼此之间传输都通过GRE隧道。PC接入骨干网的那部分网段运行动态路由协议,这里用的是OSPF进程10。

在这里插入图片描述

前面的配置都一样。运行OSPF路由协议、Tunnel接口隧道配置。忽略。

——————————————————————————————————————————————————

9.2.1、配置Tunnel接口OSPF协议

AR2:

ospf 10
area 0
net 192.168.100.8 0.0.0.3
net 192.168.1.0 0.0.0.255

AR3:

ospf 10
area 0
net 192.168.100.8 0.0.0.3
net 192.168.2.0 0.0.0.255

可以看到经过Tunnel接口去往对端用户侧网段的OSPF路由,去往Tunnel目的端物理地址192.168.100.4/30的路由下一跳不是Tunnel接口。
在这里插入图片描述

在这里插入图片描述

——————————————————————————————————————————————————

9.2、其他

GRE穿越VPN还没说,后续会有。

GRE隧道主要实现以下几种服务类型。

1、多协议的本地网通过单一协议的骨干网传输

两端运行IP本地网,骨干网使用Novell IPX等协议本地网。在设备之间采用GRE隧道封装,本地网和骨干网互不影响的进行通信。

2、 扩大了步跳数受限协议(如RIP)的网络的工作范围

两台终端之间的步跳数超过15,它们将无法通信。而通过在网络中使用隧道(Tunnel)可以隐藏一部分步跳,从而扩大网络的工作范围。

3、将一些不能连续的子网连接起来,用于组建VPN

运行IP协议的两个子网Group 1和Group 2分别在不同的城市,通过使用隧道可以实现跨越广域网的VPN。

4、与IPSec结合使用

GRE都是明文,不安全。对于诸如路由协议、语音、视频等数据先进行GRE封装,然后再对封装后的报文进行IPSec的加密处理。

GRE是一种应用较为广泛的一种网络层协议PDU封装于任一种网络层协议PDU中的技术,经常被用来构造GRE隧道穿越各种三层网络,并得到了大多数电信设备厂商的支持。

GRE(通用路由协议封装)是由Cisco和Net-smiths等公司于1994年提交给IETF的,标号为RFC1701和RFC1702。目前有多数厂商的网络设备均支持GRE隧道协议。GRE 规定了如何用一种网络协议去封装另一种网络协议的方法。

GRE协议的主要用途有两个:企业内部协议封装和私有地址封装。

在国内,由于企业网几乎全部采用的是TCP/IP协议,因此在中国建立隧道时没有对企业内 部协议封装的市场需求。企业使用GRE的唯一理由应该是对内部地址的封装。当运营商向多个用户提供这种方式的VPN业务时会存在地址冲突的可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/128603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NEFU数字图像处理(3)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中,我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分,背景是指和前景不相关的部分。例如,对于一张人物照片,人物就是前景&…

mysql迁移data目录(Linux-Centos)

随着时间的推移,mysql的数据量越越大,使用yum默认安装的目录为系统盘 /var/lib/mysql,现重新挂载了一个硬盘,需要做数据目录的迁移到 /mnt/data/。以解决占用系统盘过高情况。 1.强烈建议这种操作。镜像一个一样的Centos系统&…

MyBatis无法读取XML中的Method的乌龙事件

事件背景 同事反馈,相同的jar包,在多人本地的电脑、多台服务器中,都是可以正常启动的,只有在其中一台服务器,简称它为A,无法启动,因为启动后的初始化操作中有一个调用mybatis方法的操作&#x…

【CSDN 每日一练 ★★☆】【动态规划】最小路径和

【CSDN 每日一练 ★★☆】【动态规划】最小路径和 动态规划 题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 示例 1&#x…

我的云栖大会之旅:见证云计算创新的15年

云栖大会,曾经是一次不可思议的科技之旅,却如今已见证了我对云计算世界的15年关注和发展。第一次踏上云栖大会之旅,我记得是在2009年。那时的云计算还是一个新生事物,而云栖大会正是其中的奠基石。 我清楚地记得那个炎热的夏天&am…

R -- 体验 stringdist

文章目录 安装使用stringdist :返回列表example stringdistmatrix :返回矩阵example amatch & ain延伸:距离计算公式Hamming distanceLongest Common Substring distanceLevenshtein distance (weighted)The optimal string alignment distance dosa…

UDP服务端和客户端通信代码开发流程

一、UDP通信 TCP:传输控制协议,面向连接的,稳定的,可靠的,安全的数据集流传递 稳定和可靠:丢包重传 数据有序:序号和确认序号 流量控制:稳定窗口 UDP:用户数据报协议 面向无连接的,不稳定的,不可靠,不安…

JMeter的使用,傻瓜式学习【上】

目录 前言 1、JMeter元件及基本使用作用域(简述) 1.1、基本元件 1.2、作用域的原则 1.3、元件执行顺序 2、JMeter三个重要组件 2.1、线程组 案例: 2.2、HTTP请求 2.3、查看结果树 响应体中,中文乱码解决方案&#xff1…

docker部署Jenkins(Jenkins+Gitlab+Maven实现CI/CD)

GitLab介绍 GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。…

学习笔记三十一:k8s安全管理:认证、授权、准入控制概述SA介绍

K8S安全实战篇之RBAC认证授权-v1 k8s安全管理:认证、授权、准入控制概述认证k8s客户端访问apiserver的几种认证方式客户端认证:BearertokenServiceaccountkubeconfig文件 授权Kubernetes的授权是基于插件形成的,其常用的授权插件有以下几种&a…

家庭互动新维度:TikTok的亲子体验

在数字时代,家庭互动的方式正在发生翻天覆地的改变。社交媒体平台TikTok崭露头角,不仅在年轻用户中广受欢迎,还为家庭带来了全新的互动维度。本文将深入探讨TikTok如何成为家庭互动的新元素,以及它如何改变亲子体验。 TikTok&…

后端神器!代码写完直接调试!

Apipost推出IDEA插件非常省时高效,写完代码直接可以进行调试,而且支持生成接口文档,真是后端神器啊! 可以点击下方链接安装更新或在插件商店中搜索安装 下载链接:https://plugins.jetbrains.com/plugin/22676-apipos…

微课录屏软件哪个好?帮你轻松搞定课程录制

微课作为一种新型的教学方式,因其短小精悍、内容丰富等特点,越来越受到广大师生的喜爱。在制作微课时,选择一款合适的录屏软件显得尤为重要。可是微课录屏软件哪个好呢?本文将详细介绍两款微课录屏软件,并进行全方位对…

21款奔驰GLS450升级23P驾驶辅助 智驾出行

驾驶辅助和自动驾驶的区别就是需要人为去接管,虽然车辆会根据道路自己行驶,弯道上也能居中自动修正行驶,长时间不接管方向盘,系统会提示人为接管,这就是奔驰的23P驾驶辅助系统, 很多车友升级23P驾驶辅助系…

探索数据库世界的奥秘:MySQL初学者必备指南!

数据库开发-MySQL 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.2 外键约束 2.2 一对一2.3 多对多 1. 数据库操作-DQL 1.1 介绍 DQL英文全称是Da…

高性能渲染——详解Html Canvas的优势与性能

本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 一、什么是Canvas 想必学习前端的同学们对Canvas 都不陌生,它是 HTML5 新增的“画布”元素&#x…

四十一、【进阶】索引使用SQL提示

1、SQL提示使用情景 在使用MySQL时,当一个字段参在于多个索引中时,默认情况下,MySQL会自动选择一个索引,但我们可以指定索引吗?可以忽略某一种索引吗? 答案是可以的。 前提:profession字段已经…

一文详解如何从 Oracle 迁移数据到 DolphinDB

Oracle 是一个广泛使用的关系型数据库管理系统,它支持 ACID 事务处理,具有强大的安全性和可靠性,因此被广泛应用于各种企业级应用程序。但是,随着数据规模的增加和业务需求的变化,Oracle 的一些限制和缺点也逐渐暴露出…

VS2022 打包WPF安装程序最新教程(图文详解)

文章目录 前言一、安装打包Installer插件1、单独安装2、VS中在线安装二、使用步骤1、创建安装项目2、安装项目主界面3、添加项目输出4、添加快捷方式图标5、添加卸载项目a、新建项目b、添加项目输出c、创建快捷方式6、给快捷方式添加图标a、在Resource文件夹中添加图标文件b、选…

SQL语法实践(一)

文章 原文链接 实践 CREATE TABLE friend(fid INT NOT NULL,NAME VARCHAR(10) NOT NULL,age INT NOT NULL,adress VARCHAR(10) )SHOW TABLES; SELECT * FROM friend; SELECT fid,NAME FROM friend;INSERT INTO friend VALUES(1,Jack,18,Tianjing); INSERT INTO friend VALUE…