Linux下使用tcpdump抓取网络数据包

文章目录

在涉及到网络通信方面的问题时,总需要通过抓取数据包来查看具体的通信状况。Windows下提供了非常方便的一款软件:wireshark。那么,Linux下怎么去抓取网咯数据包呢,今天tennfy就来介绍下Linux下抓取网络数据包的工具:tcpdump

tcpdump介绍

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

tcpdump命令格式

tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些常用的参数。

1
tcpdump [-i 网卡] -nnAX 表达式

各参数说明如下:

-i:interface 监听的网卡。

-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。

-A:以ascii的方式显示数据包,抓取web数据时很有用。

-X:数据包将会以16进制和ascii的方式显示。

表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用and、or组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。

tcpdump常见用法

1、监听网卡

首先运行ifconfig查看网卡名,一般网卡名为eth0。

1
tcpdump -i eth0

这个方式最简单了,但是用处不多,因为基本上只能看到数据包的信息刷屏,压根看不清,可以使用ctrl+c中断退出,如果真有需求,可以将输出内容重定向到一个文件,这样也更方便查看。

2、监听指定协议的数据

1
tcpdump -i eth0 -nn icmp

这个是用来监听icmp协议的数据,就是ping命令使用的协议。类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了。ping下监听的机器,输出如下:

linux-tcpdump

3、监听指定主机的数据

1
tcpdump -i eth0 -nn host 192.168.1.231

这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。

1
tcpdump -i eth0 -nn src host 192.168.1.231

这样只有192.168.1.231这台主机发送的包才会被抓取。

1
tcpdump -i eth0 -nn dst host 192.168.1.231

这样只有192.168.1.231这台主机接收到的包才会被抓取。

4、监听指定端口的数据

1
tcpdump -i eth0 -nnA port 80

上例是用来监听主机的80端口收到和发送的所有数据包,结合-A参数,在web开发中,真是非常有用。

5、监听指定主机、端口的数据

1
tcpdump -i eth0 -nnA port 80 and src host 192.168.1.231

多个条件可以用and,or连接。上例表示监听192.168.1.231主机通过80端口发送的数据包。

6、抓119.29.121.116的80端口和110和25以外的其他端口的包

1
tcpdump -i eth0 host 119.29.121.116 and ! port 80 and ! port 25 and ! port 110

小结

tcpdump这个功能参数很多,表达式的选项也非常多,非常强大,不过常用的功能确实不多。详情可以通过man查看系统手册。

1)在抓取web包的时候,发送网页内容都是很奇怪的字符,发现是apache开启了gzip压缩的缘故,关闭掉gzip压缩就可以了。在ubuntu 12.04下,编辑vim /etc/apache2/mods-enabled/deflate.load文件,将加载模块deflate_module的语句注释掉,然后重启apache就OK了

2)如果觉得不方便查看,可以先将数据包保存,通过wireshark查看,方法如下所示:

1
tcpdump tcp port 8080 and host 10.104.102.228 -w /tmp/xxxx.cap

参考文章:Linux使用tcpdump抓取网络数据包示例



本文出自 TENNFY WU,转载时请注明出处及相应链接。

本文永久链接: http://www.tennfy.com/4590.html

下一篇文章:

上一篇文章:

1人参与了讨论

  1. 123 说:

    猴赛雷老板

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

5 + 9 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部