路由与交换系列之GRE VPN 技术原理笔记分享

简介: GRE VPN 技术原理笔记分享

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

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

 

GRE:Generic Rrouting Encapsulation,通用路由封装协议。

一种三层的VPN封装技术。

在任意一种网络协议上传送任意一种其他网络协议的封装方法。

解决了跨越异种网络(不是一种网络)的报文传输问题,异种报文传输的通道被称为隧道(Tunnel)。

异种网络:不是同一种网络,这些网络默认是不兼容的,通讯是有问题的。

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

GRE优点 

GRE缺点 

建立隧道 

点到点隧道 

(一个点到一个点,多个点就要多个隧道口) 

支持多种网络层协议 

静态配置隧道参数 

支持组播路由 

部署负责,连接关系时代价巨大 

配置简单,容易部署 

缺乏安全性(最大的致命伤) 

 

 

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

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

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

GRE over IPsec是实际应用场景较多的,GRE隧道一般很少单独使用,因为不安全, 所有用IPsec来保护,当然IPsec也可以单独使用。IPsec虽然很强大,有自己的隧道和加密技术,但是IPsec不支持路由组播,而GRE支持,所以使用IPsec保护GRE进行安全传输。所以是先有GRE然后再由IPsec来保护GRE,这也就是GRE over IPsec,这是实际需求的一种用法。

 

GRE封装穿马甲

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


GRE头部

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

 

GRE报头详解

协议号为47,经过GRE封装后,新的IP报头的协议号为47。GRE报头里面还有载荷协议,用于判断上层是上面类型。

GRE封装后报头

 

 

GREVPN转发过程详解:

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

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

 设备加了一个GRE头部,同时会有新的IP头部,这个新的IP头部,会有新的源和目标IP地址就是建立时的隧道源和隧道目标

隧道口的意义在于设备查找路由时找到出接口是隧道口,或者下一跳是隧道目标。

因此,私网数据报文保留,加上GRE报头和新的IP报头(隧道源和隧道目标)。

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

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


GRE通讯流程图


GREVPN配置:

命令 

备注 

Interface tunnel 0/x/x 

创建隧道口。 

Tunnel-protocol x 

指定协议。 

source 

指定隧道源/接口/IP。 

destination 

指定隧道目地/IP。 

Ip address x 

添加隧道口地址(必须) 

Ip route-static d m tp 

配置静态隧道口。 

d=目的 m=掩码  tp=隧道接口/宣告口 

Dis int tunnel x 

查看隧道口信息。 

Keepalive period 5 retry-times 3 

开启Keepalive避免数据黑洞。 

Gre checksum/key  

配置简单校验/验证 

 


GREVPN路由宣告注意事项:使用动态路由宣告时,千万不能宣告公网接口(只能宣告私网路由

如果a宣告了公网地址,那么b就会通过a的隧道口学习到这个公网地址,这个时候b的隧道目标就出现问题了,有两条路由,一是物理口的缺省,二是往隧道口的隧道目标,b向a发送数据报文时,会进行封装,如何通过隧道目标发送出去,然而隧道目标的下一跳还是隧道口,这样子就有问题了,会一直递归封装。

 

GREVPN隧道口虚假状态:只要设备上有到隧道目标的路由,那么隧道口即可激活。

隧道口激活UP状态很简单,只要有去隧道目标的路由,即可启用隧道口,他不判断隧道目标链路是否正常,没有检测机制,如果中间链路出现故障,那么会造成业务中断。

解决办法:开启keepalive,开启后,会通过隧道发送keepalive的数据包让对端回复,周期性发送用于检测对端隧道是否可达。会发送keepalive message ,对端隧道会进行keepalive reply 回复。

目录
相关文章
|
安全 网络协议 算法
路由与交换系列之VPN基础笔记分享
路由与交换VPN基础笔记分享
418 0
|
6月前
|
网络协议 PHP 网络虚拟化
BGP MPLS VPN(OPTION C)实验笔记
BGP MPLS VPN(OPTION C)实验笔记
163 1
|
6月前
|
网络协议 PHP 网络虚拟化
BGP MPLS VPN(OPTION B)实验笔记
BGP MPLS VPN(OPTION B)实验笔记
143 0
BGP MPLS VPN(OPTION B)实验笔记
|
安全 网络协议 算法
路由与交换系列之VPN基础笔记分享
路由与交换VPN基础笔记分享
284 1
|
网络协议 安全 网络安全
|
网络虚拟化
MPLS VPN跨域C2 RR反射器方案(二)
MPLS VPN跨域C2 RR反射器方案
140 0
|
网络虚拟化
MPLS VPN跨域C2 RR反射器方案(一)
MPLS VPN跨域C2 RR反射器方案
149 0
|
网络虚拟化
MPLS VPN跨域C1方案 RR反射器(二)
MPLS VPN跨域C1方案 RR反射器
86 0
|
3月前
|
网络协议 Shell 网络虚拟化
手把手教你玩MPLS VPN如何配置
手把手教你玩MPLS VPN如何配置
268 0
|
5月前
|
网络协议 网络虚拟化 网络架构
MPLS VPN协议高级应用
MPLS VPN协议高级应用