通用路由封装协议GRE

GRE介绍  

  GRE简称通用路由封装协议(Generic Rrouting Encapsulation)他的作用是把一种协议的报文封装在另外一种协议的报文中的技术,是一种隧道技术(只要这样子做,都称为隧道技术)。所以我们抓包看到的至少有两个头部,这两个头部的作用就是穿越异种网络。而且他还可以对组播报文进行封装,这是IPsec做不到的,也就是说我们可以在GRE上面跑路由协议(可以让两个异地的设备跑动态路由),并且可以和IPsec结合,保证更高的安全性。 

GRE虽然我们把它称为VPN技术,但是他一般来说不会单独使用,因为他缺乏安全性,但是他的优点很明显,非常的简单,成为来隧道技术的一个代表。 

GRE通用路由封装协议(Generic Rrouting Encapsulation)

  • 一种三层的VPN封装技术。 
  • 在任意一种网络协议上传送任意一种其他网络协议的封装方法。 
  • 解决了跨越异种网络(不是一种网络)的报文传输问题,异种报文传输的通道被称为隧道(Tunnel)。 
  • 异种网络:不是同一种网络,这些网络默认是不兼容的,通讯是有问题的。 

如:私网跨越公网到达私网,IPv4跨越IPv6到达IPv4,反之亦然。本身这个技术用到的方面很广,是一种隧道技术。 

GRE运用场景

GRE核心功能:建立隧道,打通私网 

隧道一般配置在出口且有公网的设备上。

有了隧道以后,相当于在出口设备和对端出口设备接了一条专线,因为VPN就是用来代替专线的,可以理解为他是一条虚拟的专线,而且从路由层面上来说,正常我们数据从出口设备发出,到达目的网络会有多跳,而我们建立VPN后,只会算一跳,这些细节也会被隐藏。相当于也是减少了路径的跳数。 

GRE报文格式

GRE封装后的报文结构如下图所示。

  • 乘客协议(Passenger Protocol):封装前的报文称为净荷,封装前的报文协议称为乘客协议。
  • 封装协议(Encapsulation Protocol):GRE Header是由封装协议完成并填充的,封装协议也称为运载协议(Carrier Protocol)。
  • 传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。

各字段介绍

GRE头字段

字段解释

C

校验和验证位。该位置1,表示GRE头插入了校验和(Checksum)字段。该位置0,表示GRE头不包含校验和字段。

K

关键字位。该位置1,表示GRE头插入了关键字(Key)字段。该位置0,表示GRE头不包含关键字字段。

Recursion

表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。

Flags

预留字段。当前必须置为0。

Version

版本字段。必须置为0。

Protocol Type

标识乘客协议的协议类型。常见的乘客协议为IPv4协议,协议代码为0800。

Checksum

对GRE头及其负载的校验和字段。

Key

关键字字段,隧道接收端用于对收到的报文进行验证。

GRE封装:穿马甲 

在原始封装的数据报文字段中加入新的IP头部,在新的IP报头和老的IP报头中间加一个协议,这就是GRE报头。 

GRE头部 

把原本的IP报头当成货物,这个被称为乘客协议,GRE负责承载乘客协议的IP报文,可以理解为车辆,然后由新的IP报头在公网进行传输,公网设备只会查看新的IP报头,然后进行转发。 

GRE VPN转发过程详解

私网到私网的路由不走缺省路由,要走隧道口,当我们收到一个私网路由时,这时设备会查找路由表。 

查询路由表后,发现要去的地址的下一跳是隧道口,设备发现我们要走的是隧道口,所以会对数据报文进行GRE封装。 

  • 设备加了一个GRE头部,同时会有新的IP头部,这个新的IP头部,会有新的源和目标IP地址,就是建立时的隧道源和隧道目标。 
  • 隧道口的意义在于设备查找路由时找到出接口是隧道口,或者下一跳是隧道目标。 
  • 因此,私网数据报文保留,加上GRE报头和新的IP报头(隧道源和隧道目标)。 

数据报文发送出去后,中途运营商的设备会根据外层的IP报头进行转发。 

目标设备收到数据报文后,进行解封装,看到GRE报文后,会继续解封装,然后在看到原先发送的数据报文,发现是私网包头,进行查找路由,发现有就进行转发,回包也是如此,这就完成通讯。

 

GRE实验

Tunnel是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封 。

GRE配合动态路由

 

这里使用的时OSPF,当然也可以使用RIP

注意:GRE VPN路由宣告注意事项:使用动态路由协议宣告接口时千万不能宣告公网接口(只能宣告私网路由)

posted @ 2023-04-25 08:45  杨灏  阅读(393)  评论(0编辑  收藏  举报