阿里云SLB之内网调用问题

阿里云内网SLB使用:

 

ECS(A) —–> SLB(TCP)  —–> ECS(B)

 

我们来看看数据包路径:

ECS(A)【 IP(A) –> IP(SLB) 】  ======> SLB (目的地址转换,源地址不转换) ========> ECS(B)【 IP(A) —-> IP(B) 】

那么, ECS(B)该如何回包呢?

因为ECS(B)认为数据包是从ECS(A)过来的,自然回包给ECS(A),而事实上ECS(B)是可以直接访问到ECS(A)的,于是乎,不经过SLB就直接回包了; 那么,数据包到了ECS(A)能被认可吗?

当然不会,因为ECS(A)只知道给SLB发送过请求,不知道给ECS(B)发送过请求。

 

所以, 对于这种情况,SLB的TCP模式是行不通的。同理,UDP模式也是不行的。

只要回包离开了ECS(B),就会被SLB看到,就会被地址转换后在发送给ECS(A), 所以,这种场景是没问题的。

下面场景是有问题的:(如果SLB后面有多台机器,SLB就可以把来自A的请求转发到非A的机器上,自然也就没问题了)

ECS(A) —–> SLB(TCP)  —–> ECS(A)

 


问题:

对于第一种场景,如果ECS(A)和ECS(B)不在同一个网段(似乎不行)也就算了,当ECS(A)通过SLB(tcp)访问ECS(B)时,会不会影响到ECS(B)上记录的ECS(A)的mac地址?

实际情况却是:

node-1(172.16.31.99) 和 node-2(172.16.31.100)以及gateway的mac地址都是一样的; 如此看来,阿里的网络设备甚至操作系统都是定制的了?

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据