Wireshark 是图形化网络协议分析器,可以读取已有抓包文件,也能在具备权限的网络接口上实时采集数据。它适合排查 DNS 解析、连接建立和应用通信问题;它显示的是实际捕获到的数据,不能单凭一份抓包证明网络中没有其他问题。
抓包可能包含账号标识、内部地址、请求内容等敏感信息。只在自己管理的设备、网络或明确获准的实验环境中采集;分享抓包前先检查并脱敏。本文以本机或隔离实验网络为例。
安装与启动#
Kali Rolling 的软件版本会变化。先查看仓库当前版本,再安装:
apt policy wireshark
sudo apt update
sudo apt install wireshark安装过程可能询问是否允许非 root 用户捕获数据包。只有确有需要时才启用,并按系统提示把指定账户加入 wireshark 组;之后重新登录使组权限生效。不要为了绕过权限问题而长期以 root 身份运行图形界面。若选择不启用普通用户捕获,可在需要时按系统配置用 dumpcap 获取数据,再用 Wireshark 分析文件。
运行 wireshark 打开界面。开始前确认接口名称和网络活动,例如在实验机上访问自己控制的测试服务。点击接口开始采集,完成后按停止按钮;采集时间尽量短,避免记录无关数据。
先用显示过滤器缩小范围#
显示过滤器只影响当前列表中显示哪些包,不会从抓包文件中删除其他数据。常用例子:
| 目的 | 显示过滤器 |
|---|---|
| 查看 DNS 协议包 | dns |
| 查看 TCP 443 端口通信 | tcp.port == 443 |
| 查看某个 IPv4 地址相关的数据包 | ip.addr == 192.0.2.10 |
| 查看 ICMP | icmp |
过滤器输入栏会提示语法是否有效。示例中的 192.0.2.10 属于文档示例地址,实际分析时换成自己实验网络中的地址。
采集过滤器与显示过滤器不同#
采集过滤器在开始抓包前设置,使用 libpcap 语法,决定哪些数据会被写入抓包文件。例如只采集 DNS 端口:
port 53只采集 TCP 443 端口:
tcp port 443而显示过滤器 tcp.port == 443 是在采集后筛选列表。两类过滤器语法不同;设置采集过滤器过窄,会导致所需数据根本没有被保存。初学时可以先在短时、授权的实验采集中不加采集过滤器,之后再根据目标问题缩小范围。
一个本地排查思路#
以检查测试设备能否完成 DNS 查询为例:
- 在自己的测试网络开始短时采集,产生一次已知的 DNS 查询。
- 输入
dns,查看查询与响应是否都出现在列表中。 - 展开数据包详情,核对查询名称、事务 ID、响应码和回答记录。
- 如果只看到查询而没有响应,进一步检查接口选择、网络路径、DNS 配置和采集时间。单凭“没看到响应”不能确定是 DNS 服务器故障,也可能是采集接口或过滤条件不合适。
- 保存前确认文件中没有不必要的个人或第三方数据。
TLS 加密连接通常只能看到握手、地址、时序和部分未加密元数据,不能因此直接读取 HTTPS 正文。解密需要合法取得相应会话密钥等条件;没有密钥时,Wireshark 不会自动还原加密内容。
常见误区#
- 列表为空:确认选中了有流量的接口、已开始采集,并检查是否误设了采集过滤器。
- 显示过滤器报错:区分
tcp.port == 443(显示过滤器)和tcp port 443(采集过滤器)。 - 看到重传就判定故障:重传是值得调查的现象,但还要结合丢包、时延、接口位置和应用表现判断。
- 把抓包当作完整记录:镜像端口、无线网卡模式、硬件卸载、采集丢包和采集位置都会影响可见内容。