Kubernetes网络系列之(九)网络骗子



因为接下来的网络世界变得略显复杂,为了让大家看懂其中的门门道道,为师要教大家一点识别常见骗局小伎俩。

背景

因为接下来的网络世界变得略显复杂,为了让大家看懂其中的门门道道,为师要教大家一点识别常见骗局小伎俩。

双簧骗局

一般大家能够达成共识的是:但凡比较经典的骗局,都是以双簧骗局为多。这种骗局特别容易让受害者晕头转向,轻易地上了套。大概使用如下这种套路:

image

首先你遇到了一个看着挺和蔼的普通人(这个人可能是刚认识的,也可能是认识很久但也仅限平时业务需要,并不是那么知根知底,此人简称小伙伴)。然后有一天你们一起办点事情,路上遇到了另外一个人(此人简称第三者):

image

故事有可能是这个第三者主动来搭讪,也可能是一开始的小伙伴故意带领,但不管怎样,你已经把你自己和一开始的小伙伴当做是一个团体的了。

这时候如果第三者提出需求,并且小伙伴接受了这个需求,但是能力又恰好还差一点点。这时你就会很英勇的站出来帮助你的小伙伴了。因为你很坚信小伙伴跟你是一伙的,会快速还你这一份欠款。殊不知,人家两个才是真正一伙的。

网络骗子

云网络世界,有很多这样的骗局,我们程序所发出的报文,就是这些双簧骗局的目标。好了,现在我们找一个经典网络骗局扒开来看一看:

image

在云上,你要发送报文到目标程序。首先在报文出门前,你咨询了一下老朋友(骗子A),他告诉你:哦,你的目的地在xxx,你很相信它,所以你就把报文往xxx发出去了。可是报文刚出门,就遇到了骗子B。哇靠,刚出门就遇到骗子B,为什么这么巧呢?那是因为他一直在这里等你啊。你忘记啦,他跟骗子A是一伙的,是骗子A故意让你把报文往他这里发的。所以你的报文就被骗子B随便宰割啦,发往它所操控的任意地方。

这个骗局中有一个重点可以再回顾一下,不管第一个骗子跟你说了目的地是什么,你的报文都会跑到第二个骗子那里。比如:

“哦,你的目的地在xxx”。你的报文跑到了第二个骗子那里。

“你这个目的地跟其他人不一样,是在yyy”。你的报文还是跑到了第二个骗子那里。

“这个呢,是在zzz”。还是到第二个骗子那里。

唯一的区别就是第二个骗子,知道你是因为什么原因受骗的。

看到这里,你似乎可以明白,在云上,网络控制做得好,双簧必须演得好。

骗子身份

那好奇的人会问,两个骗子具体又是什么呢?典型双簧组合 DNS + Load Balancer

image

云上面对方程序可能有多个实例,并且实例数量可能还随时间变化(比如配有自动扩容策略),所以访问不可能使用传统IP的方式。所以云提供者一般都说:请使用对方名字访问,用对方名字就可以通。

注意了,一旦说到使用名字就可以互通,那就肯定要进入PaaS设定好的双簧骗局啦。更有甚者,直接跳过第一个骗局,直接进入第二个骗局(但是总的来说,没有双簧效果好,对受害人也不够人性化)。

五、举例

Kubernetes里面的kube-proxy,就很好的利用了这个骗局:

image

所以在Kubernetes平台上,可以直接使用Service Name互相通信。当你拿着一个“名字”换回来的 clusterIP,其实是一个根本不存在的IP,它的唯一作用是引领你前往骗子B处(也就是kube-proxy),所以clusterIP一般选冷门的IP,万一跟真实存在的IP冲突了骗局就很尴尬了。

说到底,云网络,满满的都是套路啊。