平台专题 预计阅读 12 分钟

macOS 安装 Clash 客户端提示权限问题:网络扩展与钥匙串处理步骤

逐步处理 macOS 上的安装拦截、网络扩展授权与钥匙串反复弹窗:系统设置里该点哪里、辅助程序装在哪、卸载残留怎么清,按步骤操作即可解决。

先判断卡在哪一种权限

macOS 上的 Clash 客户端通常同时涉及应用启动、系统代理、特权辅助程序、网络扩展和钥匙串。它们由不同的系统组件管理。看到“需要权限”时,先记录弹窗标题和出现时机,不要连续点击取消。一次安装可能只缺其中一项,也可能是旧版本残留与新版本同时存在。

四类提示对应四个处理入口

  • 应用无法打开或开发者无法验证:属于 Gatekeeper 启动检查,应前往「系统设置」→「隐私与安全性」处理。
  • 安装服务、Helper 或 Service Mode 需要密码:属于特权辅助程序安装。这里输入的是当前 Mac 管理员账户密码,不是订阅密码。
  • 系统扩展或网络扩展被阻止:需要在「网络」或「登录项与扩展」中允许对应扩展,部分版本还要求重新启动。
  • 每次启动都询问访问钥匙串:通常是保存的密码项目访问控制不匹配,或者旧客户端创建的项目仍由新客户端读取。

确认系统版本与处理器架构

打开屏幕左上角 Apple 菜单,选择「关于本机」。记录 macOS 版本和芯片名称。Apple M1、M2、M3、M4 及后续 Apple 芯片应使用 arm64 安装包;Intel Mac 使用 x64 或 x86_64 安装包。架构选错时,应用可能依靠 Rosetta 运行,也可能在安装辅助程序时失败。

本文以 macOS 13 Ventura、macOS 14 Sonoma、macOS 15 Sequoia 和 Clash Verge Rev 2.x 一类基于 mihomo 的客户端为参照。不同客户端的按钮名称可能写成「服务模式」「安装服务」「Helper」「TUN」或「网络扩展」,但系统授权位置基本一致。

处理应用安装与首次启动拦截

把应用放进“应用程序”再启动

  1. 打开下载得到的 DMG 文件。
  2. 把客户端图标拖到「应用程序」文件夹,不要长期从 DMG 窗口直接运行。
  3. 等待复制完成,推出 DMG。
  4. 从 Finder 的「应用程序」目录打开客户端。

辅助程序通常会记录主应用的路径和签名。从下载目录、DMG 挂载点或临时目录运行,可能导致应用升级后路径改变,继而反复请求授权。应用名称也不宜在安装后随意修改。

“无法验证开发者”或“已阻止使用”

先确认安装包来自项目正式发布渠道,并且下载的架构正确。随后尝试打开一次应用,让系统生成拦截记录。进入「系统设置」→「隐私与安全性」,向下找到被阻止的应用,点击「仍要打开」,再通过系统确认框完成启动。

如果页面没有出现「仍要打开」,通常是尚未实际触发启动,或拦截记录已经过期。返回 Finder 再打开一次,然后立即查看「隐私与安全性」。公司管理的 Mac 可能由设备管理策略禁止用户放行,此时需要管理员在管理策略中批准应用或系统扩展。

安装特权辅助程序与服务模式

系统代理只需要修改 macOS 的代理设置,而 TUN 模式需要创建虚拟网络接口并调整路由。很多客户端会安装一个具有系统权限的辅助程序,由它启动 mihomo 内核、写入路由或管理 DNS。安装该服务时出现管理员密码框属于正常的系统授权流程。

正确的安装顺序

  1. 退出其他正在运行的 Clash、mihomo 或同类代理客户端。
  2. 在当前客户端打开「设置」→「服务模式」,或「设置」→「系统服务」。
  3. 点击「安装服务」或「安装 Helper」。
  4. 在 macOS 系统授权框中输入管理员账户密码。
  5. 等待状态变为「已安装」或「运行中」,再启用系统代理或 TUN。

如果当前登录账户不是管理员,用户名和密码必须填写一组有效的管理员凭据。这里不接受 Apple ID 密码,也不接受客户端订阅使用的账号密码。

安装后仍显示“服务未运行”

