Wireshark不会拿起从本地主机通过networking发送到本地的数据包

我在Windows上运行,并试图让Wireshark拿起我的networkingstream量。 除了我在本地系统上运行的客户端/服务器之外,它可以很好地提供所有出站和入站通信。 实际上,即使我通过LAN IP发送数据包,它仍然没有收到stream量。 Windows有可能是一些聪明/愚蠢的行为,所以它不能通过networking传播? 有什么我可以做的强制数据包蜿蜒沿着预期的path(即走出我的路由器,回来,让Wireshark可以看到它)?

我想要的是确保发送到192.168.xx的数据包不会被redirect到127.0.01,Wireshark无法嗅探数据包。 我怀疑Windows正在检测到我正在连接到同一台计算机,并且正在通过跳过networking来“聪明” – 我需要停止这样做。

这就是Windowsnetworking的工作方式 – 没有回送适配器,具有相同源地址和目标地址的stream量永远不会下降到驱动程序堆栈,因此永远不会到达Winpcap驱动程序。

Wireshark维基还有一些关于这方面的更多信息,包括可能有所帮助的Microsoft Loopback适配器的一些解决方法。

你可以尝试一种名为“ 发夹式NAT ”的技术,通过一个外部路由器/个人电脑来连接你的数据包。 这将迫使Windows实际上通过NIC发送和接收数据。

具体做法如下:设置一个带有两个networking接口的路由器:networking上的一个接口(例如:192.168.66.0/24),以及“假”networking上的一个接口(如:10.10.66.0/24)你的testing。 (我假设你的PC的地址是192.168.66.100,路由器的网卡地址分别是192.168.66.254和10.10.66.254)。在路由器上,你设置了两个NAT规则(用iptables-save格式):

 -t nat -A PREROUTING -p tcp -d 10.10.66.254 --dport 80 -j DNAT --to-destination 192.168.66.100 -t nat -A POSTROUTING -p tcp -s 192.168.66.0/24 -d 192.168.66.100 --dport 80 -j SNAT --to-source 192.168.66.254 

第一个规则是一个标准的“端口转发”规则,它将所有的stream量限制为10.10.66.254:80发送到192.168.66.100。 第二条规则是“发夹式NAT”的关键。 它使来自192.168.66.0/24networking的所有stream量和192.168.66.100:80的stream量似乎来自路由器的本地接口(192.168.66.254)。 第二条规则是强制客户端和服务器(位于同一networking192.168.66.0/24)通过外部路由器路由其数据包,而不是直接向对方发送数据。

使用此设置,现在可以使用Wireshark捕获Windows NIC上的客户端/服务器通信。 客户端通过连接到“假”地址10.10.66.254:80发起,服务器应该看到相应的来自192.168.66.254的stream量。

如果您在方框中有第二个网卡,您可以设置加权指标,让您的应用程序监听较高权重的指标。 机器应该出去寻找低权重的界面上的应用程序,这可能会让你赶上交通。

我没有证实,这将工作,但这是一个想法尝试(如果你有两个NICS在机器上)