出站数据包丢失/超时 - 仅限 Azure

出站数据包丢失/超时 - 仅限 Azure

我遇到了数据包丢失到美国佛罗里达州第三方数据中心的问题。该问题仅发生在 Azure 虚拟机上,无论虚拟机位于哪个数据中心。我已从其他非 Azure 网络同时进行了相同的测试,没有数据包丢失。Azure 虚拟机是“原始”/开箱即用的,没有加载任何软件或其他自定义/更改。

我已经与数据中心的网络管理员进行了交流,他们看到的唯一数据包是不会超时的数据包;超时的数据包永远不会到达他们的防火墙,因此这听起来像是 Azure 方面的问题(尤其是因为来自多个 Azure 数据中心/区域的数据包不断丢失/超时)。有人知道我该如何解决这个问题吗?

我进行的测试是连续的 TCP ping(使用tcpping命令)到端口 80(因为 Azure 上的 ICMP 被阻止):

tcping -t 216.155.111.149 80
tcping -t 216.155.111.151 80
tcping -t 216.155.111.146 80

支持它不是第三方数据中心的其他证据是,我可以从我的家用计算机/工作计算机运行相同的连续 TCP ping,并且不会丢失任何数据包。我还设置了从 Azure VM 到非 Azure 数据中心的 VM 的隧道 VPN,并且没有数据包丢失。唯一丢包的情况是当流量直接通过 Azure 流出到互联网/WAN 时。

我知道下一步是进行一些跟踪路由测试,但由于 Azure 阻止 ICMP,因此我不得不使用nmap 运行 TCP 跟踪路由;下面粘贴的是这些测试的截图。

nmap -sS -p 80 -Pn --traceroute 216.155.111.149

测试1

测试2

测试3

测试4

答案1

正如我在评论中提到的那样,您实际上遇到了与本文

我可以很容易地重现你的行为:

问题重现

我可以通过添加一个来轻松解决这个问题实例级公共 IP到虚拟机:

问题已解决

很难说清楚到底发生了什么,因为我们没有同时捕获的数据,但我的理解是,远程站点(www.oandp.com)上的边缘设备(可能是防火墙)在其连接表上保留关闭的连接的时间比 Azure 更长,因此当 Azure 使用其中一个释放的(即已经使用的)端口,而远程端仍然认为连接未完全关闭时,我们的 SYN 数据包就会被丢弃。

ILPIP 应用静态 NAT 或“一对一 NAT”,因此不存在端口转换或端口重用(除非您的操作系统这样做),从而避免了该问题。

相关内容