在美国佛罗里达州的一个第三方数据中心,我遇到了一个问题。 这个问题只发生在Azure虚拟机上,不pipe这个虚拟机在哪个数据中心。我从其他非Azurenetworking同时进行了相同的testing,没有丢包。 Azure虚拟机是“香草”/开箱即用,没有加载软件或其他定制/更改。
我已经和数据中心的networkingpipe理员进行了交stream,他们看到的唯一的数据包就是那些没有超时的数据包。 超时的数据包永远不会到达他们的防火墙,所以这听起来就像Azure方面的东西(尤其是因为数据包始终从多个Azure数据中心/区域丢弃/超时)。 有谁知道我可以解决这个问题?
我运行的testing是连续的TCP ping(使用tcping.exe )到端口80(因为ICMP在Azure上被阻塞):
tcping -t 216.155.111.149 80 tcping -t 216.155.111.151 80 tcping -t 216.155.111.146 80
其他证据支持它不是第三方数据中心的事实是,我可以从我的家庭计算机/工作计算机运行相同的连续TCP ping,并丢弃任何数据包。 我还从Azure虚拟机到非Azure数据中心的虚拟机build立了隧道VPN,并且不丢弃数据包。 数据包被丢弃的唯一时间是stream量通过Azure直接发送到Internet / WAN。
我知道下一步将是一些跟踪路由testing,但是由于Azure阻塞了ICMP,我不得不使用nmap来运行TCP跟踪路由 。 下面粘贴的是这些testing的截图。
nmap -sS -p 80 -Pn --traceroute 216.155.111.149
正如我在我的评论中提到的,您正在实现本文中所述的类似场景。
我可以很容易地重现你的行为:
我可以通过向VM添加一个实例级公共IP来轻松解决这个问题:
由于我们没有同时捕获,所以很难说出究竟是什么,但我的理解是,远程站点(www.oandp.com)上的边缘设备(可能是防火墙)在其连接上保持closures连接表的时间比Azure长,所以当Azure使用一个已释放的(即已经使用的)端口,并且远端仍然认为连接没有完全closures时,我们的SYN数据包就会被丢弃。
ILPIP使用静态NAT或“一对一NAT”,因此没有端口转换和端口重用(除非您的操作系统是这样做的),从而避免了这个问题。