§ 环境 02 · macOS
macOS 上装的难点不在镜像本身,而在两处授权:首次打开放行与网络扩展启用;两处都通过后,首次连接耗时的中位数为 2.6 s,Apple 芯片比 Intel 快约 0.6 s。
§ 01 · 机型对照
macOS 侧的安装包只有一个 universal 镜像可用,区别不在安装包,而在系统版本与扩展授权方式。系统低于 12.6 时装上去也会在扩展加载阶段失败。

| 系统版本 | 芯片 | 安装 | 扩展授权方式 | 首连耗时 |
|---|---|---|---|---|
| macOS 15.1(24B83) | Apple M2 | 通过 | 登录项与扩展内启用 | 2.4 s |
| macOS 14.6.1(23G93) | Apple M2 | 通过 | 登录项与扩展内启用 | 2.6 s |
| macOS 13.6.9 | Intel i5-8259U | 通过 | 隐私与安全性内仍要打开 | 3.1 s |
| macOS 12.6(21G115) | Intel i7-9750H | 通过 | 隐私与安全性内仍要打开 | 3.4 s |
| macOS 11.7.10 | Intel i5-8259U | 安装后无法加载扩展 | 不支持:最低要求 12.6 | — |
两者装的是同一个 universal 镜像,差别出现在签名与扩展两处:Apple 芯片要求扩展使用 arm64 变体签名,Intel 机器则回落到 x86_64 变体;下载时若被 CDN 只缓存了单架构分片,Apple 芯片上会报签名不匹配。
§ 02 · 下载与校验
macOS 上比哈希更方便的一步是 spctl:它直接告诉你系统愿不愿意加载这个包,而哈希只告诉你文件是否完整。两者一起做,能省掉一轮试装。
Terminal(无需 sudo)
$ shasum -a 256 ~/Downloads/KuaiMiao-3.9.6-universal.dmg
$ ls -l ~/Downloads/KuaiMiao-3.9.6-universal.dmg
$ spctl -a -vvv -t install ~/Downloads/KuaiMiao-3.9.6-universal.dmg
spctl 返回 accepted 且 source 为 Notarized Developer ID 时才说明公证链完整。返回 rejected 时后面会跟一行原因,常见的是“source=Unnotarized Developer ID”,说明下载到的是旧构建。
| 文件 | 体积 | SHA-256 前 16 位 | 适用芯片 |
|---|---|---|---|
| KuaiMiao-3.9.6-universal.dmg | 98.7 MB | a8c3601743428298 | Intel + Apple 芯片 |
| KuaiMiao-3.9.6-arm64.dmg | 92.3 MB | cac114c742fa6b47 | 仅 Apple 芯片 |
universal 镜像完整体积为 98.7 MB。用浏览器下载时若中途断网,文件会留下不完整的部分,双击挂载时报“无法打开磁盘映像”。此时不必重算哈希,先看体积即可判断。
curl -L -o 下载可以保留断点信息,配合 -C - 续传;浏览器下载在扩展名为 dmg 时不会提示文件不完整。§ 03 · 挂载安装
直接在挂载卷里双击运行是最常见的错误做法:应用能跑,但每次启动都从只读卷加载,更新与扩展注册都会失败。
Finder 侧栏会出现一个卷标,卷内通常只有应用本体与一个应用程序目录的快捷方式。挂载耗时 1 至 3 秒。
拖动而不是双击运行。拖动完成后系统会复制约 168 MB 内容,M2 机器上约 4 秒。
右键卷标 → 推出。不推出时下次挂载会因同名卷冲突而挂到带数字后缀的路径下,扩展注册会指错位置。
macOS 12.6 至 14.x 上首次双击会弹出“无法打开,因为 Apple 无法检查其是否包含恶意软件”,这不是错误提示,而是 Gatekeeper 的默认流程。macOS 15 上同一步的文案改为“无法验证开发者”,处理路径相同。


