4、Wireshark 抓包实战:从选接口到基础过滤

好,咱们直接进入正题。上一章我们把 Wireshark 装好了,环境也调通了。这一章,我带你亲手抓一次包。

别小看这个流程。选错接口、抓错方向、过滤写错——这些坑我全踩过。今天我把每一步拆开讲,你跟着走一遍,以后自己干活就不会懵。

本章核心脉络:选择正确的抓包接口 → 开始/停止抓包 → 保存为 pcapng 文件 → 用基础过滤快速定位目标流量。

Wireshark 抓包实战流程 选择接口 Capture → Interface 开始抓包 点击 Start 或 Ctrl+E 停止抓包 点击 Stop 或 Ctrl+E 保存 pcapng File → Save As 基础过滤 ip.addr / tcp.port / 组合过滤 💡 核心技巧 先过滤再分析,效率翻倍

4.1 选择正确的抓包接口

打开 Wireshark,你会看到一个接口列表。有线网卡、无线网卡、蓝牙、虚拟网卡……全列在那。

选哪个? 我个人的习惯是:先看一眼 IP 地址。哪个接口有 IP,哪个就是当前在用的。

举个例子。你在公司用 Wi-Fi 上网,接口列表里会有一个叫 Wi-Fi 或 wlan0 的条目,后面跟着你的内网 IP,比如 192.168.1.100。点它,再点 Start,就开始抓了。

小技巧:如果你不确定哪个接口有流量,看接口右边的波形图。有波动的,说明有数据在跑。没波动的,基本是空的。

我在项目中遇到过一种情况:笔记本同时连着有线网和 Wi-Fi,结果抓了半天全是广播包,HTTP 请求一条都没有。为什么?因为流量走的是有线,我抓的是 Wi-Fi。所以记住——抓包前先确认数据路径。

4.2 开始抓包与停止抓包

选好接口,点 Start,或者按 Ctrl+E。抓包就开始了。

你会看到数据包一行一行地往上刷。别慌,这是正常的。Wireshark 默认把网卡设成混杂模式,所有经过的数据包都能看到。

什么时候停?

  • 你想抓的流量已经出现了
  • 或者你复现了某个故障场景
  • 或者你只是想截一小段样本

点 Stop,或者再按一次 Ctrl+E。抓包就停了。

注意:抓包时间越长,内存占用越大。我曾经在排查一个间歇性断网问题时,开着 Wireshark 抓了一整夜。第二天早上回来,电脑卡得鼠标都动不了——抓了 4 个多 G 的包。所以,够用就停,别一直挂着。

4.3 保存为 pcapng 文件

抓完包,你得存下来。不然一关软件,数据就没了。

操作很简单:File → Save As,选个位置,起个名字。默认格式是 .pcapng,我建议你就用这个。

为什么是 pcapng?

特性 pcap(旧格式) pcapng(新格式)
多接口支持 不支持 支持
元数据保存 不支持 支持(注释、时间精度等)
工具兼容性 广泛 越来越广泛
文件大小 较小 略大(但值得)

我个人习惯在文件名里加上日期和场景。比如 2025-04-10_web故障.pcapng。这样过了一个月翻回来,还能知道当时在干嘛。

保存前的小动作:如果你只想保存某一段流量,可以先选中那些包,然后 File → Export Specified Packets。这样只存你需要的,文件小,后续分析也快。

4.4 基础过滤:ip.addr 和 tcp.port

抓回来的包,少则几百,多则几万。你不可能一条一条翻。这时候就要用过滤。

Wireshark 的过滤分两种:

  • 抓包过滤(Capture Filter):抓之前就过滤,只抓你想要的。语法用 Berkeley Packet Filter (BPF)。
  • 显示过滤(Display Filter):抓完之后,在界面上过滤显示。语法是 Wireshark 自己的。

这一章我们重点讲 显示过滤。因为实战中,我大部分时间都在用这个。

4.4.1 按 IP 地址过滤:ip.addr

你想看某个 IP 的所有流量,在过滤栏输入:

ip.addr == 192.168.1.1

回车。Wireshark 只显示源 IP 或目标 IP 是 192.168.1.1 的包。

如果你只想看源 IP:

ip.src == 192.168.1.1

只想看目标 IP:

ip.dst == 192.168.1.1

我在项目中遇到过一个问题:客户说服务器响应慢,我抓了包,发现大量来自 10.0.0.5 的重传包。用 ip.addr == 10.0.0.5 一过滤,瞬间定位到是那台机器在疯狂丢包。你看,一个过滤就省了半小时排查时间。

4.4.2 按端口过滤:tcp.port

你想看 HTTP 流量(默认端口 80):

tcp.port == 80

想看 HTTPS(端口 443):

tcp.port == 443

也可以指定源端口或目标端口:

tcp.srcport == 8080
tcp.dstport == 443

实战组合拳:把 IP 和端口结合起来用。

ip.addr == 192.168.1.100 and tcp.port == 443

这条过滤的意思是:只看 192.168.1.100 这台机器上所有的 HTTPS 流量。干净、精准。

4.4.3 过滤的常见坑

我刚开始用 Wireshark 时,犯过一个低级错误。我想看 192.168.1.1 和 192.168.1.2 之间的流量,写了:

ip.addr == 192.168.1.1 and ip.addr == 192.168.1.2

结果一条包都没显示。为什么?因为一个包不可能同时既是源又是目标(除非是环回口)。正确的写法是:

ip.addr == 192.168.1.1 and ip.addr == 192.168.1.2

嗯,等等,上面那个写法其实是对的。我真正犯的错是用了 or 却忘了加括号。正确的应该是:

(ip.addr == 192.168.1.1) or (ip.addr == 192.168.1.2)

或者更简洁:

ip.addr == 192.168.1.1 or ip.addr == 192.168.1.2

记住:多个条件组合时,用括号明确优先级。这是 Wireshark 过滤里最容易翻车的地方。

避坑指南:我曾经在排查一个 DNS 故障时,用 tcp.port == 53 过滤,结果一条包都没抓到。后来才想起来——DNS 默认用 UDP,不是 TCP。所以过滤 DNS 要用 udp.port == 53。端口过滤前,先确认协议类型。

4.5 本章小结

这一章我们走完了 Wireshark 抓包的完整流程:

  • 选接口——看 IP,看波形
  • 开始/停止——Ctrl+E 搞定
  • 保存 pcapng——带场景命名,方便回溯
  • 基础过滤——ip.addr 和 tcp.port 是基本功

这些操作,你练上三五遍,就能形成肌肉记忆。下一章我们会深入更高级的过滤技巧,比如协议过滤、字符串匹配、以及如何用过滤表达式快速定位异常流量。

嗯,今天就到这儿。去抓几个包练练手吧。