Clash无法启动或System Proxy系统代理打不开怎么办?

[!IMPORTANT] 【快速回答】 当你点击 Clash 的 System Proxy(系统代理) 开关后它立刻自动弹回关闭,或者软件启动直接报错弹窗,主要由以下三类故障引起:

  1. 端口冲突(Port Conflict):默认监听的 7890(HTTP/SOCKS5)或 9090(RESTful API 外部控制端口)被其他代理软件(v2rayN/Shadowsocks/Docker)或杀毒软件占用;
  2. 配置文件损坏 / YAML 语法错误:导入的订阅内容包含了非法的 UTF-8 字符或缩进格式错误,导致底层的 Mihomo/Clash Core 核心加载解析时发生 Panic 闪退;
  3. 权限与注册表锁定:Windows 系统的 Internet Settings 注册表项被组策略或流氓软件锁定,导致 Clash 无法以普通权限修改系统代理。

一键急救三步法:打开 Clash【Settings】→ 将【Mixed Port】改为 7893 → 退出客户端并右键【以管理员身份运行】。


【常见原因】故障现象与诱因对照表

故障现象 核心诱因 典型报错信息 优先级
System Proxy 开关打开后秒关 Windows 注册表代理键值写入失败 / 缺少管理员提权 无报错或提示 Set proxy failed P0(最高)
启动弹窗提示端口已被占用 后台有旧版本 Clash 残留,或与其他代理软件冲突 bind: address already in use P0
客户端打开后白屏,托盘图标几秒后消失 订阅配置文件语法崩溃 / 核心文件被杀毒软件隔离 Panic: yaml: unmarshal errors P1
开启 TUN 模式报错,无法创建网卡 未安装 Service Mode 服务模式 / Wintun 驱动缺失 configure tun interface: file exists / access denied P1
关闭 Clash 后电脑彻底无法上网 异常退出导致注册表系统代理残留未被恢复 浏览器报错 ERR_PROXY_CONNECTION_FAILED P2

【解决方法】分步排查与精准修复

步骤一:排查并解除 7890/9090 端口占用

  1. 查找占用端口的进程 PID
    • 打开 Windows 终端(PowerShell 或 CMD),输入以下命令查询谁占用了 7890 端口:
    netstat -ano | findstr :7890
    • 最后一列显示的数字即为占用进程的 PID(例如 14520)。
  2. 强制终止占用进程
    taskkill /PID 14520 /F
  3. 更彻底的方法:直接修改 Clash 监听端口
    • 进入 Clash 的 Settings(设置) 界面;
    • 找到 Mixed Port(混合端口),将其从默认的 7890 改为 789317890
    • 找到 External Controller(外部控制端口),将 9090 改为 9097
    • 重启 Clash,System Proxy 开关即可正常开启。

步骤二:修复损坏的订阅配置(解决内核闪退)

如果 Clash 闪退或控制台报错 yaml unmarshal error,说明当前 Profile 文件存在格式错误:

  1. 清理本地缓存配置文件
    • Windows:按 Win + R 输入 %USERPROFILE%\.config\clash(或 %APPDATA%\clash_win / Clash Verge 对应目录);
    • 将目录下的 config.yamlprofiles 文件夹重命名为 profiles_backup 进行备份;
  2. 重新导入订阅
    • 重新启动 Clash,此时客户端会生成一份干净的默认配置文件;
    • 粘贴机场提供的订阅链接,重新点击 Download / Import 获取配置;
    • 检查规则集是否有乱码,若机场提供的是 Base64 链接而非标准 Clash YAML,请在机场后台切换为【Clash 订阅格式】或使用可信转换器转换后再导入。

步骤三:安装 Service Mode(服务模式)与授权提权

现代 Clash 客户端(如 Clash Verge Rev、Clash Nyanpasu)的 TUN 模式和底层网络接管依赖于 Windows 系统服务权限:

  1. 打开 Clash Verge,点击左侧菜单栏 Settings(设置)
  2. 找到 Service Mode(服务模式) 项,点击右侧的 Install(安装)Manage(管理)
  3. 系统将弹出 Windows UAC 管理员提权确认框,点击【是】;
  4. 安装成功后,服务状态将显示为绿色的小圆点或 Active 状态;
  5. 此时再开启 TUN ModeSystem Proxy,系统网卡将平滑接管流量,不再出现权限拒绝弹窗。

步骤四:重置 Windows 注册表与网络代理配置

针对“开关总是被其他软件弹回关闭”的注册表锁定故障:

  1. 打开 Windows 设置 →【网络和 Internet】→【代理】;
  2. 将【自动检测设置】开启,将【使用代理服务器】手动关闭;
  3. 若 Windows 代理界面显示“部分设置由你的组织管理”且呈灰色不可修改:
    • Win + R 输入 regedit 回车;
    • 依次展开路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    • 双击修改 ProxyEnable,将其数值数据修改为 0
    • 右键该项查看【权限】,确保当前用户(Users)具备“完全控制”权限,没有被第三方策略禁用。

