2. 环境准备:Linux系统安装、网卡模式切换与驱动兼容性检查
说实话,做无线抓包这件事,最怕的不是协议复杂,而是环境没搭好就急着开干。我见过太多人拿着Windows笔记本插上USB网卡,打开Wireshark发现只能抓到自己的流量——那种挫败感,我懂。
这一章,咱们就把地基打牢。你跟着我走一遍,后面30个章节都会顺风顺水。
2.1 为什么非要用Linux?
你可能想问:Windows也能装Wireshark啊,为什么非要折腾Linux?
原因很简单:无线网卡的Monitor模式,在Windows上基本是个摆设。Windows的无线栈把网卡管得死死的,你没法让它进入真正的监听状态。Linux就不一样了——它给了你底层控制权。
我个人习惯用Ubuntu 22.04 LTS。为什么?
- 驱动支持最全,尤其是那些便宜的RTL8812AU网卡
- 社区活跃,遇到问题一搜就有答案
- apt包管理省心,一条命令装完所有依赖
2.2 网卡模式:Managed vs Monitor
先搞清楚这两个模式的区别。说白了:
- Managed模式:网卡只收发给自己的包。你连上Wi-Fi上网,用的就是这模式。
- Monitor模式:网卡变成“收音机”,空中所有802.11帧都能收——不管是不是发给你的。
抓包必须用Monitor模式。但有个坑:不是所有网卡都支持Monitor模式。我踩过这个坑——买了个某品牌的USB网卡,插上去怎么切都切不过去,查了半天发现芯片组压根不支持。
| 模式 | 能收什么 | 典型用途 | 驱动要求 |
|---|---|---|---|
| Managed | 只收本机关联的帧 | 正常上网 | 标准驱动即可 |
| Monitor | 所有空中802.11帧 | 抓包、审计、分析 | 需驱动支持 |
2.3 驱动兼容性检查——这一步别跳过
嗯,这里要注意:装系统之前,先确认你的网卡芯片型号。别等系统装好了才发现网卡不认,那就尴尬了。
怎么查?我一般这么做:
- 在Windows或现有系统里,用
lsusb或设备管理器看芯片ID - 去 wireless.wiki.kernel.org 查芯片是否被主线内核支持
- 如果不支持,找对应的第三方驱动(比如
rtl88x2bu、rtl8812au)
下面这张图,是我自己画的知识体系,帮你快速定位问题出在哪一环:
2.4 实战:在Ubuntu 22.04上切换网卡模式
假设你的网卡已经被系统识别了。我们来走一遍切换流程。
先看看当前网卡状态:
iwconfig
# 输出示例:
# wlan0 IEEE 802.11 ESSID:"MyWiFi"
# Mode:Managed Frequency:2.412 GHz Access Point: XX:XX:XX:XX:XX:XX
看到 Mode:Managed 了吧?这就是普通上网模式。现在把它切到Monitor:
# 先停掉网络管理,不然它会抢网卡
sudo systemctl stop NetworkManager
# 把网卡降下来
sudo ip link set wlan0 down
# 切换模式
sudo iw dev wlan0 set type monitor
# 再升起来
sudo ip link set wlan0 up
# 确认模式
iwconfig wlan0
# 应该看到:Mode:Monitor
2.5 驱动兼容性速查表
下面这张表是我自己整理的,覆盖了市面上常见的抓包网卡。你买网卡的时候可以对着看:
| 芯片型号 | USB接口 | Ubuntu 22.04支持 | Monitor模式 | 备注 |
|---|---|---|---|---|
| Atheros AR9271 | USB 2.0 | 主线内核 | ✅ 原生支持 | 经典款,稳定 |
| RTL8812AU | USB 3.0 | 需第三方驱动 | ✅ 需编译 | 支持5GHz,抓包首选 |
| RTL8821AU | USB 2.0 | 需第三方驱动 | ✅ 需编译 | 性价比高 |
| MediaTek MT7610U | USB 2.0 | 主线内核(较新) | ⚠️ 部分支持 | 内核版本需≥5.10 |
| Intel AX200/210 | M.2 | 主线内核 | ✅ 原生支持 | 笔记本内置,需确认 |
我的经验:如果你刚开始学,直接买Atheros AR9271芯片的网卡(比如TP-Link TL-WN722N v2/v3)。插上就能用,不用编译驱动,省心。我第一块抓包网卡就是它,到现在还在用。
2.6 驱动装不上怎么办?
你可能会遇到这种情况:网卡插上去,lsusb 能看到,但 iwconfig 里没有。这说明驱动没加载。
别慌。我遇到过好几次,解决思路是这样的:
- 先查芯片ID:
lsusb | grep -i wireless,记下ID(比如0bda:8812) - 去GitHub搜这个ID,大概率能找到对应的驱动项目
- 按项目README编译安装
举个例子,RTL8812AU的驱动安装:
# 安装编译工具
sudo apt update
sudo apt install -y build-essential git dkms
# 克隆驱动源码
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au
# 编译并安装
sudo make
sudo make install
# 加载驱动
sudo modprobe 8812au
# 确认网卡出现
iwconfig
uname -r 查看。有些驱动对内核版本有要求。我上次在5.19内核上编译一个老驱动,死活过不去,后来降级到5.15才搞定。
2.7 验证环境是否就绪
所有步骤走完后,做一次最终验证:
# 1. 确认网卡在Monitor模式
iwconfig wlan0 | grep Monitor
# 2. 确认能抓到空中的帧(不需要关联任何Wi-Fi)
sudo tcpdump -i wlan0 -c 10
# 3. 如果看到类似下面的输出,说明环境OK
# 11:22:33.445566 Beacon (MyWiFi) [1.0* 2.0* 5.5* 11.0* Mbit] ESS
看到Beacon帧了吗?恭喜你,环境已经准备好了。后面我们就可以开始真正的抓包实战了。