Wi-Fi 图标突然断掉,然后几秒钟后自动连回来。一天来个几次,每次都打断手头的工作。
这个问题困扰了我一段时间。信号明明满格,不是那种距离太远信号弱的情况。就是上一秒还在正常传数据,下一秒 macOS 左上角的 Wi-Fi 图标直接变成断开状态。
环境
- MacBook Pro M4 Pro (Mac16,8),macOS Tahoe 26.3.1
- 路由器:Verizon Fios G3100
- Wi-Fi 连接:802.11ax (Wi-Fi 6),5GHz CH161,80MHz 带宽
- 信号强度:-50 dBm,SNR 34 dB——非常好的信号
- 同时跑着 Tailscale(13 个 utun 隧道)
第一轮排查:Mac 端基础检查
先跑了一轮常规诊断:
ping -c 3 -t 5 8.8.8.83 packets transmitted, 3 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 9.203/14.564/22.982/6.026 msPing 网关也正常:
ping -c 5 -t 5 192.168.1.15 packets transmitted, 5 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 3.795/6.957/16.759/4.933 msDNS 解析正常,接口没有错误计数(Ierrs=0, Oerrs=0, Coll=0),没有热节流。当前一切看起来都挺好。
问题是——断网不是现在发生的,它是间歇性的。需要找到断网那一刻到底发生了什么。
第二轮排查:macOS 系统日志
macOS 的统一日志系统记录了所有 Wi-Fi 事件。关键进程是 airportd(Wi-Fi 守护进程)和 configd(网络配置守护进程)。
TIPmacOS 的
log命令可能跟 shell 的内置函数冲突。如果log show返回奇怪的错误(比如too many arguments),用完整路径/usr/bin/log show。
已知今天早上 8:30-9:30 之间有过断连。直接查 configd 的日志:
/usr/bin/log show --start "2026-03-31 08:30:00" --end "2026-03-31 09:30:00" \ --style compact --predicate 'process == "configd"' 2>&1 \ | grep -iE "en0|SSID|link|INACTIVE|DHCP"这一查,完整的断连时间线清清楚楚地出来了。
断连时间线
日志里记录了精确到毫秒的事件链:
| 时间 | 事件 | 含义 |
|---|---|---|
| 08:35:31 | RSSI 从 -52 降到 -59 dBm | 信号突然变弱 |
| 08:35:36 | RSSI -60 dBm,txRate 从 960→648 Mbps | 传输速率急剧下降 |
| 08:35:38 | txRate/rxRate = 0.0 | 数据传输完全停止 |
| 08:35:39 | SNR 从 33 降到 0 | 彻底丢失信号 |
| 08:35:40 | Auto-join triggered: retry (assoc) | Mac 开始尝试重连 |
| 08:36:14 | en0: no SSID (IOCTL 错误 0xe0822403) | Wi-Fi 芯片报告无网络 |
| 08:36:17 | en0 link INACTIVE | Wi-Fi 图标断开 |
| 08:36:19 | DHCP 移除 IP 192.168.1.x | IP 地址被回收 |
| 08:36:20 | 重新关联成功 | 自动连回 |
整个断连持续了大约 40 秒(08:35:38 到 08:36:20)。
关键线索
看 airportd 的 LQM(Link Quality Metrics)日志,信号恶化过程非常清楚:
08:35:31 LQM: rssi=-59dBm snr=31 txRate=648.5Mbps txRetrans=1008:35:36 LQM: rssi=-60dBm snr=33 txRate=648.5Mbps txRetrans=408:35:38 LQM: rssi=-61dBm snr=33 txRate=0.0 rxRate=0.008:35:39 LQM: rssi=-62dBm snr=0 txRate=0.0 rxRate=0.0RSSI 在 8 秒内从 -52 骤降到 -62,然后信号彻底消失。 这不是自然的信号衰减(那种是缓慢渐进的),而是路由器端主动降低了对该客户端的发射功率,然后断开连接。
再看 Auto-join 的触发原因:
AUTO-JOIN: Auto-join triggered (trigger=retry (assoc), mode=best)trigger=retry (assoc) 说明 Mac 是被动断开后尝试重新关联,不是 Mac 主动断开的。问题在路由器端。
登录路由器:找到根因
打开 G3100 的管理页面 https://192.168.1.1,在 Wi-Fi > Primary Network 页面底部看到了:
Self-Organizing Network EnabledSelf-Organizing Network(SON)就是罪魁祸首。
什么是 SON?
SON 是 Verizon G3100 路由器内置的 band steering 功能。它的设计意图是”智能”地把设备分配到最合适的频段(2.4GHz / 5GHz 1 / 5GHz 2)。
实际上它做的事情是:
- 路由器持续监控每个客户端的连接质量
- 当它认为某个客户端应该切换频段时,主动降低对该客户端的发射功率
- 客户端信号急剧下降,被迫断开
- 路由器期望客户端重新扫描后连到”更好”的频段
这完全吻合我在日志里看到的 RSSI 骤降模式。路由器先把信号从 -52 降到 -62,Mac 丢失连接后触发 Auto-join 重连。
IMPORTANTSON 是 G3100 和 E3200 扩展器特有的功能。Verizon 的其他型号路由器可能有不同的 band steering 实现。
路由器频道配置也有问题
在 Radio Management 页面看到:
| Band | Channel | Width | Health Score |
|---|---|---|---|
| 2.4 GHz | Ch. 11 | 20/40MHz | Not available |
| 5 GHz 1 | Ch. 161 (Auto) | 80MHz | 5.58 |
| 5 GHz 2 | Ch. 36 (Auto) | 80MHz | 7.59 |
5 GHz 1 的 Health Score 只有 5.58(满分 10),远低于 5 GHz 2 的 7.59。路由器的 SON 算法看到这个差异后,很可能在尝试把我的 Mac 从 5GHz 1 (CH161) 推到 5GHz 2 (CH36)。
另外,之前 2.4 GHz 是关闭的,只有两个 5GHz radio 在工作。这意味着 SON 只能在 5GHz 1 和 5GHz 2 之间来回踢设备,更容易触发不必要的切换。
解决方案
关闭 SON
路径:Advanced > Wi-Fi > Primary Network → 底部 Self-Organizing Network → 改为 Disabled。
关闭后路由器会把之前合并的 SSID 拆分成各频段独立配置。所有频段的 SSID 和密码保持不变,设备不需要重新连接。
开启 2.4 GHz
之前我关闭了 2.4 GHz,只用 5GHz。但开着 2.4 GHz 有好处:
- IoT 设备(加湿器、智能开关等)很多只支持 2.4 GHz
- 2.4 GHz 穿墙能力更强,作为备用频段
- 减少 5 GHz radio 的客户端负载
没有改频道
Fact-check 的时候发现一个认知错误:CH161 不是 DFS 频道。美国的 DFS 频道是 CH52-64 和 CH100-144(UNII-2 和 UNII-2 Extended 频段),这些频道与军事和气象雷达共享频谱。CH161 属于 UNII-3 频段 (5725-5850 MHz),不需要雷达检测,不存在 DFS 强制频道切换的问题。
所以 CH161 本身没问题,Health Score 低可能只是因为周围有其他 AP 在同一频道上竞争。
这不是第一次被 G3100 坑了
翻了一下之前的记录,这台 G3100 之前还出过一个问题:路由器的防火墙按 MAC 地址封锁了 Raspberry Pi 的 IPv4 TCP 流量,日志里一堆 Pkt_Illegal 和 fragment errors。当时的解决办法是 MAC spoofing。
G3100 作为 Verizon Fios 的标配路由器,基础路由功能没问题,但它的”智能”功能(SON、防火墙规则)经常好心办坏事。如果你用的是 G3100 且遇到类似的间歇性断网,先关 SON 试试。
macOS Wi-Fi 调试备忘
这次排查用到的几个命令,以后可以直接复用:
查 Wi-Fi 断连事件:
/usr/bin/log show --start "2026-03-31 08:30:00" --end "2026-03-31 09:30:00" \ --style compact --predicate 'process == "configd"' 2>&1 \ | grep -iE "en0|SSID|link|INACTIVE|DHCP"查 airportd 信号质量指标:
/usr/bin/log show --start "2026-03-31 08:35:00" --end "2026-03-31 08:36:00" \ --style compact --predicate 'process == "airportd"' 2>&1 \ | grep "LQM:"查 Wi-Fi 芯片信息:
system_profiler SPAirPortDataType | grep -A5 "Signal\|Channel\|PHY"查电源管理对 Wi-Fi 的影响:
pmset -g log | grep -E "Sleep|Wake|DarkWake"CAUTION
log show不加--info或--debug时只显示 default 级别的日志。Wi-Fi 的关键事件(disassociation、link state change)通常在 default 级别,但如果你需要更细粒度的调试信息,加上--info --debug。注意输出量会大很多。
总结
- 症状:MacBook Wi-Fi 图标间歇性断开,信号满格时也会发生
- 根因:Verizon G3100 路由器的 Self-Organizing Network (SON) 主动踢掉设备进行频段切换
- 证据:macOS 日志显示 RSSI 在 8 秒内骤降 10dB,
trigger=retry (assoc)确认是被动断开 - 修复:关闭路由器的 SON 功能
如果你也在用 Verizon G3100 并且遇到莫名其妙的 Wi-Fi 断连,建议的排查顺序:
- 用
log show确认断连时间和模式 - 登录路由器关闭 SON
- 观察几天,如果仍然断连,考虑把频道从 Auto 改为固定频道
- 如果以上都不行,考虑用独立 AP 替代 G3100 的 Wi-Fi