GRE隧道在实际部署中的优化、局限性与弊端

GRE的其他特性

 上一篇光讲解配置就花了大量的篇幅,还一些特性没有讲解的,这里在来提及下。

图片

1、动态路由协议

在上一篇中是使用的静态路由,那么在动态路由协议中应该怎么配置呢?

undoip route-static 192.168.20.0 255.255.255.0   Tunnel0

undo ip route-static 192.168.10.0 255.255.255.0 Tunnel1

[BJ_FW]ospf 1 router-id10.1.1.1

[BJ_FW-ospf-1-area-0.0.0.0]network10.1.1.1 0.0.0.0

[BJ_FW-ospf-1-area-0.0.0.0]network192.168.10.0 0.0.0.255

[CS_FW]ospf 1 router-id10.1.1.2

[CS_FW-ospf-1-area-0.0.0.0]network10.1.1.2 0.0.0.0

[CS_FW-ospf-1-area-0.0.0.0]network192.168.20.0 0.0.0.255

图片

图片

OSPF建立成功了,查看是否收到路由。

图片

图片

在实际中,常见组网场景使用静态路由即可满足,比较复杂的网络结构则推荐使用动态路由 OSPF之类,减轻工作量,也方便部署(这里留一个提问:如果把Local与gre的策略去掉,OSPF还能建立起来吗?)

2、验证功能

默认情况下GRE是没有开启认证的,那么假设有人伪装成BJ防火墙来跟CS的防火墙通信,CS防火墙是识别不到的,这个时候可以开启GRE的验证功能。(先开启抓包)

图片

这个是没有开启认证情况下的报文,待会开启认证后来对比下有什么不一样。

[BJ_FW]interface Tunnel 0

[BJ_FW-Tunnel0]gre key 123456

图片

当只有BJ_FW这边输入验证key后,会发现OSPF的邻居down了

图片

接口还是up的

图片

数据已经不通了。

[CS_FW]interface Tunnel 1

[CS_FW-Tunnel1]gre key 123456

图片

图片

当CS_FW配置认证key后,OSPF立马就建立了,也能互通,这里说明认证的关键是两边的key要完全一致。

图片

这个时候在看抓包的的认证前跟认证后对比能发现开启认证后key的字段变成1了,并且下面多了一个GRE key 0x0001e240

图片

这个字段是十六进制,换算成十进制就是123456了。

3、校验功能

GRE的虽然使得两个局域网之间互通了,但是在internet不安全的环境中可能被恶意攻击者篡改,就需要用到GRE中的一个功能:checksum,一旦开启后,在发送的时候会把报文的信息计算校验和,并附带在报文里面,对端收到后也会重新计算跟携带的结果做比较,如果一致则通过,不一致丢弃。

图片

[BJ_FW]interface Tunnel 0

[BJ_FW-Tunnel0]gre checksum

[CS_FW]interface Tunnel 1

[CS_FW-Tunnel1]gre checksum

另外强调下,校验功能是单向的,一端开,另外一端不开也是不影响隧道,但是在实际中建议两边都开启。

4、Keepalive

假设CS_FW的tunnel口被关闭了会发生什么事情?

[CS_FW]interface Tunnel 1

[CS_FW-Tunnel1]shutdown

图片

从BJ_FW这边看除了OSPF邻居信息down掉外,tunnel口没任何反应,这里说下GRE是一个无状态类型的隧道,也就是只维护自己的隧道,对于对端是不会去关心的,为了解决这个问题,就提供了一个keepalive机制,它会周期性的发送探测报文给对方来检测对方状态,如果对方回应了,则认为隧道正常,如果持续一定时间没回应则把隧道关闭。

[BJ_FW]interface  Tunnel 0

[BJ_FW-Tunnel0]keepalive

图片

当配置完毕后,这个时候tunnel就down了,因为对方没有回应。

图片

图片

这里又出现了一个经典的地方,只把CS_FW的接口打开了,并没有配置keepalive,但是BJ_FW的隧道起来了,这说明keepalive也是可以单向开启的功能,只是在实际中建议是双方都开。

5、MTU优化

GRE封装是会产生新的IP头部跟GRE报文头部,那可能会造成IP分片的问题,因为本身MTU1500,这个时候又加了新的IP头部20个字节,加4~12个字节的GRE头部,这里GRE的头部大小根据配置机制有所不同,正常GRE隧道是4个字节,如果加了key验证是8个字节,如果开了checksum则是12个字节,原因key验证跟checksum都会产生数据,所以字节增加了,但是有一个功能不会增加就是keepalive。所以足足的多出来了最少24个字节,最多32个,所以在实际中配置的话建议MTU改成  1500-IP头部-GRE占用,比较建议直接用1450(两边建议一致)

