熟悉 Wireshark 的朋友应该都知道,除了那个图形界面的抓包工具,Wireshark 套件里还藏着不少命令行利器。今天要聊的 dumpcap 就是其中之一。它虽然低调,但效率极高,尤其在服务器或远程环境里,堪称抓包神器。
不过,裸奔的 dumpcap 会一股脑把网卡上所有流量都抓下来,存储压力大,分析起来也费劲。所以,关键就在于“过滤器”。设置好过滤器,只抓你关心的那些数据包,这才是精准分析的正确打开方式。

使用 -f 选项:最直接的过滤器
这是最主流的用法,直接在命令行里敲过滤表达式就行。语法和 Wireshark 的捕获过滤器完全一致,本质上是 pcap-filter 语法,非常灵活。
先看几个最常用的语法:
- 按 IP 地址过滤:
src host 192.168.1.1只抓源地址;dst host 192.168.1.1只抓目的地址。 - 按端口过滤:
src port 80只抓源端口是80的;dst port 80抓目的端口是80的。 - 按协议过滤:
tcp,udp,icmp这些都是直接可用的关键字。 - 组合条件:用
and(与)、or(或)、not(非)来灵活组合,比如src host 192.168.1.1 and tcp dst port 80。
来点实际的例子,看看怎么用:
- 只抓来自
192.168.1.1的流量:dumpcap -i eth0 -w capture.pcap -f "src host 192.168.1.1" - 只抓发往80端口的TCP流量(也就是HTTP请求):
dumpcap -i eth0 -w capture.pcap -f "tcp dst port 80" - 组合条件:抓取来自
192.168.1.1且发往80端口的TCP流量:dumpcap -i eth0 -w capture.pcap -f "src host 192.168.1.1 and tcp dst port 80"
使用 -F 选项:复杂过滤器的好帮手
如果过滤器表达式很长,在命令行里输入既不方便也容易出错。这时候,-F 选项就派上用场了,它允许你把过滤器写在一个文件里。
具体操作分两步:
- 创建一个文本文件,比如
filter.txt,里面只写过滤器表达式,例如:src host 192.168.1.1 and tcp dst port 80。 - 在命令中引用这个文件:
dumpcap -i eth0 -w capture.pcap -F filter.txt
这里有个小技巧:可以把常用的、或者特别复杂的过滤器保存成文件,方便复用,省时省力。
其他常用选项
除了过滤器,还有几个选项也值得了解:
-i:指定要抓包的网络接口,比如eth0、wlan0。-w:指定输出文件名,通常以.pcap结尾。-C:设置每个文件的最大大小,单位是MB。配合-W使用,可以实现自动轮转抓包。-W:设置最大文件数。比如-C 10 -W 5表示每个文件10MB,最多保留5个,循环覆盖。
最后提醒几点
- 过滤器表达式是区分大小写的,
tcp和TCP含义不同,务必注意。 - 抓包需要足够的权限,比如在 Linux 上,通常需要用
sudo或以 root 用户身份运行。
掌握好这些过滤器,dumpcap 就能真正成为你网络分析工具箱里的利器。抓住关键流量,分析起来自然事半功倍。