GRE/MGRE详解

2024-04-13 15:44
文章标签 详解 mgre gre

本文主要是介绍GRE/MGRE详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GRE

GRE:通用路由封装,是标准的三层隧道技术,是一种点对点的隧道技术;

该技术可以实现不同的网络之间安全的访问;

如上:可以使用该技术搭建一条专线,实现公司A与分公司A1之间相互通信;使用双IP头部;

通常在设备边界上做VPN;

在创建隧道时要确保隧道的两端能够通信;隧道的两端IP地址可以在同一个网段,也可以在不同网段;

当在不同网段时,只能通过静态路由的方式使两个私网通信;当在同一个网段时可以通过动态路由的方式来使两个私网通信;

GRE的协议号是47;

配置:
AR3:
[r1]interface Tunnel 0/0/0					----创建隧道
[r1-Tunnel0/0/0]ip address 10.1.1.1 24		----给隧道配置IP
[r1-Tunnel0/0/0]tunnel-protocol ?			----选择隧道的模式:GRE模式gre        Generic Routing Encapsulationipsec      IPSEC Encapsulationipv4-ipv6  IP over IPv6 encapsulationipv6-ipv4  IPv6 over IP encapsulationmpls       MPLS Encapsulationnone       Null Encapsulation
[r1-Tunnel0/0/0]tunnel-protocol gre 
[r1-Tunnel0/0/0]source 12.1.1.1			 -----隧道的源IP(就是本端边界设备接口的IP)
[r1-Tunnel0/0/0]destination 23.1.1.2	 -----隧道的目标IP(就是对端边界设备接口的IP)标识一条唯一的隧道是通过源IP和目标IP;AR5:
[r3]interface Tunnel 0/0/1
[r3-Tunnel0/0/1]ip address 10.1.1.2 24
[r3-Tunnel0/0/1]tunnel-protocol gre 
[r3-Tunnel0/0/1]source 23.1.1.2 
[r3-Tunnel0/0/1]destination12.1.1.1

在思科中,确定一条唯一的隧道是通过源IP,目标IP,keyID来确定;也就是说在两端可以创建很多条隧道;

GRE数据包:

该数据包使用了双IP头部,Type表示的是上层使用了什么协议:0800表示使用的是IPV4;

GRE的缺点:GRE是点对点的,每一条隧道都要由唯一 的源和目标确定,当我们需要创建的隧道的数量过多时就会不合适;

MGRE

MGRE:多点通用路由封装协议;

在MGRE中,我们只定义源,不定义目标;但是我们在使用的时候又必须知道目标,所以在MGRE中我们要借助:下一跳可达协议(NHRP);

NHRP协议:

NHRP-----下一跳可达协议;该协议类似于ARP协议;在所有的隧道口都要运行NHRP协议;

指定好NHRP服务器后,所有的客户端都会配置谁是NHRP服务器;

之后所有的客户端都会将隧道接口的IP,物理IP信息都会封装在NHRP注册包里面发送给NHRP服务器进行注册,NHRP服务器是手工指定的;

所有的MGRE接口将自己的MGRE接口IP地址和对应隧道接口地址信息发送给NHS进行注册,NHS上存在所有接入MGRE的接口映射关系。其他MGRE接口之间彼此通信时向NHS进行请求,形成隧道的目标地址。

MGRE配置:

配置:
NHRP服务器端:
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp  -----配置GRE的模式为点到多点
[r1-Tunnel0/0/0]ip address 10.1.1.1 24
[r1-Tunnel0/0/0]source 12.1.1.1 		  -----配置源IP
[r1-Tunnel0/0/0]nhrp network-id 100		  -----配置NHRP的ID,唯一标识一个NHRP服务器,在客户端中也要标识;客户端:
[r3]interface Tunnel 0/0/0
[r3-Tunnel0/0/0]tunnel-protocol gre p2mp ------配置GRE的模式为点到多点
[r3-Tunnel0/0/0]ip a 10.1.1.2 24
[r3-Tunnel0/0/0]source 23.1.1.1          ------配置源IP
[r3-Tunnel0/0/0]nhrp network-id 100		 ------配置NHRP的ID,唯一标识,具有全局意义
[r3-Tunnel0/0/0]nhrp entry 10.1.1.1 12.1.1.1 register -----表示向NHRP服务器进行注册,10.1.1.1代表的是NHRP服务端的隧道接口地址,12.1.1.1代表的是NHRP服务器真实的物理接口地址;

[r1]display nhrp peer all ----------查看NHRP所有的对等体的信息;

在将隧道建立好了之后,我们在A,A1,A2上启用RIP,看看对端是否能够学习到路由;当运行RIP后发现:只有AR1能够学习到对端的路由,而AR3,AR4都无法学习到路由;因为这种结构是hub-spoke结构,A1,A2在发送路由时源地址是自己的隧道接口地址和物理地址,目标地址是224.0.0.9(组播地址),由于AR1是中心站点所以只会给AR1发送;这种网络类型默认是非广播的多路访问(NBMA);所以,我们要在NHRP服务器(AR1)上开启伪广播功能;伪广播:将动态学习到的路由向NHRP中的各个站点分别发送;[r1-Tunnel0/0/0]nhrp entry multicast dynamic   ------开启伪广播功能
[r1-Tunnel0/0/0]undo rip split-horizon			-----关闭水平分割

当我们开启伪广播功能之后,我们发现此时还是只能学习到一条路由;出现该现象的是RIP的水平分割,我们只需要在中心站点关闭水平分割功能;

当关闭之后,就可以发现各个站点可以学习到所有路由;

这篇关于GRE/MGRE详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900548

相关文章

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Linux权限管理与ACL访问控制详解

《Linux权限管理与ACL访问控制详解》Linux权限管理涵盖基本rwx权限(通过chmod设置)、特殊权限(SUID/SGID/StickyBit)及ACL精细授权,由umask决定默认权限,需合... 目录一、基本权限概述1. 基本权限与数字对应关系二、权限管理命令(chmod)1. 字符模式语法2.

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.