http://searun.iteye.com/blog/376597
这是一篇翻译的文章,原文在http://wiki.wireshark.org/CaptureSetup/Loopback
下面的部分解释了如何在回环接口上抓包。
如果你准备抓取一台机器到自己的报文,则这个报文将不会经过实际的网络适配器,即使报文是发往这台机器上的某个网络适配器地址。这也意味着当你抓包的时候是看不到报文的,如在含有指定目的地址的网络适配器上操作。而你只能在回环接口上抓包,如果存在这样一个接口并且允许抓包的情况下。在下一节中将看到可以支持回环接口抓包的平台信息。
支持的平台
看看CaptureSetup/NetworkMedia 来了解 Wireshark 所支持的平台。总结一句话:可以在 Linux 、类 BSD 包括 Mac OS X 、 Digital/Tru64 Unix 上抓取回环接口报文,可能能在 Irix 和 AIX 上使用,而在 Solaris 、 HP-UX 、 Windows 下则不能抓取回环接口报文。
Windows
IP 127.0.0.1
You can't capture on the local loopback address 127.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.1 beta 版本都不行。
我们假设你已经将此回环接口地址设置为 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.0
2. 使用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"
Scott Vermillion:现在我是用回环接口来抓取到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>