先区分:启动拦截、扩展授权与凭据访问

这三类提示发生在不同环节。应用尚未打开就显示「已损坏」,优先检查安装包、签名与系统安全评估;应用已经打开,只有 TUN 无法启用,检查网络接管方式和特权服务;弹窗明确写着「钥匙串」,则应检查凭据条目的访问权限。反复重新安装通常不能同时解决这三类问题。

可见现象优先检查第一步
已损坏,无法打开下载完整性、应用签名、安全评估保留提示截图,重新获取对应架构安装包
无法验证开发者Gatekeeper 的运行许可查看「隐私与安全性」中的具体拦截说明
TUN 开关立即回退特权服务、虚拟接口、内核日志记录启用瞬间的错误
反复请求钥匙串密码登录钥匙串状态、应用访问身份核对请求进程和目标条目

先记录 macOS 版本、芯片类型、客户端版本和内核版本。系统信息可从「苹果菜单」→「关于本机」查看。客户端设置中的内核若标注为 mihomo,应按该内核的配置能力排查;不同客户端的菜单和授权实现可能不同,不能仅凭 Clash 名称判断是否使用网络扩展。

「已损坏无法打开」:先检查安装包与签名

安装位置与芯片架构

  1. 退出正在运行的客户端,保留现有订阅地址与本地配置备份。
  2. 从下载页确认平台与架构。Apple 芯片优先选 arm64,Intel 芯片选 x64;通用包通常标记为 universal。
  3. 完整下载并打开磁盘映像,将应用拖入「应用程序」,不要长期从下载目录或磁盘映像中运行。
  4. 推出磁盘映像,从「应用程序」打开一次,记录系统提示原文。

架构不匹配通常会出现处理器兼容性或 Rosetta 相关提示,不能把所有启动错误归因于架构。若磁盘映像本身无法挂载,先重新下载;若只有应用被拦截,则继续检查签名与安全评估。

三条只读诊断命令

打开「终端」,输入下列命令的命令部分,再从「应用程序」把实际应用拖入终端补齐路径。下面使用的 APP 会接收手动输入的应用路径;输入不带外层引号的完整路径,空格会被保留。三项检查不会删除文件或修改系统安全设置。

printf '请输入应用的完整路径:'
IFS= read -r APP
/usr/bin/codesign --verify --deep --strict --verbose=2 "$APP"
/usr/sbin/spctl --assess --type execute --verbose=4 "$APP"
/usr/bin/xattr -l "$APP"
  • codesign 检查代码签名结构。出现 a sealed resource is missing or invalid 时,可能存在资源缺失、安装损坏或签名后内容被更改,应换用重新获取的原始安装包。
  • spctl 查看系统执行策略的评估结果。rejected 表示当前评估未通过,需结合后续原因判断,不等同于已确认恶意。
  • xattr 查看扩展属性。出现 com.apple.quarantine 很常见,表示文件带有下载隔离信息;仅凭这一项不能判定错误来源。

何时使用「仍要打开」

在 macOS 13 Ventura、14 Sonoma 与 15 Sequoia 中,可在尝试打开后进入「系统设置」→「隐私与安全性」,向下查看「安全性」区域。对于允许用户确认的拦截,系统可能提供「仍要打开」;确认来源与应用身份后,再按系统要求验证管理员身份。

「已损坏」不保证出现这个按钮。若系统明确提示会损坏电脑、检测到恶意内容,或签名检查显示异常,应停止尝试并核对发布信息。macOS 15 对部分未正确签名或公证的软件调整了打开流程,旧教程中的访达右键「打开」不能作为统一处理步骤。

网络扩展授权:先确认客户端采用哪种接管方式

系统代理、TUN 与网络扩展不是同一个开关。系统代理主要影响遵循代理设置的应用;TUN 通过虚拟网络接口承接流量;Network Extension 是 macOS 提供的一组网络扩展机制。部分基于 mihomo 的客户端通过特权服务创建 utun 接口,并不需要用户额外批准一个独立的系统网络扩展。

需要扩展许可时的系统入口

  • macOS 15:进入「系统设置」→「通用」→「登录项与扩展」,在「扩展」区域查看「网络扩展」,打开详情后核对对应客户端或开发者条目。
  • macOS 13、14:若收到系统软件被阻止的提示,进入「系统设置」→「隐私与安全性」查看是否有对应开发者的「允许」操作;VPN 或过滤器配置可在「系统设置」→「网络」→「VPN 与过滤器」中检查。
  • 受管理设备:如果开关灰显、提示由组织管理,记录提示并联系管理员。设备管理策略可能限制扩展安装、VPN 配置或后台服务。

只允许身份与当前安装包相符的项目。系统要求重启时,先保存工作再重启;未要求重启时,可先退出并重新打开客户端。列表中没有对应条目,也没有扩展安装提示时,应返回客户端日志确认实现方式,而不是为寻找一个不存在的开关反复修改系统设置。

钥匙串反复弹窗:核对条目、密码与应用身份

先辨认弹窗要求什么密码