先完全退出客户端,再重新打开。仍未恢复时,打开「活动监视器」,搜索客户端名称、mihomoclash,确认是否同时存在旧版进程。也可以在「终端」执行以下只读命令:

ps aux | grep -E '[m]ihomo|[c]lash'
lsof -nP -iTCP:7890 -sTCP:LISTEN
lsof -nP -iTCP:7897 -sTCP:LISTEN

端口 7890 常见于传统 Clash 配置,部分 mihomo 客户端默认使用 7897。查到端口被另一个进程占用时,应退出对应旧客户端,或在「设置」→「端口设置」中更换 mixed-port。不要让两个客户端同时接管系统代理。

如果服务安装按钮一直转圈,先使用客户端内置的「卸载服务」,退出应用并重新启动 Mac,然后再次安装。直接在 Finder 中删除应用不会自动移除系统级辅助程序,所以“删掉再装”不一定能解决问题。

允许网络扩展与启用 TUN

网络扩展、网络过滤器和 TUN 虚拟接口不是同一个概念。客户端可能通过 Apple Network Extension 接口提供隧道,也可能由特权服务创建 utun 接口。是否出现“网络扩展”开关取决于客户端实现,不能只看菜单里有没有 TUN 按钮。

macOS 13 与 14 的检查路径

  • 打开「系统设置」→「网络」→「VPN 与过滤器」,查看是否存在当前客户端的过滤器或 VPN 配置。
  • 打开「系统设置」→「通用」→「登录项」,检查“允许在后台”区域中对应项目是否被关闭。
  • 打开「系统设置」→「隐私与安全性」,查看底部是否有系统软件或扩展被阻止的提示。

macOS 15 及后续版本的检查路径

在 macOS 15 Sequoia 中,扩展管理集中到了「系统设置」→「通用」→「登录项与扩展」。点击“网络扩展”旁的详情按钮,允许当前客户端对应的扩展。如果客户端创建了 VPN 或内容过滤器,还要返回「系统设置」→「网络」→「VPN 与过滤器」确认项目处于允许状态。

允许扩展后,系统可能要求重新启动。先保存工作,再按提示重启。仅退出客户端通常不足以完成首次扩展注册。

确认 TUN 是否真正建立

启用 TUN 后,在终端执行:

ifconfig | grep -A 4 '^utun'
route -n get default
scutil --proxy

macOS 自身也会创建多个 utun 接口,因此看到 utun0utun1 并不能直接证明 Clash 正常。更可靠的判断是:打开 TUN 前后接口数量发生变化,客户端日志出现监听和路由初始化信息,并且关闭系统代理后,原本不读取系统代理的应用仍能按规则连接。

解决钥匙串反复弹窗

客户端可能把订阅凭据、服务授权信息或系统代理相关密码保存在登录钥匙串。应用升级、签名变化、安装路径变化或从旧项目迁移后,钥匙串保存的访问控制列表可能不再匹配,于是每次启动、更新订阅或开启服务都会弹出访问请求。

先看弹窗请求访问什么

不要只看窗口上方的客户端名称。展开详情,确认请求者路径位于「应用程序」中的当前客户端,并记录它准备访问的钥匙串项目名称。如果路径指向下载目录、已删除的旧应用或不认识的程序,选择拒绝,然后关闭该程序进行清理。

路径与当前客户端一致时,可以先输入 Mac 登录密码并选择「始终允许」。如果下次启动仍然出现同一弹窗,继续点击“始终允许”通常没有意义,应修复具体钥匙串项目。

删除单个旧项目并让客户端重建

  1. 退出客户端,确认菜单栏图标已经消失。
  2. 打开「应用程序」→「实用工具」→「钥匙串访问」。新系统也可用 Spotlight 搜索“钥匙串访问”。
  3. 在左侧选择“登录”钥匙串,再选择“所有项目”或“密码”。
  4. 搜索弹窗显示的项目名称,也可分别搜索客户端名称、Clashmihomo 或旧客户端名称。
  5. 打开项目,核对“账户”“位置”和“访问控制”。只删除已经确认属于旧客户端的单个项目。
  6. 重新打开客户端,按提示重新保存凭据或安装服务。

