如何追踪断开的 TCP 连接?

如何追踪断开的 TCP 连接?

尝试帮助某人解决 TCP 连接在几分钟后无明显原因地神秘断开的情况(这种情况甚至发生在非空闲连接)。客户端和服务器都运行 Linux,并且在本案例之外运行良好。

有充分的理由怀疑中间的某个有故障的路由器正在做这件事(其中涉及一些 NAT)。

我如何找到哪个路由器正在断开连接?

任何工具tcptraceroute但这会使 TCP 连接保持打开状态并不断探测它,直到它被丢弃?(此时我们就知道罪魁祸首是谁了)

答案1

我之前说过,追踪已建立的连接是不可能的。
然而,这是错误的。

拉坎图夫创建了0trace允许使用与已建立连接匹配的数据包进行 TCP 跟踪路由的工具。
有一个改进的版本,称为追踪,并且Python版本作者:Jon Oberheide。

这个想法是嗅探指定连接的数据包,然后注入具有匹配 TCP 序列号的数据包,同时增加 TTL(就像平常一样traceroute)。

经过几次尝试和一些运气,您可能能够找到开始丢弃数据包的跳跃,因为此跳跃也会丢弃您的跟踪数据包。

相关内容