「想要访问钥匙串中存储的机密信息」通常是凭据读取请求;「想要进行更改」可能是管理员授权。两者不要混用处理方法。钥匙串中的「登录」钥匙串通常随账户登录解锁,但如果登录密码曾通过其他方式重置,钥匙串密码可能仍是旧密码。

  1. 用 Spotlight 搜索并打开「钥匙串访问」,在侧栏选择「登录」,查看其是否锁定。
  2. 按弹窗中写明的条目名称搜索,打开条目后核对「名称」「种类」「账户」及「访问控制」信息,不要只凭名称含有 Clash 就删除。
  3. 核对请求访问的进程。若显示的是内核或辅助程序,检查其所属应用路径是否与「应用程序」中的当前安装一致。
  4. 确认请求与刚执行的操作对应后,可先选「允许」验证一次;只有确实信任该程序且访问用途明确时,再考虑「始终允许」。

升级后重复请求的常见原因

应用更新可能改变签名身份,辅助程序路径也可能随安装位置变化。若旧版本仍在下载目录运行,新版本位于「应用程序」,同一凭据可能被不同进程重复请求。先退出全部副本,只保留一个安装位置,再通过「活动监视器」检查进程。

若登录钥匙串能解锁,但某一条目持续请求,可在备份相关服务凭据、确认能够重新登录后,仅处理该应用对应的失效条目,并由客户端重新保存。不要批量删除「系统」钥匙串、根证书或其他应用条目。重置默认钥匙串会影响已保存的密码,应作为明确了解后果的最后手段,而不是首次排查动作。

TUN 授权失败:按服务、接口、路由与 DNS 排查

先分开验证系统代理与 TUN

先关闭 TUN,仅开启系统代理,用浏览器访问一个原本能够稳定连接的网站。若系统代理也失败,优先检查订阅节点、端口、规则及网络连接;若系统代理正常而 TUN 失败,再集中排查特权服务与虚拟接口。这样可以避免将节点故障误认为系统授权问题。

客户端提供「安装服务」「修复服务」或类似入口时,先查看当前版本说明,再使用客户端自身的操作完成安装。安装需要管理员许可时,确认弹窗中的请求方。更新后出现辅助程序版本不一致,可先退出客户端,再通过其自身入口修复服务,避免手工删除 /Library/PrivilegedHelperTools 下的不明文件。

保留启用 TUN 前后的日志

清晰的复现顺序是:记下当前时间,开启 TUN,等待约 10 秒,关闭 TUN,然后导出这一时段的日志。重点搜索 permission denied、operation not permitted、address already in use 与 failed to create。这些关键词只是定位线索,需要结合前后文判断具体对象。

/sbin/ifconfig
/usr/sbin/scutil --proxy
/usr/sbin/scutil --dns
/usr/sbin/netstat -rn -f inet
/usr/sbin/lsof -nP -iTCP:7890 -sTCP:LISTEN
  • ifconfig 可查看接口变化,但 utun 也可能属于其他 VPN 或系统服务,数量增加不等于 Clash 已接管成功。
  • scutil --proxy 用于确认系统代理设置;TUN 正常运行时,这里也可能没有启用 HTTP 代理。
  • scutil --dns 用于查看系统解析器状态,不能单独证明客户端内部 DNS 或 DNS 劫持已生效。
  • netstat 用于对比路由表。不同 TUN 实现可能采用不同路由布局,不应只凭默认路由一项判断。
  • lsof 检查示例端口 7890。这是常见代理端口,并非固定值;应替换为当前配置中的实际监听端口,未获足够权限时输出也可能不完整。

排查期间可暂时退出其他 VPN 或网络过滤工具,记录变化后再恢复。若接口成功创建但域名无法解析,应转向检查 DNS 配置;若日志显示端口被占用,应先确认占用进程,而不是不断重复输入管理员密码。更多字段含义可查阅进阶配置。

恢复网络与提交排查信息

如果关闭客户端后网络仍异常,先重新打开客户端,依次关闭 TUN 和系统代理,再正常退出。必要时进入「系统设置」→「网络」→当前网络连接→「详细信息」→「代理」,检查是否残留指向本机的代理地址。只移除本次操作产生的设置;公司网络要求的代理、PAC 与 DNS 配置应保留。

随后检查「VPN 与过滤器」中是否还有正在工作的连接。不要把重置全部网络配置作为第一步,也不要直接删除全部虚拟接口。若能确定某项设置来自本次安装,可按原先记录逐项回退,每次回退后验证网页访问与域名解析。

提交问题前的最小信息清单

  • macOS 的完整版本号、芯片类型、客户端版本和内核版本。
  • 故障属于启动阶段、系统代理阶段还是 TUN 阶段,以及首次出现的操作。
  • 系统弹窗原文、签名检查结果、故障时间前后约 30 秒的相关日志。
  • 是否同时运行其他 VPN、是否为受组织管理的设备、修复服务后是否有变化。

处理顺序可以保持固定:安装包与应用身份 → 系统运行许可 → 特权服务或扩展 → TUN 接口与路由 → DNS。钥匙串弹窗按凭据访问单独处理。每次只改变一项,并记录结果,便于确认究竟是哪一步恢复了正常状态。