如果登录钥匙串处于锁定状态,在“钥匙串访问”中选中“登录”,通过菜单执行解锁。登录钥匙串密码通常与当前账户登录密码相同。曾经修改过账户密码但未同步钥匙串时,系统可能提示旧密码;这种情况应先修复登录钥匙串,而不是不断重装客户端。

弹窗只在更新订阅时出现

这通常意味着订阅相关凭据保存项有问题,而不是 TUN 权限问题。删除对应订阅后重新导入,可以让客户端重新创建存储项目。操作前保存订阅地址。重新导入后,先手动执行一次「配置」→「更新订阅」,再退出并重开客户端验证。

清理卸载残留后重新安装

旧版 Clash 客户端与新客户端可能共用端口、配置目录或后台服务。典型现象包括:客户端已删除但系统代理仍指向 127.0.0.1:7890、TUN 开关立即回落、服务安装成功后仍启动旧内核,以及钥匙串弹窗显示旧应用名称。

先关闭代理与卸载服务

  1. 打开旧客户端,关闭 TUN 和系统代理。
  2. 进入「设置」→「服务模式」,执行「卸载服务」或「移除 Helper」。
  3. 完全退出客户端。
  4. 打开「系统设置」→「网络」→当前网络→「详细信息」→「代理」,确认网页代理、安全网页代理和 SOCKS 代理没有遗留的本地端口。
  5. 在「VPN 与过滤器」或「登录项与扩展」中移除已经停用的旧项目。

如果旧客户端已经无法打开,可以先安装回同一版本并使用内置卸载功能。客户端知道自身辅助程序的准确标识,比手工猜测系统目录里的文件更稳妥。

检查用户级配置目录

Finder 中按下 Command + Shift + G,逐一查看以下位置:

~/Library/Application Support/
~/Library/Preferences/
~/Library/Caches/
~/Library/Logs/
~/Library/LaunchAgents/

只处理名称明确对应旧客户端的目录或文件。配置目录中可能包含订阅、规则覆写、脚本和日志。需要迁移时先复制到单独的备份目录,再删除原位置。不要用带通配符的终端命令批量删除所有包含 clashmihomo 的项目,因为其他仍在使用的客户端也可能使用这些名称。

确认系统代理已经恢复

执行 scutil --proxy,查看 HTTPEnableHTTPSEnableSOCKSEnable。关闭系统代理后,这些值通常应为 0。如果仍为 1,进入当前网络服务的代理设置手动关闭。Wi-Fi 和有线网络是两套独立服务,需要分别检查。

按症状完成最后排查

系统代理能用,TUN 不能用

  • 确认服务模式或 Helper 已安装并正在运行。
  • 检查「VPN 与过滤器」和「登录项与扩展」中的网络扩展状态。
  • 暂时退出其他 VPN、内容过滤器和同类代理客户端,再重新开启 TUN。
  • 查看客户端日志中是否有 permission denied、路由写入失败或 DNS 监听端口占用。
  • 重启 Mac 后先只启动一个客户端,避免多个程序同时创建默认路由。

TUN 能开,但部分网站打不开

此时权限大多已经正常,应转向 DNS 与规则排查。检查配置中的 dns.enableenhanced-mode、规则顺序和最终匹配策略。局域网域名、公司内网和打印机地址可按实际情况加入直连规则。不要通过反复重装网络扩展解决规则配置问题。

每次升级后都要求重新授权

确认客户端始终安装在同一路径,并使用同一发布渠道的正式版本。升级前退出应用,升级后从「应用程序」启动。若跨越多个主要版本,例如从旧版 ClashX 系列迁移到 Clash Verge Rev 2.x,应先卸载旧服务,再由新客户端安装自己的服务,不要直接复用旧辅助程序。

一套可复现的验证顺序

  1. 重启 Mac,只打开当前客户端。
  2. 导入订阅并手动更新一次。
  3. 选择一个可用节点,先打开系统代理。
  4. 确认浏览器连接正常,并检查本地端口是否监听。
  5. 关闭系统代理,安装服务并开启 TUN。
  6. 检查 utun 接口变化和客户端日志。
  7. 退出再重开客户端,确认钥匙串不再重复询问。

完成这七步后,应用启动、订阅读取、系统代理、辅助程序、网络扩展和钥匙串都经过了单独验证。后续如果再次出现问题,可以根据失败的具体步骤定位,而不必从头删除全部配置。

Clash最新版下载