GRE的弊端

图片

GRE隧道虽然帮助两个局域网在互联网之间进行了互通,它实现的方式其实就是给原始数据打上了一个新的“马甲”,但是带来的问题是GRE是没有加密功能的。

图片

抓包软件就很能体现出来了,内容里面它直接显示是192.168.10.1到20.2的,具体内容都可以抓包看到,但是看详细的,会发现其实在前面有一层新的IP头部的(新的马甲),但是里面的内容只要被抓取的包,就能看的一清二楚,所以在实际中GRE单独使用会相对较少,以博主的来说,只有在IPSEC对接的时候出现问题,客户又急需要互通可能会提前用GRE先打通,把业务对接起来,在实际中用的更多的是gre over ipsec,用ipsec来加密保护GRE隧道。(这里只说局域网之间互通的情况,不讨论在MPLS中的使用)

GRE的局限性

从上个案例中可以看出来,GRE一个很大的局限性就是两边都是要是公网IP,因为tunnel指定是必须写固定地址的,如果地址是可变的话则建立不起来。这在实际实施中就增加了难度,大部分时候往往就是有一端没有公网IP,或者两边都是动态的公网IP,在这种情况下GRE就显得没办法了,在华为防火墙里面算是一个特例,它支持动态的,但是需要配合DDNS功能,其余设备一律不支持。

“承上启下”

GRE篇算正式结束了,它的安全性以及对于公网IP的要求在实际环境中就增加了部署难度,只适合两边有公网地址,而且客户对于数据安全性要求不高的场景,直接部署GRE是最方便的,有一种技术出现很好的解决了GRE没有加密的缺陷,这就是我们下几篇要讲解到IPSEC。

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

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

相关文章

element-plus的菜单组件el-menu

菜单是几乎是每个管理系统的软件系统中不可或缺的,element-plus提供的菜单组件可以快速完成大部分的菜单的需求开发, 该组件内置和vue-router的集成,使用起来很方便。 主要组件如下 el-menu 顶级菜单组件 主要属性 mode:决定菜单的展示模式…

2024/9/20 使用QT实现扫雷游戏

有三种难度初级6x6 中级10x10 高级16x16 完成游戏 游戏失败后&#xff0c;无法再次完成游戏&#xff0c;只能重新开始一局 对Qpushbutton进行重写 mybutton.h #ifndef MYBUTTON_H #define MYBUTTON_H #include <QObject> #include <QWidget> #include <QPus…

2024年8月HarmonyOS鸿蒙应用开发者高级认证全新题库

有题库在手&#xff0c;一小时轻松拿下鸿蒙高级。你们需要也可以无偿分享哦&#xff01; 项目需要为不同的设备形态(如手机 、 智能手表)提供定制化构建 。请说明如何在 DevEcostudio 中 设置不同的构建配置&#xff0c; 以生成针对不同设备的 hap 包&#xff1a; 在模块级别 b…

JavaWeb的Filter详解

过滤器Filter 什么是Filter&#xff1f; 依据字面上的中文意思为过滤器。Filter的作用 当用户的请求到达指定的URL之前&#xff0c;可以借助Filter来改变这些请求的内容&#xff1b;同样地&#xff0c;当响应结果到达客户端之前&#xff0c;可以使用Filter修改输出的内容。什么…

【数据结构入门】排序算法之三路划分与非比较排序

文章目录 前言 一、三路划分优化 1.1. 基本思想 1.2. 实现步骤 1.3. 优点 1.4 代码实现 二、非比较排序 2.1 计数排序 2.1.1基本思想 2.1.2具体步骤 2.1.3算法特性 2.1.4算法实现 2.2 基数排序 2.2.1基本思想 2.2.2具体步骤 2.2.3 基数排序的方法 2.2.4算法特…

MongoDB在Linux系统中的安装与配置指南

在这篇文章中&#xff0c;我们将介绍如何在CentOS 7服务器上安装MongoDB&#xff0c;并通过DataX将数据从MongoDB迁移到MySQL数据库。这将包括MongoDB的安装、配置、数据准备以及使用DataX进行数据迁移的详细步骤。 MongoDB简介 MongoDB是一个高性能、开源、无模式的文档型数据…

Leetcode面试经典150题-97.交错字符串

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 ... snt t1 t2 ... tm|n - m| < 1交错 是…

