是否有可能捕获路由器的数据包?

我面临的一个问题是一些从networking内部发送到互联网的数据包丢失了。 我们使用的模式如下所示:

Client A ←→ Switch A ← Router A:NAT ← .. Network .. → Router B:NAT → Switch B ←→ Server B 

我想通过以下两个步骤来追踪这个问题:

  1. 捕获Router B上客户端A的报文
  2. 检查Router B的转换表

两种行动都可能吗?

更多信息:

  1. 客户端A在Windows XP上运行
  2. 服务器B运行在Linux(Fedora上)。
  3. 路由器B使用静态端口和地址转换表,这意味着进入的数据包
    到特定的端口将被转发到服务器B.
  4. 路由器A和路由器B都是TPLink WR340 +产品。
  5. Router A和Router B都有Full-cone NAT。
  6. 交换机A是DLink DES-1024R,交换机B是DLink DES-1016D。

我之所以要执行这两个操作,是因为我们发现数据包是从ClientA的networking接口发出的,但是由于原因不明,ClientA机器的TCP内核从未接收到来自另一个端点的ACK数据包,传输,直到超时。 而从服务器端来说,同样使用Tool WireShark,我们发现服务器B机器的networking接口永远不会收到客户端A发送的数据包。我猜这些数据包是由路由器B丢弃的,所以我想知道是否有可能在路由器上捕获数据包B.

其实这个问题只发生在我们有两个客户端时,比如客户端A和客户端C,客户端A和客户端C不直接相互通信,而是和服务器B通信。

当我们拔掉客户端A机的网线,并在客户端A的另一台机器上login,大约30秒后,客户端A开始与服务器B进行TCP通信,第一个很多的命令都正常,不能再接收到来自客户端A的任何命令。

服务器B从未收到数据包

如果你从服务器B运行Wireshark是好的; 如果没有,请考虑你需要一个pipe理交换机来configuration连接到Wireshark PC的“mirror / span / monitor”端口。

我会坚持使用Wireshark移动它来查看路由器B和交换机B之间的数据包(可以添加一个集线器插入wireshark的PC?)

如果数据包没有到达网段RouterB-SwitchB,那么你在RouterB(为了绕过它的NAT服务)上的端口转发可能不能正常工作,或者路由器只是没有路由你的stream量。

我认为获得更多信息是非常重要的,交换机不会做NAT(但是路由器),而不同的路由器的能力差别很大。 在谈到交换机或路由器时,我从来没有听说过“检查转换表”这个术语,但是我确实理解你在路由器方面的含义。

如果使用简单的networking工具,你很可能会发现NAT的知识和检查翻译表等等, 我使用的第一个工具是来自客户端A的“WinMTR”。保持运行一点点(分钟?),同时查看是否和在哪里发生丢包。 这将给你一个非常好的主意,在哪里看得更远。 [查看延迟时间的延迟和尖峰也会给你一些提示,如果你知道要看什么]。

对于有人提供更多的帮助,你可能想提供更多的细节,为什么你相信数据包将失踪,以及问题的特点。

以下是几个想法的概述,也可能有其他人知道如何详细说明。

使用Linux机器路由器。

也许番茄或DDWRT可以。 所以如果你的路由器支持这个固件/如果你买了一个支持它的,你可以试试。

您评论说: "The reason why I want to perform the two actions is that we found packets were sent out of the network interface of ClientA, but due to unknown reason the TCP kernel of ClientA machine never receives any ACK packet from the other endpoint, thus it enters data transmission until timeout. And from the server side, also using Tool WireShark we found the network interface of Server B machine never receives the packet sent from client A, of course it was not able to send any ACK packet back to ClientA."

也许路由器损坏,或者你有一个错误的电缆。

我喜欢有趣的想法,看看你的路由器正在发生什么,有可能是一个更好的路由器,或更好的固件。 但是,如果你可以/想要这样做,那么你可能有或需要一个更好的路由器,或更换一个尝试。 不要忽视基本的故障排除技术,猴子types逻辑,比如交换零件!

这只是一个有问题的方法吗? 像A-> B。 或者B-> A呢? 你可以在那里解决一些问题,比如换电缆。 交换他们连接的端口。