另一种抓包方式wireshark

jimmy 2018年03月31日 1,958次浏览

另一种抓包方式wireshark

介绍

在通信异常时,尤其网络丢包,我们经常需要对网络中的通信数据进行抓包。 常用的方式可以在服务器上面转一个抓包软件比如wireshark,可以抓到服务器收到和发出的数据包,也可以在某一个网络节点进行抓包,比如我的netgare GS108Ev3 就有端口镜像功能,可以很方便的将一个端口的流量复制到其他端口,这样插上网线,并将网线另一端插到有抓包工具的电脑就可以抓包了。

请输入图片描述

以上方式在某些条件下也许并不能完美的实施,比如服务器不能随便装软件,硬件设备也不一定有。这里介绍一种简单的方式,可以很方便的进行抓包测试,方便有兴趣的通信研究网络通信。

使用iptables TEE(下载地址 我使用的是centos7.3 已经自带这个功能,无需另外安装)功能将网络通信的流量复制一份到另一个网卡,这样就可以很方便的抓包了。

测试网络环境

使用了2台虚拟机,一台centos7.x 无图形界面,一台 win7 安装了 wireshark ,每台都虚拟了2个网卡。从自己的笔记本电脑远程到win7虚拟机来进行相关的测试,在win7虚拟机里面ssh登录到centos服务器。

请输入图片描述

基本命令

在centos上面执行如下命令,其中ens160是centos虚机的第一个网卡,10.10.59.221是win7虚机的第二个网卡地址。第一条命令转发centos收到的数据,第二条命令抓发发出去的数据。

 iptables -I PREROUTING -t mangle -i ens160 -j TEE --gateway 10.10.59.221
 iptables -I POSTROUTING -t mangle -o ens160 -j TEE --gateway 10.10.59.221

操作

远程登录到win7虚拟机,ssh登录到centos服务器,再win7上打开wireshark、监控win7的第二块网卡,并输入过滤条件 ip.addr == 10.10.51.214 and !(ip.addr == 10.10.51.221), 只显示虚拟机自己的报文,并屏蔽win7的通信报文(比如ssh的报文),这样我们就能看到一个纯净的网络抓包环境了。

可以测试了,在centos里面输入 ping www.qq.com, 抓包结果如下,其中有一点要注意下,报文的目的mac地址是win7虚拟机的,实际发往腾讯服务器的包使用的目的mac地址应该是我的网关mac地址,这里被iptables TEE修改过。

执行ping示例

请输入图片描述

抓包数据,其中有两次DNS查询, 其他都是一个request 一个response。

请输入图片描述