Linux系统抓包命令tcpdump使用实例

本文介绍如何在Linux系统中使用tcpdump工具进行网络抓包。包括基本命令格式、常用参数及各种过滤条件的应用,如监听特定协议、主机、端口等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux系统网络抓包用tcpdump,首先当然是看有没有安装了,没有就用yum安装一下。

tcpdumplinux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是centos 7

tcpdump
的命令格式
tcpdump
的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些笔者自己常用的参数:
tcpdump [-i 
网卡] -nnAX '表达式'
各参数说明如下:
-i
interface 监听的网卡。
-nn
:表示以ipport的方式显示来源主机和目的主机,而不是用主机名和服务。
-A
:以ascii的方式显示数据包,抓取web数据时很有用。
-X
:数据包将会以16进制和ascii的方式显示。
表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用andor组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter
下面进行一些命令测试,如果没有权限,可以先切换成root用户。

监听网卡eth0
$ tcpdump -i eth0

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

监听指定协议的数据
$ tcpdump -i eth0 -nn 'icmp'

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

linux使用tcpdump抓包示例
每一行的各个数据表示的含义:
抓到包的时间 IP 发包的主机和端口 > 接收的主机和端口 数据包内容

监听指定的主机
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
这样只有192.168.1.231这台主机发送的包才会被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
这样只有192.168.1.231这台主机接收到的包才会被抓取。

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

监听指定主机和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多个条件可以用andor连接。上例表示监听192.168.1.231主机通过80端口发送的数据包。

监听除某个端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
如果需要排除某个端口或者主机,可以使用“!”符号,上例表示监听非22端口的数据包。

同时可以将数据输出到一个指定的文件

tcpdump -i em2 -vnn port 8000 -w xxx.cap


小结:
tcpdump
这个功能参数很多,表达式的选项也非常多,非常强大,不过常用的功能确实不多。详情可以通过man查看系统手册。
另外在抓取web包的时候,发送网页内容都是很奇怪的字符,发现是apache开启了gzip压缩的缘故,关闭掉gzip压缩就可以了。在centos 7下,编辑vim/etc/apache2/mods-enabled/deflate.load文件,将加载模块deflate_module的语句注释掉,然后重启apacheOK了。



tcpdump是一个常用的网络抓包工具,它可以帮助用户捕获经过指定网络接口的数据包。在类Unix系统中,包括Linux和macOS,tcpdump都是非常受欢迎的命令行工具。 下面是一些基本的tcpdump命令使用方法: 1. 基本抓包命令: ``` tcpdump ``` 这条命令会在运行它的网络接口上捕获数据包。通常,这个命令需要管理员权限才能运行。 2. 指定网络接口: ``` tcpdump -i eth0 ``` 在这个例子中,`-i` 选项用于指定要监听的网络接口(本例中为`eth0`)。如果不指定接口,tcpdump将默认选择一个。 3. 捕获特定数量的数据包: ``` tcpdump -c 10 ``` `-c` 选项允许用户指定要捕获的数据包数量。在这个例子中,tcpdump将只捕获10个数据包然后停止。 4. 指定过滤条件: ``` tcpdump -i eth0 'tcp port 80' ``` 使用`tcp port 80`过滤条件可以限制tcpdump只捕获目的或源端口为80的数据包,这通常用于HTTP流量。 5. 将输出保存到文件: ``` tcpdump -i eth0 -w capture.pcap ``` `-w` 选项允许用户将捕获的数据包保存到文件中,而不是直接在终端显示。这在后续分析时非常有用,因为可以使用Wireshark这样的工具进行详细分析。 6. 读取保存的抓包文件: ``` tcpdump -r capture.pcap ``` 使用`-r` 选项可以读取之前保存的tcpdump文件。 请注意,运行tcpdump命令可能需要root权限,而且在处理大量数据时应该小心,因为它可能会占用大量的磁盘空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值