1814 字
9 分钟
MacBook Wi-Fi 莫名断连?大概率是路由器的 Self-Organizing Network 在搞鬼

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 端基础检查#

先跑了一轮常规诊断:

Terminal window
ping -c 3 -t 5 8.8.8.8
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 9.203/14.564/22.982/6.026 ms

Ping 网关也正常:

Terminal window
ping -c 5 -t 5 192.168.1.1
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.795/6.957/16.759/4.933 ms

DNS 解析正常,接口没有错误计数(Ierrs=0, Oerrs=0, Coll=0),没有热节流。当前一切看起来都挺好。

问题是——断网不是现在发生的,它是间歇性的。需要找到断网那一刻到底发生了什么。

第二轮排查:macOS 系统日志#

macOS 的统一日志系统记录了所有 Wi-Fi 事件。关键进程是 airportd(Wi-Fi 守护进程)和 configd(网络配置守护进程)。

TIP

macOS 的 log 命令可能跟 shell 的内置函数冲突。如果 log show 返回奇怪的错误(比如 too many arguments),用完整路径 /usr/bin/log show

已知今天早上 8:30-9:30 之间有过断连。直接查 configd 的日志:

Terminal window
/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:31RSSI 从 -52 降到 -59 dBm信号突然变弱
08:35:36RSSI -60 dBm,txRate 从 960→648 Mbps传输速率急剧下降
08:35:38txRate/rxRate = 0.0数据传输完全停止
08:35:39SNR 从 33 降到 0彻底丢失信号
08:35:40Auto-join triggered: retry (assoc)Mac 开始尝试重连
08:36:14en0: no SSID (IOCTL 错误 0xe0822403)Wi-Fi 芯片报告无网络
08:36:17en0 link INACTIVEWi-Fi 图标断开
08:36:19DHCP 移除 IP 192.168.1.xIP 地址被回收
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=10
08:35:36 LQM: rssi=-60dBm snr=33 txRate=648.5Mbps txRetrans=4
08:35:38 LQM: rssi=-61dBm snr=33 txRate=0.0 rxRate=0.0
08:35:39 LQM: rssi=-62dBm snr=0 txRate=0.0 rxRate=0.0

RSSI 在 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 Enabled

Self-Organizing Network(SON)就是罪魁祸首。

什么是 SON?#

SON 是 Verizon G3100 路由器内置的 band steering 功能。它的设计意图是”智能”地把设备分配到最合适的频段(2.4GHz / 5GHz 1 / 5GHz 2)。

实际上它做的事情是:

  1. 路由器持续监控每个客户端的连接质量
  2. 当它认为某个客户端应该切换频段时,主动降低对该客户端的发射功率
  3. 客户端信号急剧下降,被迫断开
  4. 路由器期望客户端重新扫描后连到”更好”的频段

这完全吻合我在日志里看到的 RSSI 骤降模式。路由器先把信号从 -52 降到 -62,Mac 丢失连接后触发 Auto-join 重连。

IMPORTANT

SON 是 G3100 和 E3200 扩展器特有的功能。Verizon 的其他型号路由器可能有不同的 band steering 实现。

路由器频道配置也有问题#

Radio Management 页面看到:

BandChannelWidthHealth Score
2.4 GHzCh. 1120/40MHzNot available
5 GHz 1Ch. 161 (Auto)80MHz5.58
5 GHz 2Ch. 36 (Auto)80MHz7.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 断连事件:

Terminal window
/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 信号质量指标:

Terminal window
/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 芯片信息:

Terminal window
system_profiler SPAirPortDataType | grep -A5 "Signal\|Channel\|PHY"

查电源管理对 Wi-Fi 的影响:

Terminal window
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 断连,建议的排查顺序:

  1. log show 确认断连时间和模式
  2. 登录路由器关闭 SON
  3. 观察几天,如果仍然断连,考虑把频道从 Auto 改为固定频道
  4. 如果以上都不行,考虑用独立 AP 替代 G3100 的 Wi-Fi
MacBook Wi-Fi 莫名断连?大概率是路由器的 Self-Organizing Network 在搞鬼
https://blog.lishuyu.top/posts/macbook-wifi断连排查/
作者
猫猫魔女
发布于
2026-03-31
许可协议
CC BY-NC-SA 4.0