出站数据包丢弃/超时 - 仅适用于 Azure

And*_*lin 6 timeout azure packet

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

我已经和数据中心的网络管理员谈过了,他们看到的唯一数据包是那些没有超时的数据包;超时的数据包永远不会到达他们的防火墙,所以这听起来像是 Azure 端的东西(特别是因为数据包从多个 Azure 数据中心/区域持续丢弃/超时)。有谁知道我如何解决这个问题?

我正在运行的测试是对端口 80的连续 TCP ping(使用tcping.exe)(因为 ICMP 在 Azure 上被阻止):

tcping -t 216.155.111.149 80
tcping -t 216.155.111.151 80
tcping -t 216.155.111.146 80
Run Code Online (Sandbox Code Playgroud)

支持它不是第三方数据中心这一事实的其他证据是,我可以从我的家用计算机/工作计算机运行相同的连续 TCP ping 并且不丢弃任何数据包。我还设置了从 Azure VM 到非 Azure 数据中心的 VM 的隧道 VPN,并且没有丢弃任何数据包。数据包被丢弃的唯一时间是流量直接通过 Azure 传到 Internet/WAN 时。

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

nmap -sS -p 80 -Pn --traceroute 216.155.111.149
Run Code Online (Sandbox Code Playgroud)

测试1

测试2

测试3

测试4

Ped*_*rez 3

正如我在评论中提到的,您实际上遇到了本文中描述的类似场景

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

问题转载

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

问题已解决

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

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