Springboot3 + MyBatis-Plus + MySql + Uniapp 实现商品规格选择sku(附带自设计数据库,最新保姆级教程)

Springboot3 MyBatis-Plus MySql Uniapp 实现商品规格选择sku&#xff08;附带自设计数据库&#xff0c;最新保姆级教程&#xff09; 1、效果展示2、数据库设计2.1 商品表2.2 商品价格和规格中间表2.3 商品规格表 3、后端代码3.1 model3.2 vo3.3 mapper、server、serverImp3…

使用express或koa或nginx部署history路由模式的单页面应用

使用hash模式会有#&#xff0c;影响美观&#xff0c;所以使用history模式会是个更好的选择。 前端项目打包上线部署&#xff0c;可以使用下面的方式部署history模式的项目&#xff0c;下面以 jyH5 为例 expressjs部署 express脚手架搭建的app.js中添加如下代码&#xff1a; …

CDA Level 1 业务数据分析

目录 理解业务数据分析方法、掌握业务数据分析流程、能够使用及设计创建业务指标、能够结合业务模型及业务分析方法正确理解业务问题&#xff0c;找到问题原因&#xff0c;并能够提出解决问题建议&#xff0c;这个章节的应用会考的比较多&#xff08;终于正经起来了呢&#xf…

设计模式 组合模式(Composite Pattern)

组合模式简绍 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端可以用一致的方式处理单个对象和组合对象。这样&#xff0c;可以在不知道对象具体类型的条…

7--SpringBoot-后端开发、原理详解(面试高频提问点)

目录 SpringBoot原理 起步依赖 自动配置 配置优先级 Bean设置 获取Bean 第三方Bean SpringBoot原理 内容偏向于底层的原理分析 基于Spring框架进行项目的开发有两个不足的地方&#xff1a; 在pom.xml中依赖配置比较繁琐&#xff0c;在项目开发时&#xff0c;需要自己去找…

手写Spring

简单实现Spring基于注解配置 ComponentScan Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) public interface ComponentScan {String value() default ""; } 相当于component-scan HspSpringConfig ComponentScan(value "spring.write.com…

C#自定义曲线绘图面板

一、实现功能 1、显示面板绘制。 2、拖动面板&#xff0c;X轴、Y轴都可以拖动。 3、显示面板缩放&#xff0c;放大或者缩小。 4、鼠标在面板中对应的XY轴数值。 5、自动生成的数据数组&#xff0c;曲线显示。 6、鼠标是否在曲线上检测。 二、界面 拖动面板 鼠标在曲线上…

【随手笔记】使用J-LINK读写芯片内存数据

第一种使用JLINK.exe 1. 打开j-link.exe 2.输入【usb】 3. 连接芯片 输入【connect】输入芯片型号【STM32L071RB】输入连接方式 【S】 使用SWD连接方式输入连接速率 【4000】连接成功 4. 输入【&#xff1f;】查看指令提示 5. 读写指令 Mem Mem [<Zone>…

DataFrame生成excel后为什么多了一行数字

问题描述 python查询数据生成excel文件&#xff0c;生成的excel多了第一行数字索引&#xff0c;1,2,3,4,5...... 代码&#xff1a; df pd.DataFrame(data)df.to_excel(filename, sheet_name用户信息表, indexFalse) 解决&#xff1a; 原理也很简单&#xff0c;就是设置个参…

【python设计模式7】行为型模式2

目录 策略模式 模板方法模式 策略模式 定义一个个算法&#xff0c;把它们封装起来&#xff0c;并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色有&#xff1a;抽象策略、具体策略和上下文。 from abc import abstractmethod, ABCMeta from datetim…

前端vue-ref与document.querySelector的对比

ref只在本组件中查找&#xff0c;而document.querySelector是在整个页面查找

Golang | Leetcode Golang题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; func thirdMax(nums []int) int {var a, b, c *intfor _, num : range nums {num : numif a nil || num > *a {a, b, c &num, a, b} else if *a > num && (b nil || num > *b) {b, c &num, b} else if b ! ni…

SQL Server性能优化之读写分离

理论部分: 数据库读写分离&#xff1a; 主库&#xff1a;负责数据库操作增删改 20% 多个从库&#xff1a;负责数据库查询操作 80% 读写分离的四种模式 1.快照发布&#xff1a;发布服务器按照预定的时间间隔向订阅服务器发送已发布的数据快照 2.事务发布[比较主流常见]&#xf…