§ 04 · 首次打开授权
三条路径按侵入性从低到高排列。前两条只是放行一次,第三条改动文件属性,属于一次性手段,不建议长期使用。
在应用程序目录里按住 Control 点击应用图标,选择“打开”,弹窗中会出现“打开”按钮。这条路径的作用是让系统把该应用记入放行名单,之后正常双击即可。macOS 15 起右键菜单不再提供该入口。
先双击一次让系统拦下,再打开“系统设置 → 隐私与安全性”,页面底部会出现“已阻止使用”的条目与一个“仍要打开”按钮。点击后需要输入管理员密码,随后再次双击应用并在弹窗中选择“打开”。
Terminal
$ xattr -l /Applications/KuaiMiao.app
$ xattr -dr com.apple.quarantine /Applications/KuaiMiao.app
$ codesign -dv --verbose=4 /Applications/KuaiMiao.app 2>&1 | head -20
§ 05 · 系统扩展
macOS 上接管流量依赖网络扩展,扩展需要两次授权:一次在扩展列表里启用,一次在添加 VPN 配置时允许。两次授权缺一,客户端都会显示未连接。
| 授权项 | 位置 | 未授权时的表现 |
|---|---|---|
| 网络扩展 | 系统设置 → 通用 → 登录项与扩展 → 网络扩展 | 客户端显示未连接,utun 接口不出现 |
| VPN 配置 | 首次连接时系统弹窗 → 允许 | 连接按钮点了没反应,无任何提示 |
| 完全磁盘访问(可选) | 隐私与安全性 → 完全磁盘访问 | 仅影响分流规则读取应用列表,不影响连接 |
确认扩展状态
$ systemextensionsctl list | grep -i kuaimiao
$ ifconfig | grep -c utun
$ scutil --nc list | grep -i kuaimiao
先看 utun 接口数量:装前通常已有 1 至 3 个系统自建 utun,连接后应多出一个。数量没变说明扩展没有真正接管,而不是线路问题。再看 scutil --nc list 是否出现本产品的配置项,没有则说明第二次授权没通过。

§ 06 · 已损坏排查
这句提示在 macOS 上几乎是万能挡箭牌,实际对应四种完全不同的成因。按成因顺序排查,比反复重装有效得多。
| 成因 | 判断依据 | 处理方式 |
|---|---|---|
| 下载不完整 | 体积小于 98.7 MB,或挂载时报磁盘映像错误 | 重新下载并核对哈希 |
| 隔离属性未清 | xattr -l 显示 com.apple.quarantine,签名正常 | 走首次打开授权的三条路径之一 |
| 架构装错 | Intel 机器装了 arm64 镜像(92.3 MB) | 换装 universal 镜像 |
| 签名或公证缺失 | codesign -dv 无 Authority 行,spctl 返回 rejected | 文件被改写,重新下载 |
在 Intel 机器上装 arm64 镜像后,系统给出的提示与“签名缺失”完全相同,都是“应用已损坏”。区别只在体积:92.3 MB 的 arm64 镜像不该出现在 Intel 机器的下载记录里。看一眼安装包体积就能判断,不必重装系统或重装 Xcode 工具链。
提示出现的位置就是成因:出现在下载完成后第一次双击挂载时,是文件不完整;出现在挂载成功但双击应用时,是隔离属性或签名;出现在拖入应用程序目录之后,是磁盘权限或配额。按位置分流,比按提示文本猜测准确得多。
这条判断法在 2026-11-08 的 24 台机器上验证过:挂载阶段失败的 6 台全部是下载不完整,双击阶段失败的 11 台里有 9 台是隔离属性未清,拖入后失败的 7 台里有 5 台是账户磁盘配额不足。位置比文案更可靠。
§ 07 · 与 Windows 的差异
两个桌面系统的故障名称有重叠,取证动作却完全不同。下表把常见重叠项并排放,避免把 Windows 的经验直接套用。
| 故障现象 | Windows 取证 | macOS 取证 |
|---|---|---|
| 提示发布者未知 | Get-AuthenticodeSignature 看 Status | spctl -a -vvv 看 source |
| 应用无法启动 | 查 VC++ 运行库与位数 | 查系统版本与扩展授权 |
| 装完连不上 | netstat 看 17890 监听 | scutil --nc list 看配置项 |
| 驱动或扩展缺失 | Get-NetAdapter 看 Wintun | systemextensionsctl list 看状态 |
| 卸载残留 | ProgramData 目录与服务项 | /Library/SystemExtensions 与应用目录 |
对照表的价值在于减少误操作:macOS 上不存在“运行库”这一层,Windows 上也不存在 Gatekeeper。把两边的排查路径混用,最常见的后果是把扩展授权问题当成网络问题处理。


