什么是GRE隧道?GRE隧道原理原理

蜗牛vps教程2022-10-032130

什么是 GRE?

通用路由封装或 GRE 是一种协议,用于将使用一个路由协议的数据包封装在另一协议的数据包中。“封装”是指将一个数据包包装在另一个数据包中,就像将一个盒子放在另一个盒子中一样。GRE 是在网络上建立直接点对点连接的一种方法,目的是简化单独网络之间的连接。它适用于各种网络层协议。

封装的数据包——将不受支持的数据包放在网络支持的数据包内

GRE 允许使用网络通常不支持的协议,因为数据包被包装在其他确实使用受支持协议的数据包中。要了解其工作原理,请想像一下汽车和渡轮之间的区别。汽车在陆地上行驶,而渡轮在水上行驶。汽车通常不能在水上行驶,但是可以将汽车装载到渡轮上。

在这个类比当中,地形类型好比是支持某些路由协议的网络,而车辆则好比是数据包。GRE 是一种将一种类型的数据包装载到另一种类型的数据包中的方式,以便第一个数据包可以穿越它通常无法穿越的网络,就像一种类型的运输工具(汽车)被装载到到另一种类型的运输工具(渡轮)上,以便穿越原本无法行驶的地形。

例如,假设一家公司需要在位于两个不同办公室的局域网(LAN)之间建立连接。两个 LAN 都使用最新版本的 互联网协议 IPv6。但是,为了从一个办公网络到达另一个办公网络,流量必须通过一个由第三方管理的网络 — 该网络有些过时,仅支持较旧的 IPv4 协议。

借助 GRE,该公司可以将 IPv6 数据包封装在 IPv4 数据包中,然后便可通过此网络传输流量。回到那个类比,IPv6 数据包是汽车,IPv4 数据包是渡轮,而第三方网络则是水。

GRE 隧道是什么意思?

将数据包封装在其他数据包中称为“隧道”。GRE 隧道通常配置在两个路由器之间,每个路由器的作用好比隧道的一端。路由器设置为彼此直接发送和接收 GRE 数据包。两个路由器之间的任何路由器都不会打开封装的数据包;它们仅引用封装数据包外层的标头进行转发。

为了理解为什么将其称为“隧道”,我们可以对类比稍作更改。如果汽车需要从山一侧的 A 点绕到另一侧的 B 点,则最有效的方法就是直接穿过大山。但是,普通汽车无法直接穿过坚硬的岩石。因此,汽车必须一直绕着山脉行驶,才能从 A 点到达 B 点。

但不妨想象一下有条隧道穿过了山体。现在,汽车可以从 A 点直行到 B 点,这要快得多,而且没有隧道就无法做到。

现在,把 A 点视作一台联网设备,把 B 点视作另一台联网设备,再把大山视作两台设备之间的网络,将汽车视作需要从 A 点行到 B点的数据包。想象一下,这个网络不支持 A 点和 B 点设备需要交换的那种数据包类型。就像汽车试图穿越大山一样,数据包无法直接通过,可能需要通过其他网络走上更长的路。

但 GRE 创建了穿过“大山”网络的一个虚拟的“隧道”,以允许数据包通过。就像隧道为汽车提供了一种直接穿过陆地的方式一样,GRE(以及其他隧道协议)也为数据包穿过不支持它们的网络提供了一种方式。

GRE 标头中包含什么?

通过网络发送的所有数据都被分解为较小的部分,称为数据包,所有数据包都包括两部分:有效负载和标头。有效负载是数据包的实际内容,即正被发送的数据。标头包含有关数据包来自何处以及它属于哪个数据包组的信息。每种网络协议都会将标头附加到每个数据包上。

GRE 向每个数据包添加两个标头:GRE 标头(4 个字节长)和 IP 标头(20 个字节长)。GRE 标头表明封装数据包所使用的协议类型。IP 标头封装了原始数据包的标头和有效负载。这意味着 GRE 数据包通常包含两个 IP 标头:一个用于原始数据包,另一个由 GRE 协议添加。仅 GRE 隧道两端的路由器将引用原始的、非 GRE IP 标头。

GRE 的使用如何影响 MTU 和 MSS 要求?

MTU 和 MSS 是用来限制通过网络传输的数据包最大长度的度量单位,就像对过桥车辆限重一样。MTU 测量数据包的总大小,包括标头;MSS仅测量有效负载。超过 MTU 值的数据包将被分成几段或分解成较小的数据包,使之适合在网络上传输。

像任何协议一样,使用 GRE 会在数据包原有大小基础上增加几个字节。在数据包的 MSS 和 MTU 设置中必须考虑这个因素。如果 MTU 设为 1,500 字节,MSS 设为 1,460 字节(考虑到必要的 IP 和 TCP 标头大小),则增加 GRE 24字节标头将导致数据包超过 MTU 限值:

1,460 字节 [有效负载] + 20 字节 [TCP 标头] + 20 字节 [IP 标头] + 24 字节 [GRE 标头+ IP 标头] = 1,524字节

因此,数据包将被分段。分段会减慢数据包传递,并增加算力开销,因为超出 MTU 的数据包必须分解然后重新组合。

通过减少 MSS 长度以包含 GRE 标头,可以避免这种情况。如果将 MSS 设置为 1,436 而不是 1,460,那么,GRE 标头的问题就得到了解决,并且数据包不会超过 MTU 值 1,500:

1,436 字节 [有效负载] + 20 字节 [TCP 标头] + 20 字节 [IP 标头] + 24 字节 [GRE 标头+ IP 标头] = 1,500 字节

尽管避免了分段,但结果却是有效载荷变小,这意味着需要额外的数据包来传递数据。例如,如果目标是传递 150,000 字节的内容(或大约 150 kB),假设 MTU 设置为 1,500,且未使用其他 3 层协议,那么,比较一下使用 GRE 和不使用 GRE 时分别需要多少个数据包:

不使用 GRE,MSS 为 1,460: 103 个数据包

使用 GRE,MSS 为 1,436: 105 个数据包

额外的两个数据包会增加毫秒级的数据传输延迟。但是,使用 GRE 比不使用 GRE 可以使这些数据包选择更快的网络路径,进而可以弥补损失的时间。

在 DDoS 攻击中如何使用 GRE?

在分布式拒绝服务(DDoS)攻击中 ,攻击者试图用垃圾网络流量淹没目标服务器或网络,这有点像用虚假的订单轰炸一家餐馆,直到它无法为合法客户提供服务。

就像任何网络协议一样,GRE 可以用来进行 DDoS 攻击。有史以来最大的 DDoS 攻击之一发生在 2016 年 9 月。它针对安全研究人员的网站,并使用 Mirai 僵尸网络进行攻击。该网站被使用 GRE 协议的数据包淹没。

与某些其他协议不同,GRE 数据包的源无法被伪造或欺骗 。为发起大型 GRE DDoS 攻击,攻击者必须控制僵尸网络中大量真实存在的计算设备。

如何防御 GRE DDoS 攻击?

蜗牛vpsCDN可抵御各种网络层 DDoS 攻击 ,包括使用 GRE 的攻击。蜗牛vpsCDN通过将蜗牛vps全球网络的 DDoS 缓解功能扩展到网络基础设施来保护本地 云和混合网络。任何攻击网络流量都会被过滤掉,而不会减慢合法流量。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram