Linux下抓包技巧:熟练使用tcpdump(linux抓包命令)

Linux是经典的开源操作系统,在抓包工具中,有一个熟悉的名字叫tcpdump,用它来抓取报文和抓取packet流是有其必要的。本文简单介绍一下Linux下抓包技巧:熟练使用tcpdump。

首先介绍tcpdump的用法,掌握tcpdump的基本用法可以提高抓包的效率。tcpdump可以抓取eth0接口上的进出报文, 也支持抓取指定来源IP和端口,指定目的IP和端口的报文,使用如下:

tcpdump -i eth0 src 192.168.10.x and dst 192.168.0.y -vv

其中 src参数指定报文的源IP,dst参数指定报文的目的IP,-vv可以输出更详细的信息。

tcpdump也支持过滤报文,通常我们在调试网络时会使用此功能,比如:只抓取指定类型的报文,使用如下:

tcpdump -i eth0 src 192.168.10.x and dst 192.168.0.y and icmp -vv

icmp参数表示只抓取ICMP类型的报文,也可以使用tcp参数抓取tcp类型的报文。

tcpdump也支持抓取packet流,比如可以抓取从指定源IP到指定目的IP的所有packet流,指令如下:

tcpdump -i eth0 src 192.168.10.1 and dst 192.168.0.1 -w /tmp/test.pcap

此指令可以抓取从192.168.10.1到192.168.0.1之间的packet流,并且输出到/tmp/test.pcap文件中。

tcpdump不仅支持此类指令,还支持更多功能,有需求时再参考它的文档,更多用法都可以找到。

最后再为大家推荐一种抓包技巧,就是使用“穷举抓包”,这种技术可以把不熟悉的网络流量抓出来。

“穷举抓包”的步骤如下:

1. 抓取全部TCP packet,使用如下指令抓取:

tcpdump -i eth0 src 192.168.10.x and dst 192.168.0.y -vv

2. 把包requests分离出来:

tcpdump -i eth0 src 192.168.10.x and dst 192.168.0.y and tcp[tcpflags] & tcp-push!= 0 -vv

3. 把包responses分离出来:

tcpdump -i eth0 src 192.168.10.x and dst 192.168.0.y and tcp[tcpflags] & tcp-ack!= 0 -vv

4. 把packets按分类统计:

tcpdump -i eth0 src 192.168.10.x and dst 192.168.0.y and ip -vv | awk ‘{print “源:”$2″->”$14″目的”}’ -vv

通过上述步骤,轻松把全部网络流量抓出来,成功掌握了Linux下的抓包技巧:熟练使用tcpdump。


数据运维技术 » Linux下抓包技巧:熟练使用tcpdump(linux抓包命令)