§ 08 · 迁移场景
macOS 的迁移工具会把应用本体搬过来,但不会搬扩展授权与 VPN 配置。这也是“换了新 Mac 就装不上”的常见来源。
| 场景 | 表现 | 根本原因 | 处理方式 |
|---|---|---|---|
| 迁移助理搬来应用 | 应用能开,扩展列表里没有条目 | 扩展授权与设备绑定,不随文件迁移 | 删除应用后重新安装并走一次授权 |
| 同一机器两个账户 | 管理员账户可用,普通账户连不上 | 扩展按系统安装,VPN 配置按账户 | 在普通账户内单独允许一次 VPN 配置 |
| Time Machine 恢复 | 扩展显示已启用,但连接立即断开 | 扩展缓存与恢复后的系统版本不匹配 | 重启一次并重新启用扩展 |
| 换机后沿用旧配置目录 | 端口冲突,日志里重复出现 17890 | 旧配置被整目录拷贝到新机器 | 删除 Application Support 下的配置目录 |
扩展的启用状态记录在系统数据库里,与设备标识相关。迁移助理只复制文件,不复制这份状态,因此扩展在系统看来“存在但未启用”。重新安装会重写一次注册记录,比手工修数据库快得多,也更安全。
系统扩展是整台机器共享的,VPN 配置是每账户独立的。这解释了一个常见现象:管理员账户装好并能用,切换到家庭成员账户后点连接没有任何反应——不是权限不足,而是该账户没有对应的 VPN 配置。
| 项目 | 共享范围 | 新建账户后是否需要重做 |
|---|---|---|
| 应用本体 | 整机共享(/Applications) | 不需要 |
| 网络扩展 | 整机共享 | 不需要,但需在该账户内允许 VPN 配置 |
| VPN 配置项 | 按账户独立 | 需要,每个账户首次连接都会弹一次授权 |
| 分流规则 | 按账户独立 | 需要,规则存在账户级配置里 |
迁移后的核对顺序
$ systemextensionsctl list | grep -i kuaimiao
$ scutil --nc list | grep -i kuaimiao
$ ls -d ~/Library/Application\ Support/KuaiMiao 2>/dev/null
$ ls -d /Applications/KuaiMiao.app 2>/dev/null

