二、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、其他
  • 10、防火墙WEB界面GRE配置

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

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业务时会存在地址冲突的可能性。

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

10、防火墙WEB界面GRE配置

在这里插入图片描述

ENSP中的UGS6000设备。

选择一个本地的虚拟网卡,配置IP为192.168.0.254。开启设备后登录防火墙,用户名admin,密码:Admin@123

在这里插入图片描述

在G0/0/0口配置命令:service-manage all permit

在这里插入图片描述

访问地址:https://192.168.0.1:8443

在这里插入图片描述

防火墙先开启大招。

在这里插入图片描述
配置的接口IP,需要加入安全区域。且接口允许Ping。

在这里插入图片描述

在这里插入图片描述

OSPF配置就省略了。

FW1配置GRE:

在这里插入图片描述

FW2配置GRE:

在这里插入图片描述

在这里插入图片描述

隧道是通的。
在这里插入图片描述

添加静态路由

FW1:
在这里插入图片描述

FW2:

在这里插入图片描述

在这里插入图片描述

tracert跟踪的话要关于tracert攻击防范功能

UGS5500:

ip ttl-expires enable
undo firewall defend icmp-unreachable enable
undo firewall defend tracert enable

UGS6000V:

icmp ttl-exceeded send
icmp host-unreachable send
undo firewall defend icmp-unreachable enable
undo firewall defend tracert enable

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络资料(忘传了)

1网络分层模型和应用协议 1.1分层模型 1.1.1分层的意义 当遇到一个复杂问题的时候,可以使用分层的思想把问题简单化 比如,你有半杯82年的可乐,想分享给你的朋友王富贵,但你们已经10年没有联系了。要完成这件事,你可…

Redis-使用java代码操作Redis

目录 一.Java连接上redis 1.导入依赖 二.Java操作redis的常见类型数据存储 1.设置值 ​编辑 2.哈希 1.1设置哈希值 ​编辑 1.2.封装工具类 1.3列表 三redis中的项目应用 一.Java连接上redis redis与Mysql都市数据库,Java操作redis其实跟操作mysql的过程是一…

Selenium —— 网页frame与多窗口处理!

一、多窗口处理. 1.1、多窗口简介 点击某些链接,会重新打开⼀个窗⼜,对于这种情况,想在新页⾯上操作,就 得先切换窗⼜了。 获取窗⼜的唯⼀标识⽤句柄表⽰,所以只需要切换句柄,就可以在多个页⾯灵 活操作了…

基于EPICS stream模块的直流电源的IOC控制程序实例

本实例程序实现了对优利德UDP6720系列直流电源的网络控制和访问,先在此介绍这个项目中使用的硬件: 1、UDP6721直流电源:受控设备 2、moxa串口服务器5150:将UDP6721直流电源设备串口连接转成网络连接 3、香橙派Zero3:运…

【iOS】知乎日报前三周总结

这几天一直在进行知乎日报的仿写,仿写过程中积累了许多实用的开发经验,并对MVC有了更深的了解,特撰此篇作以总结 目录 第一周将网络请求封装在一个单例类Manager中SDWebImage库的简单使用运用时间戳处理当前时间自定义NavigationBar 第二周在…

HarmonyOS(二)—— 初识ArkTS开发语言(中)之ArkTS的由来和演进

前言 在上一篇文章HarmonyOS(二)—— 初识ArkTS开发语言(上)之TypeScript入门,我初识了TypeScript相关知识点,也知道ArkTS是华为基于TypeScript发展演化而来。 从最初的基础的逻辑交互能力,到…

VScode配置 github 上传代码

初始化,设置用户名和密码 # 设置你的 Git 用户名 git config --global user.name author# 设置你的 Git 邮箱 git config --global user.email authorgmail.com# 确保 Git 输出带有颜色 git config --global color.ui auto​# 查看 Git 配置 git list1. 初始化本地…

Java8实战-总结46

