网络诊断 · Wireshark

Wireshark 抓包入门:接口、过滤器与连接分析

DNS 查询有答案,网页却仍失败时,Wireshark 可以帮助查看请求发出后停在哪一步。先抓一次短请求,再用过滤器找对应的 DNS、TCP 和 TLS 数据包。

官方下载 ↗官方资料开始一次抓包
WindowsmacOSLinux

什么时候需要抓包

问题能稳定复现,但还不知道请求有没有发出、回复停在哪一步时,可以抓一小段包。围绕一个目标和一次请求看时间线,比长时间抓所有流量更容易定位。

它适合已经能复现问题、需要进一步证据的用户。若只想看 DNS 回答,用 doggo 更直接;若想观察逐跳路径,用 NextTrace。抓包分析应围绕一个明确问题展开,避免把满屏数据当成结论。

安装与捕获权限

从 Wireshark 官方下载页选择 Windows 或 macOS 安装包;Linux 可使用发行版的软件包,并核对实际版本。GitHub 仓库是官方镜像,不应把其 Release 数量当作官方下载总量。

  • Windows 实时抓包依赖 Npcap,按安装向导检查是否安装;驱动限制可能要求管理员确认。
  • macOS 按官方安装说明完成捕获权限设置,不能仅复制应用后就认为具备抓包权限。
  • Linux 使用发行版提供的捕获权限配置,让捕获组件获得必要权限;不要习惯性把整个图形界面以 root 运行。

可以打开现成抓包文件与可以实时抓包是不同能力。看不到接口或启动捕获被拒绝时,先读 官方捕获权限说明,而不是先修改代理配置。

选接口,抓一次短请求

  1. 关闭不相关应用,在自己的设备与获准网络上操作。明确要复现的一个请求,例如访问 https://example.com。
  2. 在欢迎页选择正在使用的以太网或 Wi-Fi 接口,可先观察接口流量曲线。多个接口同时有流量时,结合系统网络设置确认。
  3. 开始捕获后立即复现一次请求,等待出现问题或完成响应,再按停止按钮。不要长时间记录无关流量。
  4. 保留开始时间、应用、目标域名和是否启用代理,方便对应具体数据包。

使用本机代理时,应用到代理的连接通常发生在回环接口,代理到外部的连接出现在实际出口接口。只抓其中一个接口可能看不到另一段。选择回环接口能否成功,还取决于系统与捕获组件支持。

也可以在另一个终端执行下面的单次请求来复现;Windows PowerShell 使用 curl.exe。它会遵循当前代理环境,记录是否启用代理:

示例代码
curl --http1.1 --head --max-time 20 https://example.com

强制 HTTP/1.1 便于入门时观察 TCP/TLS;请求成功与否以实际响应为准。抓包完成后对照同一时间段的连接,避免把后台应用的数据误认为这次请求。

抓包过滤器和显示过滤器

Wireshark 两种过滤器的用途
种类输入位置与效果示例
抓包过滤器捕获开始前设置,决定哪些包进入文件;使用 libpcap 语法。port 53 or tcp port 443
显示过滤器捕获期间或结束后在工具栏输入,决定哪些已抓到的包显示;隐藏的包仍在原文件中。dns or tcp.port == 443

入门时可先短时不加抓包过滤器,避免提前丢掉关键证据。需要减少采集范围时再使用抓包过滤器。上面的抓包示例不包含 UDP 443,因此不会完整覆盖 QUIC/HTTP3;不要据此断言浏览器没有发起网络请求。

两种语法不能交换使用。显示过滤器输入后按 Enter 应用;无匹配结果时清空过滤器检查总包数。显示过滤成功也不表示原文件已经删去其他数据。

抓包过滤器在采集前决定哪些包写入文件,显示过滤器在文件或界面中筛选可见包,不会删除隐藏的包。
显示过滤器不会清理原始文件,分享时要另行导出需要的包并检查敏感内容。

查看 DNS 查询与回复

在显示过滤栏输入 dns,查看查询名称、记录类型、回复状态和时间。要只看示例域名可使用:

示例代码
dns.qry.name == "example.com"

把查询与对应回复配对,检查是否存在响应、是否返回记录,以及是否出现 NXDOMAIN 等状态。没有看到 DNS 不一定是故障:系统可能有缓存,浏览器也可能使用 DoH,或你抓错了接口。

普通 DNS 数据包常能直接看到域名;加密 DNS 的具体查询内容通常不能用 dns 直接显示。先用同一解析器的 DNS 查询对照缩小问题范围,再回到抓包确认。

查看 TCP 建连与 TLS 握手

TCP 建连与重传

显示过滤器 tcp.flags.syn == 1 可帮助定位 TCP 建连包;tcp.analysis.retransmission 查看 Wireshark 标记的疑似重传。右键选定连接并按 TCP Stream 过滤,可减少其他连接干扰。

重复 SYN 而没有对应回复,是连接阶段异常的线索;疑似重传也可能受到采集缺包、镜像接口或抓包位置影响。需要结合完整会话和实际应用错误判断,不能把一个彩色提示直接等同于链路丢包。

TLS 握手

示例代码
tls
tls.handshake.type == 1

tls 聚焦被识别为 TLS 的流量,第二条聚焦 Client Hello。能够看到握手不代表能够看到加密后的 HTTP 内容;TLS 版本与握手阶段也会影响可见字段。若客户端走 QUIC,应另看 quic,而非只盯 TCP。

保存、导出和分享抓包

把原始抓包留给自己分析,另外准备分享材料。PCAP/PCAPNG 可能保存内网地址、域名和账户信息,过滤界面里看不到的包仍可能在文件中。

  1. 先检查包详情及 Follow Stream 是否出现账户、令牌、请求正文或其他个人数据。
  2. 只需反馈现象时,优先分享遮盖敏感字段的截图和少量错误说明。
  3. 确需分享文件时,使用“Export Specified Packets”选择必要包,确认导出范围;显示过滤器本身不会修改原文件。
  4. 导出包仍可能包含敏感负载,必须再次检查;无法确认时重新生成不含登录行为的最小抓包。

分享时附上时间、接口、过滤器和要说明的现象,让对方能对应到具体数据包。

更新后的简单检查

沿原官方或发行版渠道更新,用同一接口抓一次短请求。确认过滤器能应用,抓包可以保存并重新打开;原来的捕获权限和最小示例文件也保留一份。

常见问题

为什么抓包列表是空的?

先清空显示过滤器,确认捕获确实开始,再检查选中的接口与捕获权限。若抓包过滤器太窄,相关包可能根本没有写入文件。

使用显示过滤器后,其他数据已经从文件删除了吗?

没有。显示过滤器只改变界面可见范围,原捕获文件仍保留其他包。导出指定包可以减少范围,但仍需单独检查敏感内容。

开启代理后应该抓哪个接口?

应用连接本机代理的部分通常在回环接口,代理连接外部的部分在出口接口。依据要验证哪一段选择接口,并确认系统的回环捕获支持。

参考资料

下载、系统要求和配置字段以对应版本的官方说明为准。文中的流程图由 AFQKit 绘制。

doggo →DNS 查询与解析对照NextTrace →路由追踪与路径诊断Xray-core →多协议代理命令行核心

先弄清这些概念

返回工具目录 · 按症状排查问题