步骤五:修复或重新安装 Wintun 驱动

若开启 TUN 模式或系统增强接管时提示 wintun.dll not found 或网卡无法创建:

  1. 检查 Clash 安装目录中是否存在 wintun.dll(64位系统需对应 x64 架构);
  2. 打开 Windows 设备管理器(devmgmt.msc)→ 查看【网络适配器】;
  3. 如果列表中存在带有黄色感叹号的 Wintun Userspace Tunnel,右键选择【卸载设备】;
  4. 在 Clash Verge 的设置中重新点击 Restart Service 重启服务模式,系统将自动重新注入合法的签名驱动。

【如何判断问题来源】5维排查诊断矩阵

排查维度 核心检测手段 正常状态指标 异常归因与解决方案
1. 端口与进程 终端运行 netstat -ano | findstr :7890 仅由当前 Clash 进程单独监听 被残留僵尸进程占用,杀掉 PID 或修改端口
2. 核心状态 查看 Clash 的 Logs 日志面板 出现 Start initial compatible provider 出现 FATAL / panic,配置文件 YAML 语法报错
3. 权限与服务 检查 Windows 服务列表 (services.msc) clash-verge-service 处于“正在运行” 服务未安装或被安全管家拦截禁用,重新以管理员安装
4. 注册表代理 开启系统代理后检查系统代理设置 IP 显示 127.0.0.1 且端口对应 代理设置未变动,注册表被杀软或浏览器扩展锁定
5. 杀软拦截 查看 Windows Defender / 火绒拦截日志 无关于 clash-meta.exe 的隔离记录 核心文件被杀毒软件误杀隔离,需添加到白名单信任区
flowchart TD
    A[Clash无法启动 / 系统代理打不开] --> B{是否提示端口已被占用?}
    B ----> C[在设置中修改 Mixed Port 为 7893 并重启]
    B ----> D{是否在打开配置文件后崩溃闪退?}
    D ----> E[删除当前 Profile 订阅, 重新从机场后台导入标准YAML]
    D ----> F{TUN/服务模式是否报错?}
    F ----> G[以管理员身份运行 Clash 并重新安装 Service Mode]
    F ----> H[检查注册表 ProxyEnable 权限, 退出冲突代理扩展]

【仍然无法解决】进阶方案

  1. 彻底重置 Winsock 网络套接字目录
    • 某些代理软件卸载不干净可能导致 Windows 基础套接字损坏。
    • 以管理员身份打开 CMD 或 PowerShell,输入以下指令并重启计算机:
    netsh winsock reset
    netsh int ip reset
    ipconfig /flushdns
  2. 清理 Clash 环境变量与守护进程
    • 检查系统环境变量中是否被写入了全局 HTTP_PROXYHTTPS_PROXY,若存在且指向错误端口,将其删除;
  3. 更换稳定版客户端架构
    • 旧版 Clash for Windows(原作者已停止维护)存在 Electron 框架老化与 Win11 23H2/24H2 兼容性问题;
    • 强烈建议迁移至 Clash Verge Rev(基于 Tauri 开发,内存占用更低,系统代理接管更稳定)。

【FAQ 常见疑问】

Q1:为什么关闭 Clash 退出后,电脑浏览器完全无法访问任何网页(包括百度)?

:这是因为 Clash 退出时发生异常中断,未能及时清理 Windows 系统的“手动代理服务器”设置。此时系统仍在尝试将流量转发给已经关闭的 127.0.0.1:7890,导致网络全部中断。
解决办法:进入 Windows【设置】→【网络和 Internet】→【代理】,手动将【使用代理服务器】开关关闭,刷新网页即可瞬间恢复。

Q2:为什么明明以管理员身份运行了,依然提示 System Proxy 设置失败?

:通常是因为第三方安全软件(如 360 安全卫士、火绒安全规则或企业终端管控软件)开启了“锁定主页与系统代理防篡改”保护。请在安全软件中暂时关闭系统代理防护功能,或将 Clash 加入信任白名单。

Q3:Clash 默认的 7890、7891、9090 端口具体有什么作用?

  • 7890 (Mixed-Port):HTTP/HTTPS 与 SOCKS5 混合代理入口,系统代理和浏览器主要连接此端口;
  • 7891 (SOCKS-Port):单独的 SOCKS5 代理协议入口(部分老配置保留);
  • 9090 (External-Controller):UI 界面与后端 Clash Core 内核进行数据通信的 API 端口,此端口若被占用会导致 UI 界面显示断开连接或白屏。

【相关阅读】


【服务选择指南】

优秀的机场服务商能够从源头减少此类配置错误的发生:

  1. 标准化的配置模板:优质服务商提供的 Clash 订阅链接经过严格的 YAML 语法规范验证,自动适配 Clash Verge / Mihomo,避免由于格式错误导致客户端闪退;
  2. 多协议与客户端生态兼容:不仅支持 Clash 格式,还提供 Sing-box、Shadowrocket 等原生协议托管,当单一客户端遇到系统兼容性故障时可无缝切换。