Java8实战-总结46 CompletableFuture:组合式异步编程让代码免受阻塞之苦使用 CompletableFuture 发起异步请求寻找更好的方案 CompletableFuture:组合式异步编程 让代码免受阻塞之苦 使用 CompletableFuture 发起异步请求 可以使用工厂方法supplyAsyn…

数据包端到端的流程

流程 A给F发送一个数据包的流程: 首先 A(192.168.0.1)通过子网掩码(255.255.255.0)计算出自己与 F(192.168.2.2)并不在同一个子网内,于是决定发送给默认网关(192.168.0.…

vue3项目实践

创建 vue3 项目 node本版:node 16.x.x, 脚手架:create-vue 脚手架工具,底层vite 创建vue3项目:npm init vuelatest setup函数 vue3 单文件组件 1、vite.config.js配置文件基于vite的配置 2、template模板不再要求唯…

4 函数的升级-下

重载(overload) 同一个标识符在不同的上下文有不同的意义 如汉语中“洗”和不同的字搭配后,有不同的含义,play 和不同的单词搭配后有不同的含义。 函数重载:用同一个函数名定义不同的函数,通过不同的参数搭…

c++11中的线程库和包装器

c11 1. 线程库1.1 线程库1.2 锁mutex 2. 包装器2.1 funciton2.2 bind 1. 线程库 1.1 线程库 C11中的线程库提供了一种方便的方式来创建和管理线程。其中,std::thread是一个重要的类,它允许我们创建新线程并控制它们的执行。以下是std::thread的一些重要…

048基于web+springboot的校园资料分享平台

欢迎大家关注,一起好好学习,天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本校园资料分享平台有管理员和用户两个角色。管理员功能有个人中心,学生管理,资料分享管理,资源分…

03、SpringBoot + 微信支付 ---- 创建订单、保存二维码url、显示订单列表

目录 Native 下单1、创建课程订单保存到数据库1-1:需求:1-2:代码:1-3:测试结果: 2、保存支付二维码的url2-1:需求:2-2:代码:2-3:测试:…

[python 刷题] 1248 Count Number of Nice Subarrays

[python 刷题] 1248 Count Number of Nice Subarrays 题目如下: Given an array of integers nums and an integer k. A continuous subarray is called nice if there are k odd numbers on it. Return the number of nice sub-arrays. 这道题和 1343 Number of S…

Python实验五 异常处理

实验 1:为下列代码添加异常处理。 xint(input(请输入一个整数)) print(100/x) # 实验 1:为下列代码添加异常处理。 try:xint(input(请输入一个整数:))print(100/x) except ValueError:print(请输入一个整数) except ZeroDivisionError:print…

Spring Boot中解决跨域问题(CORS)

1. 跨域介绍 首先解释什么是跨域,跨域就是前端和后端的端口号不同;会产生跨域问题,这里浏览器的保护机制(同源策略)。 同源策略:前端和后端的协议、域名、端口号三者都相同叫做同源。 我们看一下不同源&am…

项目部署文档

申请SSL证书 先申请,用免费的 下载证书 先将下载下来的保存起来 服务器安装JDK: 创建develop目录 mkdir /usr/local/develop/ 把JDK压缩包上传到/usr/local/develop/目录 解压安装包 并且将安装到指定目录 tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /us…

嵌入式中如何将BootLoader与APP合并成一个固件

1、前言 嵌入式固件一般分为BootLoader和App,BootLoader用于启动校验、App升级、App版本回滚等功能,BootLoader在cpu上电第一阶段中运行,之后跳转至App地址执行应用程序。 因此,在发布固件的时候,会存在BootLoader固件…

IOS手机耗电量测试

1. 耗电量原始测试方法 1.1 方法原理: 根据iPhone手机右上角的电池百分比变化来计算耗电量。 1.2实际操作: 在iOS通用设置中打开电池百分比数值显示,然后操作30分钟,60分钟,90分钟,看开始时和结束时电池…