如何诊断Internetpath上的networking损坏?

我在networkingA上运行了几台主机,这些主机在networkingB上的某个地方向互联网上的服务器发出请求(我不拥有它们)。 不幸的是,这些请求中的许多被损坏。 如果我通过未encryption的HTTP进行请求,则会出现奇怪的错误,提示错误的请求。 如果我通过HTTPS发出请求,则会出现SSL级错误。 我可以通过运行重现该问题:

sh -e -c 'while true; do curl $SERVER > /dev/null; sleep 1; done' 

通常在20个请求中,curl失败,出现“未知的SSL协议错误”或“tlsv1警报解密错误”等错误。 我可以在networkingA中的多个主机上重现这一点,访问networkingB上的多个服务器。但是我无法从networkingA重现到其他服务器,或者从其他主机重现到networkingB.在这些情况下,循环将永远运行,没有错误。

所以很明显,我的TCPstream在A和B之间被破坏了。顺便说一下,这已经持续了3天以上。

第一个问题:这怎么可能发生? TCP具有数据包级校验和,并且通过校验和的损坏数据包应该比我所看到的less得多。 此外,如果我运行networking捕获,我不会看到许多重新传输(根据wireshark的tcp.analysis.retransmitfilter),如果数据包被损坏和TCP校验和失败,你会期望。 我猜一些路由器必须做更高级别的数据修改(NAT透明代理?)和破坏数据,但修复校验和?

第二个问题:有什么工具可以用来隔离问题吗? 我找不到任何东西。 如果我知道networking拓扑结构,并且可以在A和B之间的每跳之后findHTTPS服务器,则可以对它们运行我的testing。 但我不知道 什么其他的testing会显示networking腐败

我已经联系了networkingA和networkingB的所有者,但迄今为止他们还没有帮助。

更新:对于任何人提出什么样的越野车设备可能会在path中,有没有什么办法检测到除了联系业主之外?

是否有人使用LAN / WAN加速器? 这些硬件有时会搞砸,必须重新启动,可能是腐败的根源,也是性能问题。

首先,看看是否可以使用ping复制数据损坏,而不是使用TCP。 Ping使用一个ICMP回声,发送一个已知的有效载荷(你甚至可以指定是否需要),并在返回时有效载荷损坏的情况下报告。 至less,这是手册页告诉我的。

你可能会想要使用一个很长的数据包大小(大概是1400个字节左右),看看你是否可以指定一个很低的时间间隔,大概是0.1秒,这样就可以在合理的时间内重现错误。 这些设置将产生大约15 kB / s的来往于服务器的stream量。 (1400字节/0.1秒+开销)

那么为什么使用ping而不是TCP连接呢? 因为,您可能可以ping通服务器和客户端之间的path中的大多数主机,因此可以只testing部分path

从testing完整path开始(一直到您的服务器,以确定testing再现您的问题)。 用traceroute武装,你可以只testing一部分path。 你做的每个testing都可以把你的search空间分成两半,经过几次testing,你就能find引起问题的跳跃。

警告:如果在testing机器的返回path上发生损坏,而不是在前进path上,则这将不会如您所期望的那样工作。 Traceroute只能告诉你什么路由你的数据包正在服务器,而不是path数据包返回将采取,这些path是不是neccessarilly相同。 不过,它应该足以让你到达某个地方。

祝你好运!

在两个networking中是否只有一个flasd IDS / IPS /代理服务器只能将数据包转发到另一个networking? 这将解释为什么它不能从不同的主机重现或不重复。