先区分三类 macOS 权限
FlClash 在 macOS 上可能触发 Gatekeeper、管理员授权、VPN 或网络扩展批准。它们对应不同的系统组件,不能用同一个密码弹窗概括。只使用系统代理时,通常只需完成应用启动与代理配置;启用 TUN 模式后,才会进一步涉及虚拟网络接口、路由和 DNS 接管。
| 提示类型 | 出现阶段 | 处理位置 |
|---|---|---|
| 无法验证开发者或无法打开 | 首次启动应用 | 「系统设置」→「隐私与安全性」 |
| 管理员名称与密码 | 安装辅助组件或启用 TUN | macOS 系统授权窗口 |
| 添加 VPN 配置或网络扩展 | 首次开启 TUN | 「系统设置」→「网络」→「VPN」或扩展管理页 |
| 访问钥匙串中的项目 | 读取已保存凭据或组件身份变化 | 「钥匙串访问」应用 |
安装前检查:芯片、安装位置与旧版本状态
确认 Apple 芯片或 Intel 架构
打开「苹果菜单」→「关于本机」。芯片一栏显示 Apple M1、M2、M3、M4 或后续 Apple 系列时,应选择 arm64 安装包;处理器一栏显示 Intel 时,应选择 x64 或 amd64 安装包。架构选错通常表现为应用无法启动、启动后立即退出,或必须经过 Rosetta 转译。
把应用移动到“应用程序”
- 打开下载得到的 DMG 或解压后的目录。
- 将 FlClash 拖入 Finder 侧边栏的「应用程序」。
- 从「应用程序」目录启动,不要长期从 DMG、下载目录或外置磁盘运行。
- 若旧版仍在运行,先从菜单栏退出,再替换应用文件。
固定安装路径很重要。macOS 会把钥匙串访问控制、代码签名身份和应用路径共同用于授权判断。应用每次从不同目录启动,可能导致系统重复询问是否允许访问同一个钥匙串项目。
升级前先关闭代理
若系统代理仍指向旧进程,直接覆盖应用可能留下不可用的本地代理地址。建议先在 FlClash 中关闭系统代理与 TUN,再退出应用。系统代理常见监听地址是 127.0.0.1:7890,但实际端口以当前配置中的 mixed-port 为准。
“无法验证开发者”与“应用已损坏”的正确处理
首次启动被拦截时,先在 Finder 的「应用程序」中找到 FlClash,按住 Control 点击应用图标,选择「打开」。如果仍被 Gatekeeper 阻止,进入「系统设置」→「隐私与安全性」,向下找到刚刚被拦截的应用记录,点击「仍要打开」,再用登录密码或 Touch ID 确认。
- 只在刚刚主动启动 FlClash 后处理这条拦截记录。
- 核对弹窗中的应用名称与 Finder 中的文件一致。
- 完成一次放行后,从「应用程序」重新打开。
- 不要反复解压到新目录,否则系统可能把它视为新的应用副本。
如果「隐私与安全性」页面没有出现“仍要打开”,先再次从 Finder 启动一次,让系统生成对应记录。企业管理的 Mac 还可能受 MDM 策略限制,此时按钮会被隐藏或置灰,需要由设备管理员批准应用,而不是修改本机普通账户设置。
网络扩展授权:从系统代理到 TUN
系统代理模式的工作边界
系统代理模式会把 macOS 的 HTTP、HTTPS 或 SOCKS 代理指向本机监听端口。常见配置是 127.0.0.1:7890,控制接口常见为 127.0.0.1:9090。控制接口用于客户端与 mihomo 内核通信,不应被当作网页代理端口填写。
mixed-port: 7890
mode: rule
allow-lan: false
external-controller: 127.0.0.1:9090
使用这类配置时,Safari、Chrome 与读取系统代理的应用会进入规则分流。终端中的 curl、包管理器或某些游戏不一定读取系统代理,因此“浏览器可用、终端直连”不一定是故障。
首次开启 TUN 的批准顺序
进入 FlClash 的「设置」→「网络设置」,开启 TUN 模式。不同 macOS 版本可能先后显示管理员授权、添加 VPN 配置、允许网络扩展三个步骤。弹窗出现后保持 FlClash 运行,不要连续点击开关,以免同时创建多条授权请求。
- 在管理员授权窗口输入当前 Mac 管理员账户的密码。
- 系统询问是否允许添加 VPN 配置时,选择允许。
- macOS 15 及后续版本可到「系统设置」→「通用」→「登录项与扩展」→「网络扩展」检查状态。
- macOS 13、14 若显示批准通知,进入「系统设置」→「隐私与安全性」完成允许。
- 回到「系统设置」→「网络」→「VPN」,确认没有同名条目持续处于连接和断开循环。
- 返回 FlClash,等待内核启动后再测试连接。
授权成功后,系统通常会创建 utun 虚拟接口。它的编号并不固定,可能是 utun3、utun7 或其他值;编号变化不代表安装异常。真正需要检查的是默认路由、DNS 请求和 FlClash 内核是否同步处于运行状态。
mihomo TUN 配置的关键字段
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
auto-route 用于自动写入路由,auto-detect-interface 用于识别当前出口网卡,dns-hijack 把指定 DNS 流量交给内核处理。FlClash 可能根据界面设置生成运行配置,因此不要在订阅文件和界面中同时维护两套互相冲突的 TUN 字段。
钥匙串反复索要密码:定位请求来源
钥匙串弹窗首先要看“哪个进程正在请求哪个项目”。正常的系统窗口会显示项目名称以及请求访问的应用。若弹窗在 FlClash 尚未启动时就出现,请先检查登录项、旧版辅助组件和其他网络工具,不应直接把请求归到当前应用。
先尝试一次性“允许”
第一次出现时可先选择「允许」,输入当前 macOS 登录密码,然后观察同一操作是否再次触发。只有确认应用位于固定的 /Applications 路径、请求项目明确且后续需要持续访问时,才考虑「始终允许」。若应用刚被替换、移动或签名身份发生变化,钥匙串可能重新要求确认。
检查“登录”钥匙串是否锁定
- 打开「应用程序」→「实用工具」→「钥匙串访问」。
- 在左侧选择「登录」钥匙串。
- 若钥匙串显示锁定,右键选择解锁并输入当前登录密码。
- 按弹窗显示的项目名称搜索,不要按猜测批量删除证书或密码。
- 双击目标项目,在「访问控制」中检查是否保留了旧应用路径。
Mac 登录密码修改后,登录钥匙串密码可能仍是旧密码。典型表现是登录系统使用新密码成功,但多个应用持续请求旧钥匙串密码。此时应先尝试修改“登录”钥匙串密码,使其与当前账户密码一致。重设默认钥匙串会影响浏览器密码、Wi-Fi 凭据和其他应用保存项,应作为最后一步,并在操作前确认已有可用备份。
避免三个重复触发条件
- 不要同时保留多个不同目录中的 FlClash.app,并轮流启动。
- 升级时先退出旧进程,再覆盖「应用程序」中的现有版本。
- 删除钥匙串项目后,应同步重启应用;不要让旧进程继续持有失效引用。
授权完成后的四项验证
验证本地监听端口
在 FlClash 中确认内核状态为运行,再打开终端执行以下命令。若配置使用的不是 7890,应替换为实际 mixed-port。
lsof -nP -iTCP:7890 -sTCP:LISTEN
curl -I -x http://127.0.0.1:7890 https://example.com
第一条命令应显示对应内核进程正在监听,第二条命令应返回 HTTP 响应头。若端口没有监听,重点检查内核启动日志;若端口监听但请求超时,再检查订阅节点、策略组选择和规则命中。
检查系统代理是否残留
打开「系统设置」→「网络」→当前使用的 Wi-Fi 或以太网→「详细信息」→「代理」。FlClash 开启系统代理时,这里可能显示本机地址与端口。退出应用后如果仍保留 127.0.0.1:7890,所有读取系统代理的程序都会尝试连接一个已经停止的端口。
检查网络扩展与 VPN 状态
systemextensionsctl list
scutil --nc list
ifconfig | grep utun
systemextensionsctl list 用于查看已登记的系统扩展,scutil --nc list 可列出网络连接服务,最后一条只用于确认当前是否存在 utun 接口。系统本身和其他 VPN 也会创建 utun,因此不能仅凭接口存在就判断它属于 FlClash。
验证规则而不是只看 IP
选择规则模式后,分别访问一个应直连的站点和一个应走代理的站点,再查看 FlClash 连接记录中的规则名称、策略组和出站节点。只检查出口 IP 无法发现规则误命中。例如 DIRECT 规则优先级过高时,TUN 和网络扩展都可能正常,但目标域名仍会直连。
常见故障的对应处理
网络扩展已允许,TUN 仍无法启动
- 退出其他 VPN、旧版 Clash 客户端和企业代理后重试。
- 关闭 TUN,退出 FlClash,等待 10 秒后重新启动。
- 确认应用仍位于「应用程序」目录,而不是 DMG 挂载卷。
- 检查配置中是否同时存在重复的 DNS 监听端口。
- 若
127.0.0.1:1053已被其他进程占用,调整 DNS 监听设置或停止冲突进程。
开启后局域网设备不可访问
TUN 自动路由可能改变局域网流量的匹配方式。配置中应保留私有地址直连规则,例如 IP-CIDR,192.168.0.0/16,DIRECT,no-resolve、IP-CIDR,10.0.0.0/8,DIRECT,no-resolve 和 IP-CIDR,172.16.0.0/12,DIRECT,no-resolve。打印机或 NAS 使用局域网域名时,还要检查 DNS 是否能解析本地域名。
睡眠唤醒后显示已连接但无法访问
Wi-Fi 切换、热点更换或睡眠唤醒后,旧默认接口可能已失效。先关闭再开启 TUN,让 auto-detect-interface 重新识别出口。若问题只发生在从有线网络切换到 Wi-Fi 后,可退出应用再启动,以便重新建立路由和 DNS 状态。
系统代理关闭后仍然走代理
检查是否仍开启 TUN,或浏览器是否配置了独立代理扩展。系统代理、应用内代理与 TUN 是三条不同路径。关闭其中一项并不等于其余两项也已停止。终端还应检查 HTTP_PROXY、HTTPS_PROXY 和 ALL_PROXY 环境变量是否仍指向本机端口。
卸载与重装:清理 VPN、扩展和代理残留
直接把 FlClash.app 拖入废纸篓,只会移除应用主体。若此前启用过 TUN 或系统代理,应先恢复网络设置,再删除应用。这样可以避免重装前一直保留失效的本地端口、VPN 条目或旧辅助组件授权。
- 在 FlClash 中关闭系统代理。
- 关闭 TUN 模式并等待状态完成切换。
- 退出 FlClash,确认菜单栏图标与相关进程已经结束。
- 进入「系统设置」→「网络」→「VPN」,删除确认属于旧安装的条目。
- 在 macOS 15 及后续版本进入「通用」→「登录项与扩展」→「网络扩展」,检查旧条目状态。
- 进入当前网络的「详细信息」→「代理」,清除仍指向
127.0.0.1旧端口的配置。 - 最后删除「应用程序」中的 FlClash.app,并重新启动 Mac。
企业设备还可能安装描述文件。可在「系统设置」→「通用」→「设备管理」查看;只有明确知道描述文件来源和用途时才删除。由公司或学校下发的网络配置应交给管理员处理,避免同时影响证书、Wi-Fi 和其他安全策略。
profiles list
scutil --proxy
ps aux | grep -i clash
profiles list 用于检查配置描述文件,scutil --proxy 用于查看当前系统代理状态,最后一条用于确认是否仍有名称包含 Clash 的进程。命令结果可能包含其他客户端或历史组件,删除前必须先核对路径。
推荐的稳定安装顺序
- 按芯片架构下载对应安装包。
- 把 FlClash 移入「应用程序」,再从固定位置启动。
- 完成 Gatekeeper 放行并导入订阅。
- 先使用系统代理验证节点、DNS 和规则。
- 确认
127.0.0.1:7890等实际监听端口工作正常。 - 确有全局接管需求时,再启用 TUN 并完成网络扩展授权。
- 通过连接记录核对规则命中,而不是只看界面开关。
这套顺序把应用启动、订阅可用性、系统代理和 TUN 分成四个阶段。某一步失败时,可以直接定位到对应层级,不必反复删除应用或重置全部网络设置。