《跟唐老师学习云网络》 - GRE,用于网络走私的隧道

举报
tsjsdbd 发表于 2019/01/12 13:11:31 2019/01/12
【摘要】 上一课我们介绍了vlan报文,知道它是实现网络“分组”的元老,也就是实现云网络(虚拟的假象)的基石。今天我来看看网络中的另一位元老,走私鼻祖GRE。

一、背景


上一课我们介绍了vlan报文,知道它是实现网络“分组”的元老,也就是实现云网络(虚拟的假象)的基石。今天我来看看网络中的另一位元老,走私鼻祖GRE。



二、什么是走私


普通的走私,我们不扣细节的看,走私就是过海关的时候,表面看挺正常,实际里面藏着其你想要携带的东西。

例子很多,比如:

736666029.jpg


那网络走私又是什么呢? 简单的说,就是在一个公开的协议上,传输一些“私有的数据”,从而完成夹带私货。

还是看图展示一下大致流程:

GRE隧道1.PNG

当报文的发货方和收货方商量好“规则”之后,中间所有人都不知道他们在传输什么内容了~因为中间检查都是正常的。

上图我们举个具体的例子:

GRE隧道2.PNG

IP报文看到自己在传输TCP,正常,放过。

TCP看到自己在传输HTTP,正常,放过。

HTTP检查正常,放过。

谁能知道,我只是通过HTTP走私点“干货”?


这里代表着:只要在网络上,有一种协议是通的,你就无法阻止通过这个公开的协议传输特定的内容。

这就是网络走私了。



三 、GRE是怎么走私的


先看看GRE报文的格式,然后看看上一章节走私的介绍,就会明白。

隧道-GRE.jpg

我把我要传输的内容(绿色部分),放在一个公开的IP报文里面(黄色部分)。

这里就好像,黄色部分走正常通道,如黄色地址先从美国发货到中国,正常通过。

在成功到达中国之后,那就是本端内部搞定了。拿出绿色部分,还有一层地址呢,然后国内真正发往想要的客户。至此GRE走私过程完成。



四、为什么叫GRE隧道


走私的方式有很多,长期走私的话,隧道是一种比较好的理解是方式。

看我找的图你就明白了:

23030980.jpg

23030982.jpg

23030983.jpg

当你把货物源源不断的从走私通道传输的时候,它就像一个隧道一样,不停的流动起来。这个就是GRE隧道协议了。



五、GRE隧道和云网络

云计算雏形.PNG

这种走私方式,用在云网络里面,其实就是张三的货,通过正常通道先从美国发往中国,当到达中国之后,再内部分发,从而完成“走私隧道”。

这样张三走张三的走私隧道,李四走李四的走私通道,在感知上,两个人是互相不相干的,从而形成虚拟网络通信。(在同一个线路上,你走你的,我走我的,互相不感知,可以参见上一节的vlan门派介绍,云网络基石章节)。


VPN隧道,其实用的就是上图这样的模式,把一端的局域网,和远处另一端的局域网,隐含的“桥接”起来。

vpn.PNG

左边的人,认为和右边的人在同一个局域网里面。中间的网络只是走私的通道的“载体”而已,看不到,也不用关心。(ps,因为有承载隧道的这种载体能力,也就是可以在一种协议上,跑另一个网络协议。所以这种隧道网络,有时候也可以叫 OverLay 网络)。

这样隧道就有能把多个不同地方的局域网“连接”在一起能力,从而形成了云网络的模型。


两头的局域网“透明”的接在一起,这个就是隧道的魅力了。可以看到kubernetes里面的flannel网络,用的就是这种隧道原理。

k8s.png

你看它可以把每个节点上面的局域网,全部接在一起,让不同节点里面的容器以为自己在一个大的相同的局域网里面


六、总结

你看,从vlan、gre的出现,一开始只是为了解决报文分门别类、互不干扰,到他们逐渐在云网络里面大展身手成为云网络的基石。这里面其实核心的思路就是:所有的云网络,其实都是障眼法。也就是你想让它(虚拟机/容器)看到它以为的样子。即它自己是不能发现自己在真实网络里面还是虚拟网络里面的。这个跟一个app程序,自己是不知道自己跑在虚拟机里面,还是跑在物理机里面是一样的。

这种对于真实世界的模拟,使得目标看到的假象跟真的一样,不仅仅是云网络,更是云的本质。

ps:这里预告一篇我关于这种云假象的思考,《云、基因和上帝》,欢迎关注。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。