ILB配置后telnet不通

ILB后端server去telnet ILB 80测试,发现有时链接成功,有时超时失败,经过子网中别的server去 telnet ILB 80 没有问题,HTTPserver1和HTTPserver2的本地telnet localhost 80也没问题。后端



1.这个问题能够总结为当ILB后端server 1 Telnet ILB 80时,若是ILB把流量转发到server2 ,则会Telnet成功,若是ILB把流量转发到server1自身,则会失败。ide

2.根据咱们的测试和后台的确认,Azure ILB会对进入的流量作DNAT,对于内部server出去的流量,会作SNAToop

blob.png


情景1:当server1 去telnet  ILB 80时,ILB将流量转发到server2时会出现Telnet成功,这时ILB会对目的地址作一个转换,转换成server2的ip。此时这个请求的格式会变成测试

目的MAC:server2的MACspa

MAC:ILB的MAC设计

IP:server2 的IP10.0.1.6server

ip:server1的IP10.0.1.5blog

Server2回复这个包的时候,因为ILB充当的是网关的做用,因此这个包会回给ILB,ILB收到以后,会对这个包作一个SNAT,将原地址转换成ILB的地址。因此咱们在server1上抓包的结果是Server1在和ILB 通讯,可是在server2上抓包时,会看到server2在和server 1通讯。ip

 

情景2:当server1去telnet  ILB 80时,ILB将流量转发到server1自身时会出现Telnet失败。这是由于ILB会对流量作一个DNAT。格式是虚拟机

目的MAC:server1 MAC

MAC:ILB MAC

目的IP:Server 1 的IP 10.0.1.5

ip:server1的IP,10.0.1.5

    当server1收到上述包以后,就会开始构建回包,此时他查到目的IP是自身,这样的包属于loopback环回包。会直接在虚拟机里丢弃。

目的IP:Server 1 的IP 10.0.1.5

ip: server 1ip 10.0.1.5

 

在虚拟机里抓包会看到虚拟机会每隔3s从新发出 SYN包。但没有收到ILB回复的ACK包,因而Telnet显示结果就会出现timeout


工程师建议:

=========== 

   这是平台ILB的设计和TCP/IP 协议原理决定的。后端server不做为Client便可避免这个问题。

相关文章
相关标签/搜索