从另一台 PC 使用 Wireshark 嗅探 SIP 数据包

Sniffing SIP packet with Wireshark from another PC

我正在尝试嗅探两台 PC 之间的 SIP 数据包。

网络拓扑就是这样(希望你不要介意一些韩语)。因此,为了解释图像,客户端 A 正试图通过 VoIP 呼叫客户端 B,而 Snipper PC 通过虚拟集线器连接到同一网络,正试图使用​​ Wireshark 嗅探 SIP 数据包。使用 X-Lite 的客户端 A 和 B 之间的呼叫成功,从客户端 A 和 B 可以使用 Wireshark 嗅探 SIP 数据包,但是当我尝试从连接到同一网络但未包含在呼叫中的其他 PC 时,Wireshark不显示 SIP 或 RTP 数据包。 如何从其他PC嗅探两台通信PC的SIP数据包?

您 PC 上的 Wireshark 将捕获其网络接口看到的数据包。

您的虚拟集线器拓扑是否没有将 A 和 B 之间的数据包镜像到 PC?

以下是一些替代解决方案:

1。 对于 MS Windows PC,您可以使用 RPCAP 远程捕获数据包,如此处所述。
不过,它需要在这些服务器上使用 RPCAP 运行ning。

https://www.wireshark.org/docs/wsug_html_chunked/ChCapInterfaceRemoteSection.html

2。 如果你想远程捕获 Linux 服务器的流量,并且你有 运行 tcpdump 的权限,你可以在你的 Windows PC
上安装 plink.exe (它是腻子包的一部分),并且 运行 为:

plink.exe -ssh -pw "your passwd" root@ip "tcpdump -ni eth0 -s 0 -w -not port 22" | "path to local wireshark.exe" -k -i -

  1. #2 的替代方法,对于 sudo 用户: 创建一个命名管道,并在该服务器上 运行 tcpdump,而 plink 只会 "cat" 管道数据。

    mkfifo /tmp/test.fifo

    chmod +r /tmp/test.fifo

    sudo tcpdump -i eth0 -w /tmp/test.fifo -s 0

    plink.exe -ssh -pw "passwd" user@ip "cat /tmp/test.fifo" | "path to local wireshark.exe" -k -i -

根据方案,客户端 A 和 B 使用 L2 交换机连接,嗅探 PC 通过集线器连接到同一个 L2 网段。 L2 交换机尝试根据 MAC-地址将数据包直接路由到目的地,因此连接到同一 L2 交换机的其他设备不会收到数据包的副本,因此嗅探失败。

您可以通过两种方式解决此问题:

  1. 将客户端 A 或客户端 B 直接插入与嗅探 PC 相同的集线器。
  2. 在 L2 交换机上设置端口镜像,明确指示它将所有必要的数据包转发到嗅探 PC 使用的端口。在这种情况下,不需要集线器。

detailed tutorial 这些方法和其他方法可以使用非常有用的图片设置捕获。