不知道大家有没有踩过这样的坑:

开视频会议或者打联机游戏,突然画面就卡住了。抬头看一眼 macOS 右上角的菜单栏,Wi-Fi 图标依然满格显示“已连接”。

你下意识地点开测速软件,可这时候网络可能又悄悄恢复了;或者你用快捷键打开苹果原生的“无线诊断”,等它转悠半天吐出一份几十兆、全是十六进制底层 log 的 .tar.gz 压缩包,普通人根本看不懂到底哪一段坏了。

这种“菜单栏报喜不报忧”的幽灵网络问题,其实是很多 Mac 用户的常态。

平时作为独立开发者,在给 Mac 写小工具的过程中,我一直在想:能不能用最原生、最轻量的方式,做一款既不打扰系统、又能一眼看清整条网络管线真实状态的工具?

于是有了 NetDoctor。


1. 为什么“已连接”往往是个假象?

在 macOS 底层,网络并不是“连上”或“断开”这么简单的一维布尔值。

现实场景往往要复杂得多:

  • 本机 Wi-Fi 连上了路由器,但光猫死机了:你的无线物理链路是通的,但网关其实 ping 不通;
  • 路由器通了,但上游 DNS 污染或故障:能收到 IP 包,但域名解析全部超时;
  • 开了代理工具(Clash/Surge)或者接了雷雳扩展坞:扩展坞里明明没插网线,但驱动让内核接口常驻激活,导致系统路由表里躺着一堆空口。

NetDoctor 的设计思路很简单:不做笨重的应用层测速,而是把整条“网络管线”切开给你看。

从 本机 Mac →→ 局域网网关 →→ 递归 DNS 解析 →→ 真实公网出口。点一下检查,1 秒钟之内告诉你: 如果上不了网,问题到底是卡在你的无线网卡、你家的路由器,还是运营商的 DNS 服务器上。


2. 打开终端才发现:Mac 竟然偷偷连了 28 个网络接口?

在开发抓取系统底层接口表(getifaddrs)时,我还发现了一个有趣的现象:一台看似只连了 Wi-Fi 的 MacBook,底层常常能扫出二十多个网络接口。

很多朋友第一次看到 28 个接口会被吓一跳,其实它们很多是苹果生态的“幕后功臣”:

  • awdl0 / llw0:Apple Wireless Direct Link,隔空投送(AirDrop)、随航、通用控制全靠它;
  • utun*:大家平时用的各类代理软件、VPN,开启 TUN 虚拟网卡后创建的隧道通道;
  • anpi*:Apple Silicon M 芯片内部的硬件总线通信;
  • en1~en8:雷雳控制器与外接扩展坞的硬件端口。

为了不让大家被密密麻麻的技术参数弄懵,我们在界面上做了语义分层: 概览页严格采用物理网卡口径,只告诉你当前主力上网的物理端口;而在接口详情页,我们给每一个接口都做了语义分类(Wi-Fi、有线、虚拟隧道、AirDrop 专线、硬件总线),让大家清楚看懂系统里到底有哪些虚拟网卡在跑流量。


3. 抓取“间歇性掉线”:本地时间线

很多朋友提到过一个痛点:“间歇性断网(intermittent drop-out)最烦人,因为你想测的时候它已经好了。”

针对这点,NetDoctor 在后台挂载了轻量的网络路径监听(基于原生的 NWPathMonitor)。一旦网络发生断联、网关失联或路径突变,它会自动在本地记录下事件时间线(Event Timeline)。

你不需要去翻 macOS 晦涩的系统日志,打开时间线就能看到几点几分网络发生过抖动、丢包率是多少、恢复时延迟是几百毫秒。

如果需要向网络管理员反馈,还可以一键导出一份脱敏的 JSON 支持包(自动对家庭 Wi-Fi 名称等隐私信息打码),人肉可读,干净利索。

 

4. 坚持原则:纯原生、只读、零特权

作为 Mac 工具控,我对常驻后台的系统级工具有着自己的原则:

  1. 纯 SwiftUI 原生构建:没有 Electron 的内存膨胀,冷启动毫秒级,深度契合 macOS 的毛玻璃与暗色模式;
  2. 严格只读沙盒(App Store Sandbox):不安装任何 LaunchDaemon、不申请管理员 Root 权限、不修改你的 DNS、路由表或系统服务,退出即彻底释放;
  3. 零外部依赖、零数据上传:没有遥测追踪,所有体检数据 100% 停留在你自己的 Mac 上。

关于作者与我的 macOS 工具箱

我是独立开发者Kevin Labs,平时喜欢研究 macOS 系统中那些“虽然小但总让人不太爽”的细节痛点。好的小工具应该像趁手的手术刀,平时安静隐形,需要时直击痛点。

如果你也是 Mac 重度用户,或许我的这些原生工具也能帮到你:

  • [NetDoctor]:纯原生、只读安全的网络全链路体检工具。拆穿假 Wi-Fi 信号,记录网络抖动时间线(Mac App Store 免费下载)。
  •  [VolMix - Per-App Volume]:菜单栏独立音量控制。支持针对不同网页、应用单独调节音量或一键静音(支持 7 天免费试用)。
  •  [PresenterDeck - 演示流程台]:专门为演讲、技术分享、开会设计的节奏控制台。支持分章节议程规划与秒级排练复盘(支持 7 天免费试用)。

文章中提到的网络怪相,如果有朋友在自己的 Mac 上复现过其他奇怪的场景,或者对工具的交互细节有任何建议,欢迎在评论区一起拍砖交流!