3. Wireshark 安装与配置:Windows / Mac / Linux 安装、抓包网卡选择、抓包过滤器设置
说实话,很多新手学抓包,第一步就卡在安装和选网卡上。我见过不少同事,Wireshark 装好了,但一开抓包全是乱七八糟的包,或者干脆抓不到任何数据。嗯,这其实不是工具的问题,是配置没到位。
这一章,我就带你走一遍完整的安装和配置流程。Windows、Mac、Linux 我都会讲到,但重点放在「网卡怎么选」和「过滤器怎么写」这两个核心问题上。毕竟,工具装好了只是开始,能精准抓到你要的包,才是真本事。
3.1 各平台安装要点
Wireshark 的安装其实不复杂,但有几个坑你得避开。我按平台分开说。
3.1.1 Windows 安装
Windows 用户最省心。去官网下载安装包,一路 Next 就行。但注意这一步——
安装完成后,建议重启一次系统。Npcap 驱动需要加载,不重启的话某些网卡可能识别不到。
3.1.2 macOS 安装
Mac 用户有两种方式:
- 官方 dmg 包:直接下载安装,简单粗暴。
- Homebrew:终端执行
brew install --cask wireshark。我个人习惯用 brew,因为后续更新方便。
但 Mac 上有个常见问题——权限不足。Wireshark 需要访问网络接口,而 macOS 默认限制非 root 用户。安装完成后,系统会提示你安装「ChmodBPF」启动项。一定要点「安装」,否则你打开 Wireshark 后会发现网卡列表是空的。
sudo wireshark 试试。能抓到的话,说明是权限问题,重新安装 ChmodBPF 即可。
3.1.3 Linux 安装
Linux 下最直接:
# Debian/Ubuntu
sudo apt update && sudo apt install wireshark
# CentOS/RHEL
sudo yum install wireshark
# Fedora
sudo dnf install wireshark
安装过程中会问你是否允许非 root 用户抓包。我建议选「Yes」,否则每次都要 sudo,很麻烦。如果安装时选错了,事后可以执行:
sudo dpkg-reconfigure wireshark-common
sudo usermod -a -G wireshark $USER
# 然后注销重新登录
嗯,这里要注意:Linux 下抓包需要 libpcap 库,一般会作为依赖自动安装。但如果你的系统是精简版,可能需要手动装一下 libpcap-dev。
3.2 抓包网卡选择——别选错了
装好 Wireshark 后,打开软件,你会看到一个网卡列表。很多人直接选第一个就开抓,结果抓到的全是广播包,或者根本抓不到目标流量。为什么会这样?
说白了,你选错了网卡。
我画了一张图,帮你理清思路:
选网卡的核心原则就一条:目标流量从哪块网卡进出,就选哪块。你想想看,如果你用 Wi‑Fi 上网,却选了有线网卡,那肯定抓不到数据。
我分享一个快速识别方法:
- Windows:网卡名称通常包含「Ethernet」或「Wi‑Fi」。IP 地址列会显示当前网卡的 IP,对照一下就知道是哪块了。
- macOS:名称类似「en0」「en1」。可以在终端用
ifconfig查看,en0 通常是有线,en1 是无线。 - Linux:名称如「eth0」「wlan0」。用
ip addr确认 IP 对应的接口。
3.3 抓包过滤器设置——精准捕获
选对网卡只是第一步。如果不设过滤器,Wireshark 会把网卡上所有流量都抓下来。你想想看,一个正常工作的服务器,每秒可能有几千个包。在这么多数据里找你要的那个,无异于大海捞针。
Wireshark 提供了两种过滤器,很多人容易搞混:
| 过滤器类型 | 作用时机 | 语法 | 典型用途 |
|---|---|---|---|
| 抓包过滤器 (Capture Filter) | 抓包开始前设置,只抓符合条件的包 | BPF (Berkeley Packet Filter) 语法 | 只抓某 IP、某端口,减少抓包文件大小 |
| 显示过滤器 (Display Filter) | 抓包完成后设置,隐藏不符合条件的包 | Wireshark 专有语法 | 在已抓到的数据中快速定位特定协议或字段 |
这一节我们重点讲抓包过滤器。显示过滤器后面章节会详细展开。
3.3.1 抓包过滤器语法速成
抓包过滤器用的是 BPF 语法,说白了就是「协议 + 方向 + 主机 + 端口」的组合。我列几个最常用的:
# 只抓某个主机的流量(双向)
host 192.168.1.100
# 只抓某个端口的流量(TCP 或 UDP)
port 80
# 只抓某个网段的流量
net 192.168.1.0/24
# 组合条件:抓特定主机且特定端口
host 192.168.1.100 and port 443
# 只抓 TCP 协议
tcp
# 排除某个主机
not host 10.0.0.1
你可能会问:这些条件能组合吗?当然可以。用 and、or、not 连接就行。我常用的一个组合:
tcp and host 192.168.1.100 and port 80 or port 443
这个过滤器只抓 TCP 协议、目标或源是 192.168.1.100、且端口是 80 或 443 的包。干净利落。
3.3.2 在 Wireshark 中设置抓包过滤器
设置位置在 Wireshark 主界面的网卡列表上方,有一个输入框,写着「Capture filter」。点击旁边的「Bookmark」按钮可以保存常用过滤器,下次直接选。
具体步骤:
- 打开 Wireshark,看到网卡列表。
- 在「Capture filter」输入框里输入你的 BPF 表达式。
- 点击「Apply」或直接按回车。
- 双击目标网卡开始抓包。
tcp port 80,「DNS 抓包」对应 udp port 53。这样下次直接点一下就能用,不用重新敲。
3.3.3 实战案例:抓一个连接超时的包
假设你要排查客户端 192.168.1.10 访问服务器 10.0.0.5 的 8080 端口时出现连接超时。你会怎么设过滤器?
我的做法是:
host 192.168.1.10 and host 10.0.0.5 and port 8080
或者更简洁:
host 192.168.1.10 and port 8080
因为服务器 IP 是固定的,只要抓到客户端发往 8080 端口的包,就能看到完整的 TCP 三次握手过程。如果连 SYN 包都没发出去,那就是客户端的问题;如果发了 SYN 但没收到 SYN‑ACK,那就是网络中间丢了包或者服务器没响应。
host 拼成了 hosts,结果抓了半小时一个包都没有。嗯,检查语法很重要。
3.4 快速验证:抓包环境是否正常
装好 Wireshark、选对网卡、设好过滤器后,怎么确认一切正常?我一般做两步验证:
- 抓一个本机回环包:选 Loopback 网卡,过滤器设
tcp port 80,然后在浏览器访问http://127.0.0.1(如果本机有 Web 服务)。能看到包就说明 Wireshark 工作正常。 - 抓一个外网包:选你的上网网卡,过滤器设
host 8.8.8.8,然后在终端ping 8.8.8.8。能看到 ICMP 包就说明网卡选对了。
这两步走完,你的抓包环境就准备好了。后面章节我们会基于这个环境,一步步分析连接超时的根因。