三种场景的共同点是“文件在、状态不在”。判断办法也就统一了:先看扩展列表有没有条目,再看账户内有没有 VPN 配置,两项缺哪项补哪项,不必重装系统。
§ 09 · 卸载清理
把应用拖进废纸篓只能删掉应用本体。扩展、网络配置与日志目录会留在系统里,重装时可能读到旧配置。
| 位置 | 内容 | 是否需手动删 |
|---|---|---|
| /Applications/KuaiMiao.app | 应用本体,约 168 MB | 拖入废纸篓即可 |
| /Library/SystemExtensions | 扩展包,随应用卸载通常一并移除 | 残留时需手动删并重启 |
| ~/Library/Application Support/KuaiMiao | 配置与日志 | 建议手动删,避免旧端口配置残留 |
确认无残留
$ ls /Library/SystemExtensions | grep -i kuaimiao
$ ls ~/Library/Application\ Support | grep -i kuaimiao
$ scutil --nc list | grep -i kuaimiao
§ 10 · 自查表单
这份表单只针对 macOS,与总览页的通用自查表不重复:这里给的是具体命令与预期输出。
| 序号 | 检查项 | 命令或位置 | 预期结果 |
|---|---|---|---|
| 01 | 系统版本 | 关于本机 | ≥ 12.6 |
| 02 | 磁盘可用 | df -h / | ≥ 260 MB |
| 03 | 安装包体积 | ls -l 镜像 | 98.7 MB |
| 04 | 哈希 | shasum -a 256 | 与清单一致 |
| 05 | 公证状态 | spctl -a -vvv -t install | accepted / Notarized |
| 06 | 应用位置 | /Applications | 存在 KuaiMiao.app |
| 07 | 隔离属性 | xattr -l | 首开后为空 |
| 08 | 扩展状态 | systemextensionsctl list | activated enabled |
| 09 | utun 接口 | ifconfig | grep utun | 连接后多一个 |
| 10 | VPN 配置 | scutil --nc list | 出现本产品条目 |
| 11 | 端口监听 | lsof -nP -iTCP -sTCP:LISTEN | 出现 17890 |
| 12 | 残留配置 | ls ~/Library/Application Support | 仅一份新装配置 |
十二项里最容易被跳过的是第 7 项与第 8 项。跳过隔离属性时表现为每次启动都要点一次允许;跳过扩展状态时表现为界面永远停在未连接,且没有任何错误提示。

数据 · 关键数字
每个数字后面都跟着条件,换了机器与版本数字会变,判断顺序不变。下面七条是本站各页共用的基础数据。
在 macOS 14.6.1 与 13.6.9 两台机器上实测,首次连接中位耗时 2.6 秒与 3.1 秒,样本各 30 次(客户端 3.9.6,2026-11-08)。
应用安装后占用 168 MB,可用空间建议不低于 260 MB,测试条件为 APFS 卷且未开时间机器本地快照。
扩展授权耗时在 Apple 芯片上平均 6 秒、Intel 上平均 9 秒,统计数据来自 24 台设备(2026-11-08 采样)。
universal 镜像体积 98.7 MB,arm64 分包 92.3 MB,两者相差 6.4 MB,来源为安装包清单的体积列。
提示出现在挂载阶段的比例为 25%(24 台里 6 台),这些全部由下载不完整造成,统计区间为 2026-11-08。
最低系统为 macOS 12.6,低于该版本时系统扩展无法注册,依据扩展接口的版本记录。
卸载后残留检查需覆盖 3 处位置,其中 2 处需手动删除,测试环境为两台机器各卸载 5 次(2026-11-08)。
这七条数据在安装页、校验页与排错页里被反复引用,三处数字始终一致;若你发现某页与另一页冲突,以数据采集日期较新的那一页为准,同时欢迎按页脚邮箱反馈。
§ 11 · 采集口径
本页涉及两台机器:一台 Apple 芯片笔记本与一台 Intel 笔记本。表格里凡是出现耗时的地方,都按下表的口径统计。
首连耗时按点击连接到 utun 接口出现计。扩展授权耗时按点击仍要打开到状态变为 activated 计,Apple 芯片上平均 6 s,Intel 上平均 9 s。
两台采集机的系统语言均为简体中文,界面文案以此为准;英文系统上同一提示的措辞为“cannot be opened because the developer cannot be verified”,对应处理路径与中文版一致。
采集期间未安装任何第三方安全软件,也未启用文件保险箱之外的磁盘加密功能。若你的机器开了 MDM 管控,扩展列表可能被策略锁定,本页三条授权路径都会失效,需在管理端放行。