macOS 安装 Clash 后的权限处理:网络扩展授权与钥匙串弹窗
梳理 macOS 上首次运行时的「已损坏」提示、网络扩展允许步骤与钥匙串反复弹窗的成因和处理办法。
先分清弹窗:启动检查、网络授权和钥匙串不是一回事
先看弹窗标题与请求进程,再决定是否授权。Clash 是代理内核与客户端生态的统称,macOS 上不同客户端的权限实现并不一致。采用 Clash Meta(mihomo)内核,也不代表一定使用 Apple 网络扩展;有的客户端通过特权辅助程序创建 TUN 接口,有的通过 Network Extension 接管流量。
本文以 macOS 13 Ventura、14 Sonoma、15 Sequoia 的设置名称为参照。先点左上角苹果菜单 →「关于本机」确认系统版本,再在客户端「关于」页面记录客户端版本与内核版本。界面文字有差异时,以系统弹窗中的入口为准,不要为了找一个不存在的开关而安装额外组件。
| 提示或现象 | 对应环节 | 先做什么 |
|---|---|---|
| “无法验证开发者”或“已损坏” | 应用启动与安全检查 | 确认安装来源、安装包与系统架构 |
| 请求添加 VPN 配置或允许网络扩展 | 系统网络接管 | 核对应用名称与发布者 |
| 安装辅助程序时要求管理员密码 | 特权服务安装 | 确认刚刚主动点击了安装服务 |
| 请求访问钥匙串中的某个项目 | 凭据读取 | 核对请求进程和项目名称 |
首次启动提示“已损坏”:先换安装包,不先关闭安全检查
先把应用移到「应用程序」
- 退出已运行的旧版本,包括菜单栏中的后台进程。
- 打开下载的 DMG,将客户端拖到「应用程序」,不要一直从磁盘映像中启动。
- 推出 DMG,再从「应用程序」打开客户端。固定路径能减少更新后权限记录与实际程序不一致的问题。
- 若仍失败,重新获取适合本机的安装包。Apple 芯片优先选 arm64,Intel 机型选 x64;Universal 包需明确包含对应架构。
“已损坏,无法打开”不一定表示下载文件真的损坏,也可能与签名、隔离属性或打包方式有关;架构不匹配则可能出现另一类无法运行提示。仅凭一句弹窗无法判断原因。来源不明的包应停止使用,不能把移除隔离属性当成所有启动问题的通用修复。
“仍要打开”只用于已确认来源的应用
在一次启动被阻止后,打开「系统设置」→「隐私与安全性」,查看安全性区域是否提供「仍要打开」。该按钮不是所有阻止情形都会出现。核对应用名称与来源后再操作;如果系统明确提示恶意软件、会损坏电脑或证书被撤销,应停止运行并向维护者确认。
网络扩展与 TUN 授权:按客户端实际实现处理
如果只是让遵循系统代理设置的浏览器联网,通常先启用「系统代理」即可,不必为了完成首次配置立即打开 TUN。系统代理与 TUN 是两个入口:前者修改代理设置,后者通过虚拟接口及相关路由处理流量。TUN 也不保证每个应用、每种协议都自动正常工作,最终仍取决于内核配置和路由环境。
出现网络扩展或 VPN 配置请求时
- 在客户端主动打开「TUN 模式」或相应网络接管功能,再观察弹窗,避免给不相关的后台程序授权。
- 请求添加 VPN 配置时,核对显示的应用名称。确认是当前客户端发起后,再点「允许」。
- macOS 15 可到「系统设置」→「通用」→「登录项与扩展」→「网络扩展」检查对应扩展;部分版本需要点该项旁的详情按钮。
- macOS 13、14 若提示系统软件被阻止,按提示到「隐私与安全性」寻找「允许」。VPN 或过滤器记录也可能出现在「网络」→「VPN 与过滤器」。没有该记录不等于安装失败,先确认客户端是否使用这套机制。
如果客户端写的是「安装服务」「安装辅助程序」或「Service Mode」,管理员认证往往用于安装特权辅助服务,不是解锁钥匙串。安装成功后,先回到客户端检查服务状态,再打开 TUN;不要反复点击安装。只有系统或客户端明确要求时才重启电脑。
钥匙串弹窗:先看访问的是哪个项目
典型提示会包含“想要使用您储存在钥匙串中的机密信息”,并列出请求进程与项目名称。这和安装服务的管理员认证不同。客户端可能把订阅凭据、访问令牌或其他敏感设置存在钥匙串里,但不是每个 Clash 客户端都会这样做,也不能把任何钥匙串请求都归为正常行为。
「允许一次」与「始终允许」怎么选
- 刚完成安装,尚未确认项目用途:先点「拒绝」,观察哪项操作受影响,再查客户端说明。拒绝后相应功能可能暂时不可用。
- 进程与项目都能确认:可先点「允许」完成本次读取,验证订阅更新或设置保存是否恢复。
- 长期使用且身份核对无误:再考虑「始终允许」。它针对相应钥匙串项目的访问,不是给所有权限统一放行。
弹窗需要的密码应以文字提示为准。访问「登录」钥匙串通常需要该钥匙串的密码,它往往与当前账户登录密码相同,但在账户密码被其他途径重置后,两者可能不同。不要把订阅密码、Apple 账户密码或节点密码挨个填进去。
用「钥匙串访问」检查,别先删除全部记录
- 通过 Spotlight 搜索并打开「钥匙串访问」。macOS 15 的「密码」应用不等于完整的钥匙串管理工具。
- 选择「登录」钥匙串,用弹窗里显示的项目名称搜索,不要只搜“Clash”。
- 打开匹配项目,核对名称、种类与关联信息;若项目提供「访问控制」,检查被允许的应用是否仍指向当前客户端。
- 优先修复单个项目的访问授权。不要选择“允许所有应用程序访问此项目”,也不要直接重置整个默认钥匙串。
升级后反复弹窗:检查路径、签名和登录钥匙串
更新客户端后第一次重新询问,并不罕见。替换应用可能改变签名身份、辅助进程或钥匙串访问条件。真正需要排查的是:每次启动都询问,或者点完允许后立刻再次出现。此时连续输入密码通常只会掩盖问题。
| 发生时机 | 优先检查 | 处理方式 |
|---|---|---|
| 每次从不同位置启动后 | 下载目录、DMG 与应用程序中是否有多个副本 | 退出所有副本,固定从应用程序启动 |
| 每次升级后 | 发布渠道、应用身份或辅助进程是否变化 | 核对维护者说明,重新确认单项授权 |
| 系统登录后多款应用都询问 | 登录钥匙串是否锁定、密码是否不同步 | 先处理账户与钥匙串问题 |
| 只在更新订阅时询问 | 对应订阅凭据项目与读取进程 | 检查该项目,而不是修改 TUN 权限 |
如果是登录密码变更后无法解锁,且仍知道原钥匙串密码,可在「钥匙串访问」中解锁,并在可用时通过「编辑」→「更改钥匙串“登录”的密码」将其同步。若原密码已遗失,先按 Apple 的账户恢复流程处理;重置默认钥匙串会影响其中保存的凭据,必须先评估影响。
仅当确认某一条记录已经失效、也知道如何重新登录或重新录入凭据时,才考虑删除那一条。删除之前记录项目名称,并准备好订阅服务的恢复入口。不要为了消除弹窗,批量删除证书、私钥或所有带客户端名字的项目。
授权完成后,用系统代理和端口检查验证
权限放行只说明某个环节被允许,不等于节点可用。按「配置启用 → 内核运行 → 本地监听 → 流量进入」的顺序验证,能避免在权限面板和节点列表之间来回猜。下面是只读检查命令,不会修改系统代理或路由。
sw_vers -productVersion
scutil --proxy
lsof -nP -iTCP:7890 -sTCP:LISTEN
sw_vers显示系统版本,方便对照权限入口。scutil --proxy查看当前系统代理信息。启用 HTTP/HTTPS 系统代理时,检查对应的HTTPEnable、HTTPSEnable是否为1,服务器和端口是否符合客户端设置;使用 PAC 时则应检查自动代理配置字段。lsof检查 TCP 7890 是否有进程监听。7890 只是常见示例端口,若客户端使用mixed-port: 7897,就把命令中的端口改成 7897。没有输出不应直接解释为权限被拒绝。
分两轮测试,别一次开启所有接管功能
- 先关 TUN,启用一份有效配置,打开系统代理,用浏览器访问一个已知可达的网站,同时观察客户端「连接」或「日志」是否出现请求。
- 系统代理测试通过后,再按客户端说明测试 TUN。为便于区分接管来源,可暂时关闭系统代理,使用同一网站复测,并检查日志中的实际连接。
- 若日志已有请求但报
i/o timeout,继续检查节点、目标与网络;若报no such host,优先检查 DNS 链路。不要仅凭这些报错重新授权钥匙串。 - 若启动时报
address already in use,检查是否有另一个客户端占用相同端口。这是监听冲突,不是网络扩展授权不足。
多个 VPN、企业安全软件与代理客户端同时接管网络,会增加路由和 DNS 冲突的可能。仅停用自己有权管理的其他网络接管功能后复测;受管设备不要自行移除企业过滤器。需要进一步定位时,可继续查看问题诊断,并记录测试时到底开启了系统代理还是 TUN。
退出或卸载前,先恢复网络设置
先在客户端关闭 TUN 和系统代理,再退出程序。随后打开「系统设置」→「网络」→ 当前使用的 Wi-Fi 或以太网 →「详细信息」→「代理」,确认没有遗留指向 127.0.0.1 的失效代理。不要修改原本由公司或学校配置的代理项。
若客户端提供「卸载服务」,优先使用该入口移除辅助服务;网络扩展与 VPN 配置也应按客户端卸载说明处理。不要照着别人的终端命令删除名称相似的系统文件。权限问题的收尾标准是:客户端运行时请求能进入预期链路,退出后普通网络恢复,重启后不再循环要求同一项授权。
Clash 客户端下载与配置
按 Mac 的芯片架构选择客户端。安装后先导入订阅并验证系统代理,再按实际需要配置 TUN。