1. 先说点实在的:为什么我在Ubuntu上选了AX210这颗网卡来抓包
最近一直在折腾Linux环境下的无线抓包,手里的机器是台普通的笔记本,原配网卡是Intel的旧款AC系列,日常用没问题,一旦切到monitor模式就开始各种拉胯——要么驱动不认,要么抓到的包全是错帧。后来换了Intel AX210,整个体验直接上了一个台阶。这篇东西就是围绕“Ubuntu + Wireshark + AX210网卡”这个组合,把我从驱动安装、模式切换、抓包配置到实际分析的全过程记录下来。
先说清楚这套组合能干什么:AX210是Intel目前主流的Wi-Fi 6E无线网卡,硬件上支持802.11ax,关键是对Linux内核的支持比较新,iwlwifi驱动从内核5.10+开始就能良好驱动它,支持monitor模式(监听模式)和帧注入。搭配Wireshark,你可以抓普通以太网流量、Wi-Fi 802.11管理帧、控制帧,甚至做简单的无线协议分析。适合的人:网络工程师、嵌入式开发者、做无线协议逆向的同行、还有刚入门抓包但不想折腾老掉牙驱动的学生党。如果你是图省事想用USB网卡,那这篇的驱动部分对你帮助不大,但Wireshark分析思路依然通用。
我踩过的坑不算少,尤其AX210这卡在Ubuntu上有个“臭名昭著”的特点:内核版本太旧会直接不识别,驱动模块加载报错,甚至开机风扇狂转(这倒不是网卡的锅,但排查起来很迷惑)。所以这篇不会只贴命令,我会把每一步后面的原理和坑都讲明白,尽量让你拿到就能用,别走我当初的弯路。
2. 环境准备:版本选对,后面省一半力气
2.1 内核版本是第一道门槛
AX210用的是Intel的iwlwifi驱动,这个驱动随内核一起发布,但不同内核版本对AX210的支持程度差很多。AX210的PCI-ID是8086:2725(Wi-Fi 6E)和8086:2726(Wi-Fi 6,不带6E),在Linux内核的iwlwifi驱动中,对2725这一型号的支持从内核5.10开始才加入,但要稳定使用,我建议内核至少5.15,最好5.17+。Ubuntu 22.04 LTS默认内核是5.15,开箱基本能用;Ubuntu 20.04默认内核5.4,那就必须手动升级内核了。
检查内核版本和网卡识别状态,三步走:
uname -r lspci -nn | grep -i network sudo dmesg | grep iwlwifi | head -20lspci -nn里如果看到Intel Corporation Wi-Fi 6E AX210 [8086:2725],说明硬件被识别了;dmesg里如果能看到iwlwifi相关的加载日志,说明驱动也拉起来了。我遇到过一种情况:lspci能看到设备,但dmesg一片空白,这时候多半是内核里没编译iwlwifi模块,或者模块被黑名单禁用了。可以用lsmod | grep iwlwifi确认下。
如果内核版本太老,最简单的方法是直接升级Ubuntu到22.04(如果你还在20.04,在/etc/apt/sources.list里把版本代号改成jammy后do-release-upgrade),或者手动装一个HWE内核(Hardware Enablement Kernel)。Ubuntu 22.04的HWE内核是6.2或6.5,对AX210支持更完善。手动装内核的步骤放下面,实测在22.04上操作可行:
sudo apt update sudo apt install linux-generic-hwe-22.04 sudo reboot装完再查uname -r,如果变成6.x.x-generic,基本就稳了。内核这块我的建议是:别用太激进的Mainline内核,除非你知道自己在干什么,因为无线驱动和NetworkManager的配合有时会和最新内核打架。
2.2 Wireshark安装与权限配置
Ubuntu下装Wireshark非常简单:
sudo apt update sudo apt install wireshark装的时候会弹一个对话框问你是否允许非root用户抓包,这个一定要选“是”。如果当时手滑选了“否”,后面可以补:
sudo dpkg-reconfigure wireshark-common sudo usermod -aG wireshark $USER然后重新登录(或者newgrp wireshark)让组权限生效。这里不推荐直接用sudo wireshark来跑,因为Wireshark以root运行会有安全风险,而且插件路径、配置目录都会混乱,以后排查问题会很痛苦。正确姿势是给当前用户加wireshark组,然后普通用户启动,只有抓包这个动作由dumpcap通过setuid完成。
检查权限是否生效:
id groups你的用户名后面应该出现wireshark。然后启动Wireshark,在“抓包”界面应该能看到所有网卡,并且点蓝色鲨鱼图标能正常开始抓包。如果提示“You don't have permission to capture on that device”,大概率是权限没加好或者没重新登录。
2.3 AX210网卡驱动常见报错与固件问题
就算内核版本够了,AX210还有个绕不开的点:固件。iwlwifi需要从/lib/firmware加载iwlwifi-ty-*系列的固件文件。Ubuntu 22.04自带的linux-firmware包应该已经包含AX210所需固件,但如果你的系统是精简安装,或者固件被误删,就会看到类似这样的报错:
iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-ty-a0-gf-a0-83.ucode failed with error -2这时候补装固件即可:
sudo apt install --reinstall linux-firmware或者从Intel的官方仓库拉最新的固件到/lib/firmware:
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git sudo cp -r linux-firmware/iwlwifi-* /lib/firmware/ sudo update-initramfs -u sudo reboot关于固件,我再补充一个细节:AX210的固件文件名末尾的数字会变,比如83、86、89,它们对应不同的API版本,必须和内核的iwlwifi驱动版本匹配。如果你混用了旧版固件,系统可能能搜到Wi-Fi但一连接就掉线,或者monitor模式起不来。所以最好用apt的linux-firmware包来管,别手动去网上乱下载覆盖。
3. 核心思路拆解:抓无线包和抓有线包完全是两码事
3.1 为什么无线抓包要先开Monitor模式
普通网卡默认工作在“受管模式”(Managed Mode),它只会接收发给本机的帧,而且硬件层面会自动过滤掉其他目的地址的帧、还会对加密帧进行解密。Wireshark在这种情况下看到的包非常有限,基本只有自己的通信流量。而无线抓包的核心需求是:拿到空口上的所有帧——不管是发给谁的,只要在空中传输,我们就要能收到。这就得把网卡切到Monitor模式(监听模式)。
Monitor模式下,网卡不再关联到任何AP,而是被动接收所有在空中传播的无线电帧。你可以把它理解成把收音机调到某个频段,不管是什么电台的信号都能收到,而不是只接收某个频道的节目。这个模式下,Wireshark才能看到Beacon帧、Probe Request/Response、Authentication帧等802.11管理帧,这些是分析Wi-Fi网络、排查干扰、定位连接问题的基础。
AX210对Monitor模式的支持还算给力,但有个限制:它只能监听当前所在的信道,不能像某些专业无线网卡(比如Atheros AR9280)那样做多信道同时监听。另外AX210在某些内核版本上,iwlwifi的Monitor模式存在一个已知问题:信道宽度设置和实际信道不匹配,导致只能抓到部分数据帧。这个问题我会在后面的实操部分详细说怎么绕。
3.2 Wireshark两种抓包路径的选择:直接抓还是tcpdump
抓包工具上,Wireshark本身可以直接从网卡抓包,但我在实际工作中更推荐先用tcpdump把包存成pcap文件,再用Wireshark做分析。理由有三点:
- 无线环境下的包量很大,尤其一个信道里可能有几十个设备在通信,Wireshark的实时刷新会占用大量CPU和内存,容易掉包。
- Monitor模式下Wireshark的显示过滤和分析功能会因为帧格式复杂而变慢,不如先粗抓再离线分析灵活。
- 用
tcpdump抓包可以通过命令行精确控制抓包时长、文件大小,自动化程度高。
我通常的做法是:
sudo tcpdump -i wlp0s20f3 -n -w /tmp/air.pcap(网卡名称因人而异,后面说怎么查。)需要抓固定数量或固定大小就加-c 10000或-C 10 -W 5(每个文件10MB轮转最多5个)。抓完之后,再打开Wireshark读取pcap文件,或者用tshark做命令行分析,效率高很多。
3.3 关于AX210的驱动选型:内核自带iwlwifi vs 第三方驱动
AX210没有任何第三方闭源驱动可选,Intel的Wi-Fi网卡官方驱动就是内核里的iwlwifi,这点和Realtek网卡有本质区别。Realtek的8812BU、8811AU经常需要手动编译驱动,而且那些驱动为了支持Monitor模式还要打补丁,维护起来很痛苦。AX210你不需要去GitHub找任何驱动项目,只要内核版本够新、固件齐全,它就能工作。这也是我选择AX210的最重要原因——稳定、省心。
但“省心”不等于“无脑”。iwlwifi驱动的Monitor模式行为受内核版本影响很大,比如在5.15内核上开启Monitor模式时,如果信道设置不对,可能只抓到加密数据帧的头部而看不到完整内容。5.17+内核修复了部分问题,但iwlwifi对6GHz频段(Wi-Fi 6E)的监听依然有些限制。所以如果你主要抓5GHz和2.4GHz,AX210完全够用;如果一定要抓6GHz WPA3,可能要另外考虑支持更好的网卡。
4. 实操第一步:让AX210进入监听模式
4.1 找到网卡接口名
在Ubuntu上,网卡接口名通常是wlxxxxxxxxxx或wlpXsY这种。用ip link或iw dev查看:
ip link输出里一般有两个物理接口,一个是有线以太网(比如enp2s0),一个是无线网卡(比如wlp0s20f3)。我的AX210在笔记本电脑上的接口名是wlp0s20f3,因为PCI位置决定了这个命名。你在后面的所有命令中都要用你实际的接口名替换。
4.2 用NetworkManager把网卡“释放”出来
这里有个关键坑:如果直接用iw dev wlan0 set type monitor,往往会出现“Device or resource busy”的报错,因为NetworkManager正管理着这块无线网卡,不允许外部工具改变它的状态。所以第一步要先把网卡从NetworkManager手里释放出来。
Ubuntu 22.04里,可以临时把这个网卡设置为“未托管”:
sudo nmcli device set wlp0s20f3 managed no执行之后,再查看ip link,网卡地址后面可能会多一个NO-CARRIER或者变得不可用,这没关系。然后用ip把这个接口拉起来(有些系统已经是up状态):
sudo ip link set wlp0s20f3 up4.3 切换Monitor模式并设置信道
核心命令:
sudo iw dev wlp0s20f3 set type monitor sudo iw dev wlp0s20f3 set channel 6 sudo ip link set wlp0s20f3 up先说明一下信道怎么选:Wi-Fi 2.4GHz常用信道1、6、11(这三个不重叠),5GHz信道要看你的AP实际用哪个。不知道当前AP在哪个信道的话,可以用iw dev wlp0s20f3 scan扫描,但Scan在Monitor模式下不太好使,我建议先打开Wireshark抓一小段看看Beacon帧,从帧里能直接读到信道信息。如果你是为了分析自家网络,直接在路由器后台看信道就行。
信道设置完,建议用iw dev wlp0s20f3 info确认状态,输出会显示:
type monitor channel 6 (2437 MHz), width: 20 MHz (no HT)注意这个width字段,默认可能是20 MHz (no HT)。在某些内核版本上,如果这里显示80 MHz,可能会导致抓包时大量无效帧,最好手动固定为20MHz:
sudo iw dev wlp0s20f3 set channel 6 HT204.4 踩过的坑:monitor模式看起来开了,但就是收不到包
这是我遇到的最常见问题。现象是:iw dev显示type已经是monitor,但Wireshark里选择该接口抓包,一个帧都收不到,或者只有零星的Beacon帧。
排查思路分三步:
- 先确认接口是不是真的up了:
ip addr show wlp0s20f3能看到UP, LOWER_UP状态,如果显示DOWN,就算type是monitor也没用。 - 检查信道和频段:
iw dev wlp0s20f3 info确认channel不是0,如果是0说明没设置成功,重新set channel 6。 - 检查驱动是否报错:
sudo dmesg | tail -20,如果看到iwlwifi相关错误,多半是固件或信道宽度问题。
我实际遇到过一次非常隐蔽的问题:在Ubuntu 22.04内核5.15上,iw set channel 6之后,info显示信道是6,但实际上网卡在5GHz频段上监听,因为set channel需要搭配频段参数,而iw默认可能认为你用的是5GHz。这个问题的表现就是2.4GHz的流量一个都看不到。解决办法是显式指定频段:
sudo iw dev wlp0s20f3 set channel 6 2437 MHz或者用set freq:
sudo iw dev wlp0s20f3 set freq 2437如果还不行,就检查一下网卡是不是被rfkill软禁了:
rfkill list输出如果显示Soft blocked: yes,执行:
sudo rfkill unblock wifi然后再切换到monitor模式。这块问题在笔记本上尤其常见,因为很多笔记本有无线开关快捷键,可能不小心把射频关了。
5. 实操第二步:Wireshark抓包配置与关键显示过滤
5.1 创建抓包用的“监控模式接口”
直接从Wireshark的网卡列表里选择无线网卡,不一定能抓到802.11的管理帧。更稳妥的做法是使用wlan0mon这种虚拟监控接口。虽然AX210在iw set type monitor后,原来的wlp0s20f3就直接变成了monitor属性,但在Wireshark里,我们通常建议用下面的方式创建一个专门的monitor接口,便于区分:
sudo iw dev wlp0s20f3 interface add wlan0mon type monitor这条命令会创建一个名为wlan0mon的虚拟接口,它和物理接口共享射频前端。然后在Wireshark里选择这个wlan0mon抓包。如果这条命令报“command failed: Device or resource busy”,说明物理接口还在被占用,把NetworkManager的托管关掉再试。
我在实际使用中,也试过直接用物理接口的monitor模式抓包,效果一样,但有个小区别:用额外创建的wlan0mon时,Wireshark的接口列表里会更干净,而且不会误碰物理接口的IP配置。
5.2 Wireshark里最重要的几个设置
打开Wireshark,进入“捕获选项”。有几个地方需要手动调:
- 接口:选择
wlan0mon。 - 混杂模式:勾上“对所有接口使用混杂模式”。虽然monitor模式下混杂模式没有意义,但有些版本默认不勾,会导致抓包数据不完整。
- 抓包过滤器:暂时留空,我们在分析阶段用显示过滤更灵活。
- 监听长度:设置成65535,保证抓到的包是完整的,不会被截断。
- 无线路由S1(802.11)配置:如果你要解码WPA/WPA2加密帧,这里要填“解密密钥”。这个功能太关键了,后面单独说。
抓包开始后,你会看到满屏的2.4GHz或5GHz帧。如果只是零星几个Beacon帧,基本可以确定前面的配置还有问题,先回去检查。
5.3 常用的显示过滤语法(收藏级)
在Wireshark的过滤栏里,我日常用得最多的几条:
| 目的 | 过滤表达式 |
|---|---|
| 只看Beacon帧 | wlan.fc.type_subtype == 0x08 |
| 只看Probe Request | wlan.fc.type_subtype == 0x04 |
| 只看数据帧 | wlan.fc.type == 2 |
| 只看某个BSSID | wlan.bssid == 00:11:22:33:44:55 |
| 只看某个信号的帧 | wlan_radio.signal_dbm > -60 |
| 只看TCP流量 | tcp |
| 只看有重传的帧 | wlan.fc.retry == 1 |
| 只看特定源MAC | wlan.sa == aa:bb:cc:dd:ee:ff |
特别说一下wlan.fc.type_subtype这个字段:Wirespan里的802.11帧类型很多,管理帧(0)、控制帧(1)、数据帧(2),这三种大类下又有大量子类型。用Wireshark时,如果你不确定某个帧是什么类型,可以直接点开帧的树形视图里的“IEEE 802.11”层,看“Frame Control”里的Type和Subtype值。这些过滤表达式在排查Wi-Fi干扰、找信道冲突、分析设备连接过程时非常有用。
5.4 为什么我建议用tshark做批量分析
有时候pcap文件动不动几百MB,Wireshark界面拖起来卡顿。这时候用tshark在命令行做过滤和统计非常爽,它是Wireshark的命令行版本,装Wireshark时一起装了。几个实用例子:
统计每个MAC地址的帧数量:
tshark -r air.pcap -T fields -e wlan.sa | sort | uniq -c | sort -rn按信噪比过滤坏帧:
tshark -r air.pcap -Y "wlan_radio.signal_dbm > -60" -w good.pcap导出HTTP请求URL:
tshark -r air.pcap -Y "http.request" -T fields -e http.host -e http.request.uri这些命令在分析大型抓包文件时比GUI高效太多,强烈建议花半小时学一下tshark的基础用法。
6. 实操第三步:解析无线帧,真正看懂包里的内容
6.1 从Beacon帧看网络基础信息
Beacon帧是AP定期广播的信标,包含SSID、支持的速率、信道、加密方式、RSN信息等。在Wireshark里点开一个Beacon帧,可以看到:
IEEE 802.11 Beacon frame:帧类型BSSID:AP的MAC地址SSID:网络名称Supported Rates:AP支持的基础速率DS Parameter set:当前信道RSN Information:用的WPA2还是WPA3,加密算法是CCMP还是GCMP
当你抓完一段包,想快速了解周围有多少个Wi-Fi网络,可以这样统计:
tshark -r air.pcap -Y "wlan.fc.type_subtype == 0x08" -T fields -e wlan.ssid -e wlan.bssid -e wlan_radio.channel | sort -u这个输出能告诉你当前空口环境里有多少个AP、每个AP在哪个信道。对做无线勘查的人来说,这比拿手机去扫快得多,还能看到隐藏SSID(Beacon帧里SSID为空但BSSID存在)。
6.2 解密WPA/WPA2加密帧的正确姿势
抓无线包最尴尬的事:抓了一堆数据,全是加密的,根本看不到TCP/UDP内容。不过AX210监听模式下抓到的是带802.11头的加密帧,只要知道Wi-Fi密码,并且能拿到AP与客户端握手时的四次握手包,Wireshark就能帮你解密。
操作路径:菜单栏“编辑”->“首选项”->“Protocols”->“IEEE 802.11”,在“Decryption Keys”里添加一条密钥。密钥格式Wi-Fi密码那里写明文密码,Type选wpa-pwd,格式是密码:SSID。
但要注意:Wireshark解WPA/WPA2的前提是它必须看到完整的四次握手过程,也就是要抓到STA与AP第一次关联时的那几个EAPOL帧。如果你抓包时手机已经连接好Wi-Fi,后面抓到的帧不含握手过程,Wireshark是解不开的。所以最稳妥的做法是:先启动抓包,然后让客户端重新连接Wi-Fi一次,或者直接关开一下Wi-Fi。抓完之后在Wireshark的显示过滤里搜eapol,确认有4个连续的EAPOL帧(通常是一个Request/Response的往返),然后就能在包列表里看到“Decrypted”标识,明文数据都会被标记成802.11 CCMP并且能够继续往下解析。
如果对EAPOL帧还是不放心,可以用一个非常土但有效的办法:抓包时把AP的后台管理页面和别名都关掉,然后重启AP,让所有设备重新关联。重启AP的过程会触发大量EAPOL握手,保证你能抓到。当然,前提是你有AP的管理权限。
6.3 认识无线帧的RadioTap头部
在Wireshark里看无线帧,每个帧的最前面会有个Radiotap Header,它不是802.11协议的一部分,而是抓包驱动附加的元数据,记录了信号强度、噪声、信道频率、天线数量、帧校验状态等。这些信息对无线环境分析极其重要。
比如wlan_radio.signal_dbm就是信号强度,单位dBm。正常来看,-30到-50是很好,-60到-70还行,低于-80基本就不稳定了。还有wlan_radio.datarate能直接看这个帧是以多少Mbps速率发出去的,这能帮你判断AP和终端协商的速率是否合理。如果大量数据帧的Retry位为1,说明空口丢包率高、冲突多,信道拥堵了。
6.4 实操心法:把某个设备的通信过程单独拉出来看
综合前面的过滤语法,我可以这样快速定位一个设备的连接问题:
tshark -r air.pcap -Y "wlan.sa == 设备MAC || wlan.da == 设备MAC" -T fields -e frame.time -e wlan.fc.type_subtype -e wlan.ta -e wlan.ra -e wlan_radio.signal_dbm -e wlan_radio.datarate输出里就能看到这个设备从Probe Request开始,到认证、关联、四次握手、获取IP、发送HTTP请求的完整时间线。配合信号强度波形,能判断是信号弱导致的重传,还是空口拥挤导致的延迟。这套方法在排查“Wi-Fi时断时续”“智能家居设备掉线”这类问题时非常高效。
7. 常见问题与排查技巧实录
7.1 “找不到网卡”或“网卡名称奇怪”
ip link里看到的设备名是wlp0s20f3,但iw dev里只有一个物理接口,首先确认你装的内核是否支持AX210,用lspci -k看内核驱动是否被正确加载:
lspci -k | grep -A 3 Network输出应该看到Kernel driver in use: iwlwifi。如果显示没有驱动,要么内核太老,要么固件缺失。此时再回看2.1节的步骤。另外,有一些主板BIOS里关闭了无线网卡,lspci可能都看不到,这种属于硬件级问题,通常Fn+F12之类按键可以重开。
7.2 “Device or resource busy”错误
这是NetworkManager在作祟,前面提过。在执行iw命令之前,执行:
sudo systemctl stop NetworkManager或者临时把NM的托管关掉。注意在Ubuntu桌面版中,停止NetworkManager可能会导致网络图标消失,如果你用的是有线SSH远程连接,那倒没影响。抓完包记得重新开启:
sudo systemctl start NetworkManager7.3 抓到的包全是乱序和重传
无线抓包环境不像有线那样有序。空口上的帧是共享介质,碰撞、重传、乱序是正常现象。但如果你在Wireshark里看到大量Malformed Packet或者CRC错误,这就不太正常了。可能是监听信道设置太宽(80MHz)导致解码失败,也可能是信号太弱,网卡来不及完整接收每个帧。解决办法:把信道宽度固定为20MHz,然后离AP近一点再抓。还有一个手段是关闭“允许省电模式”,在iw dev里设置:
sudo iw dev wlp0s20f3 set power_save off省电模式会在无流量时休眠射频,影响抓包的连续性。
7.4 只能抓到Beacon帧,看不到数据帧
这个现象的核心是:管理帧以低速率广播,容易被监听;而数据帧可能会以很高的速率传输,或者使用MIMO、波束成形等技术,普通监听模式下可能无法完整解码所有数据帧。另外,很多AP在发送数据帧时使用了40MHz/80MHz绑定信道,而你的监听宽度不够。解决办法:
- 确认AP实际所在信道,把监听信道精确设置到那一信道。
- 用
iw dev ... set channel <信道> HT20强制20MHz,至少能抓到基本帧交换。 - 如果目标设备是5GHz,开5GHz频段的监听,而不是留在2.4GHz。
7.5 关于AX210与Wireshark版本兼容性
我用的是Ubuntu 22.04仓库里的Wireshark 3.6版,功能完全够用。如果你要用较新的解密特性,可以装Wireshark官方PPA:
sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install wireshark新版本对Wi-Fi 6E帧的解码更完善,还会支持一些新的捕获过滤器语法。但注意,PPA版本有时候和Ubuntu系统的库产生依赖冲突,装之前确保系统已apt upgrade过。
7.6 一个容易忽略的无线抓包原则:信道要“一对一”
这是新手最容易踩的大坑。Wireshark选择某个无线接口后,它只会收到这个接口当前所在信道上的帧。如果你路由器挂在6信道,但你的网卡停留在1信道,即使Beacon帧都看不到。所以每次抓包前,务必先确认你要分析的AP在哪个信道,然后iw set channel到那个信道再开始。这一点和有线抓包完全不一样,有线网卡只要在同一台交换机上就能收到所有广播流量,无线网卡却像收音机一样,调频到一个台,就只能听一个台。
8. 实际抓包案例分析:定位一个“神秘”AP的干扰源
为了让你把前面所有步骤串起来,我回放一个真实场景。某天办公室Wi-Fi开始频繁卡顿,我们怀疑有非法AP在干扰,但现场又不好拿手机到处扫。于是我用了这套组合:
- 把AX210从NetworkManager释放,切到monitor模式,信道设置为办公室AP的信道11。
- 用tcpdump抓了5分钟,生成
air.pcap。 - 用tshark统计所有Beacon帧的BSSID与SSID:
tshark -r air.pcap -Y "wlan.fc.type_subtype == 0x08" -T fields -e wlan.bssid -e wlan.ssid | sort -u结果发现除了公司AP,还有两个未知BSSID在广播相同的SSID,而且信号强度比公司AP还高。进一步抓包,配合wlan_radio.signal_dbm过滤,发现非法AP占用信道11并且信道宽度是40MHz,把公司AP的正常通信压制成了大量冲突。最后用定位工具朝那个方向走,不到半小时就找到了设备。整个过程中,AX210的稳定监听和Wireshark的过滤统计帮了大忙,如果用手机APP扫,可能只能看到信号强度和SSID,根本分辨不清是哪个设备在作怪。
这个案例里有一条很重要的经验:抓包分析无线问题时,时间——记录关键时间点很重要。在办公室环境里,干扰可能是间歇性的,如果不记录开始和结束时间,后面分析日志会对不上。建议在tcpdump抓包命令执行的同时,用date +%s把时间戳写下来,再把AP后台的异常日志时间也记录下来,对照分析效率翻倍。
9. 实用小工具与工作流补充
9.1 用aircrack-ng套件辅助抓包
Wireshark负责分析和显示,但某些场景下我会用aircrack-ng套件里的工具做预处理。比如airmon-ng check kill可以一键释放网卡,避免手动和NetworkManager纠缠:
sudo airmon-ng check kill sudo airmon-ng start wlp0s20f3不过airmon-ng更偏向渗透测试场景,日常抓包分析不需要。如果你只是想分析自己的网络,完全没必要引入这套工具链,增加复杂度。
9.2 自动抓包脚本:定时任务批量采集
我有段时间需要连续一周每天采集办公室无线信号质量,于是写了个简单脚本,丢在crontab里跑:
#!/bin/bash interface=wlp0s20f3 timestamp=$(date +%Y%m%d_%H%M) sudo tcpdump -i $interface -n -w /data/wifi_$timestamp.pcap -G 3600 -W 1 &实际用下来,pcaps每天大概2GB,配合tshark做批量统计足够用了。这个脚本没什么技术含量,但实用性很强。如果你也有长期无线环境监测的需求,可以参考这个思路。
9.3 Wireshark主窗口布局调整建议
抓完无线包后,在Wireshark的“视图”菜单里把“时间显示格式”改成“相对时间(自抓包开始)”,排查设备连接过程时间线时方便很多。另外把“颜色规则”里的“TCP错误”等打开,能快速发现重传或乱序问题。无线帧的字段层级比较深,善用“分析”->“显示过滤器表达式”,不用死记所有过滤语法。
10. 后续可以扩展的方向
这套Ubuntu + Wireshark + AX210的组合,本身已经很够用。如果你还想玩得更深,有几个方向我可以点一下:
- 用Python的
pyshark库做自动化解析:抓包数据直接进脚本,自动出统计报告。但注意pyshark依赖tshark,而且对大文件的解析速度不算快,建议先用tshark预处理成CSV再喂给pandas。 - 把抓包能力接入到ESP32之类的嵌入式项目里,做无线协议的二次开发,AX210的帧注入能力(packet injection)在这里非常关键。不过帧注入对驱动的要求更高,有些内核版本会禁用
iwlwifi的注入功能,需要编译期配置,不是所有发行版都默认开启。 - 结合Wireshark的GeoIP功能,分析无线客户端的地理位置。但这玩意儿在无线端基本用不上,除非你又转去做IP流量分析,那就另当别论了。
我个人在实际使用中,最深的体会是:AX210这套方案的精髓不在网卡本身,而在于Ubuntu生态下内核与驱动的高度集成。你不需要像对待Realtek网卡那样天天找驱动补丁,只要守住内核版本和固件这两个基本盘,剩下的交给Wireshark就完了。如果哪天你在Ubuntu上折腾AX210抓包遇到了奇葩问题,记得先看一眼内核版本,再看一眼信道设置,这两步能解决八成以上的怪问题。最后再分享一个小技巧:抓完包别急着关终端,先用tshark -r xx.pcap -q -z io,stat,0看一眼总体流量统计,确认抓到的东西是不是符合预期,免得等你在Wireshark里加载完才发现选错了信道,白白浪费时间。