想 2009-04-29
这是一篇翻译的文章,原文在http://wiki.wireshark.org/CaptureSetup/Loopback
下面的部分解释了如何在回环接口上抓包。
如果你准备抓取一台机器到自己的报文,则这个报文将不会经过实际的网络适配器,即使报文是发往这台机器上的某个网络适配器地址。这也意味着当你抓包的时候是看不到报文的,如在含有指定目的地址的网络适配器上操作。而你只能在回环接口上抓包,如果存在这样一个接口并且允许抓包的情况下。在下一节中将看到可以支持回环接口抓包的平台信息。
支持的平台
看看CaptureSetup/NetworkMedia来了解Wireshark所支持的平台。总结一句话:可以在Linux、类BSD包括Mac OS X、Digital/Tru64 Unix上抓取回环接口报文,可能能在Irix和AIX上使用,而在Solaris、HP-UX、Windows下则不能抓取回环接口报文。
Windows
IP127.0.0.1
You can't capture on the local loopback address127.0.0.1!
你不能在回环接口地址127.0.0.1上抓包!
IP Other
其他IP
你可以增加一个虚拟网络适配器设备叫做Microsoft Loopback Adapter,但是大部分时间不会得到想要的结果。
这个网络适配器可以通过下面的方法安装(Windows 2003/ XP / 2000):
...需要注意是,这里的回环接口和大部分UN*X系统中的表现是不一样的。这个适配器是一个可以增加的虚拟网卡设备,但是它不是工作在127.0.0.1 IP地址上的,而是有着自己的IP地址。另外,你只能在系统中增加一个回环接口设备。
注意:在此回环接口上抓包需要 WinPcap 3.1,3.1beta版本都不行。
我们假设你已经将此回环接口地址设置为10.0.0.10,并且正在此接口上抓包。如果你ping这个10.0.0.10地址并在此接口上抓包,在Wireshark中还是看不到任何的流量(和127.0.0.1问题是一样的)。如果你ping 10.0.0.11地址,因为没有这个远程主机,所以得不到任何的ping响应,但是你可以在Wireshark中看到相应的ARP请求。
UlfLamping:到现在为止我看到这样做的唯一好处是和colinux(或者其他的PC虚拟软件)一起使用,用来抓取Windows和虚拟机之间的报文。
mitra:如何在Windows XP上抓取Microsoft回环接口的流量报文:
1. 打开Microsoft回环接口的属性,设置IP为10.0.0.10,掩码为255.255.255.02. 使用ipconfig /all 然后查看新网络适配器的 MAC-ID
3. arp -s 10.0.0.10<MAC-ID>4. route add 10.0.0.10 10.0.0.10 mask 255.255.255.255
5. 测试: "telnet 10.0.0.10"
ScottVermillion:现在我是用回环接口来抓取到Dyanmips/Dynagen虚拟路由网络的流量。我将在后面一段时间来测试这个游泳的特性/工具。事实是这样,我可以连接回环接口和虚拟路由接口来抓取ping、arp等报文。以后我希望将连接服务器的回环接口到虚拟路由,然后抓取在Dynamips/Dynagen虚拟网络中的所有类型报文。
saran:怎样获取Microsoft回环接口网络适配器的属性?在“全部网络接口”中右键选择“属性”即可。
另外的选择
一种叫CommView(TamoSoft公司出品)的商业网络抓包软件可以来抓取回环接口的报文,但是它只能解析比较少的协议,所以可以通过CommView来抓包并保存到文件中,并在Wireshark中打开。
另外一种可选的方法是在你的机器上增加一个通过到网关的路由:
route add<your_IP> mask 255.255.255.255 <the_gateway> metric 1
这里的<your_IP>是和127.0.0.1不同的。应该是ipconfig命令结果中的IP地址域。<the_gateway>则需要是ipconfig /all命令结果中的默认网关域。
这样做之后,所有发往本机的网络流量都会使用物理网络接口,将会到达网关,然后回到主机上。因此,每个报文都会看到两次,而这在视图中可以通过过滤器来解决。
需要注意的是,由于你的机器将使用真实的网卡来和自己通信,所以有可能造成网络的过载。在完成测试后最好是删除这条路由:
route delete<your_IP>