先弄清外部控制器、代理端口和 Web 面板
Clash Verge Rev 中的“外部控制器”不是代理服务器端口,也不是 Windows 系统代理端口。它是一组由 mihomo 内核提供的 HTTP API,用于让客户端或 Web 管理面板读取运行状态、切换策略组、查看连接、关闭连接以及修改部分运行参数。常见的代理流量端口是 7890,而外部控制器通常使用 9090,两者用途完全不同。
| 项目 | 常见示例 | 主要用途 |
|---|---|---|
| 混合代理端口 | 127.0.0.1:7890 |
为浏览器和其他程序提供 HTTP、HTTPS、SOCKS 代理 |
| 外部控制器 | 127.0.0.1:9090 |
提供 API,供客户端和 Dashboard 管理内核 |
| 控制密钥 | change-this-secret |
验证访问 API 的请求是否获得授权 |
| Web 管理面板 | 浏览器中的 Dashboard | 可视化查看连接、规则、节点和策略组 |
只打开系统代理,并不代表外部控制器已经启用;反过来,控制接口可以正常工作,也不代表浏览器已经通过代理访问网络。排查时应分别确认内核是否运行、控制端口是否监听、密钥是否匹配,以及 Web 面板是否加载到了正确的 API 地址。
在 Clash Verge Rev 中开启外部控制器
不同版本的 Clash Verge Rev 界面名称可能略有变化,但配置位置通常集中在“设置”“内核设置”“配置文件”或当前运行配置的编辑区域。Windows 操作前先确认 Clash Verge Rev 已经启动,并且当前确实运行的是 mihomo 内核。若只是安装了客户端但没有启动配置,修改控制器字段后不会出现监听端口。
- 打开 Windows 版 Clash Verge Rev,进入设置页面。
- 找到与“内核”“核心设置”“Mihomo 设置”或“配置覆写”有关的区域。
- 如果界面提供外部控制器开关,启用该选项,并填写控制地址和端口。
- 如果界面没有单独的开关,打开当前使用的 YAML 配置或本地覆写文件,加入相应字段。
- 保存后重新载入配置,必要时重启 mihomo 内核,而不是只关闭浏览器页面。
最小可用配置可以写成下面这样。端口没有被其他程序占用时,9090 是较常见的选择;如果已经被占用,可以改为 9091、9097 等未使用端口。
mixed-port: 7890
allow-lan: false
mode: rule
external-controller: 127.0.0.1:9090
secret: replace-with-a-long-random-secret
external-controller 决定 API 监听的地址和端口,secret 是控制密钥。密钥建议使用至少 16 位的随机字符串,包含大小写字母、数字或符号。不要把订阅令牌、邮箱、域名或简单的 123456 作为控制密钥。密钥修改后,已经打开的 Dashboard 也需要同步更新,否则会出现接口未授权。
如何选择监听地址
| 监听地址 | 适用场景 | 风险与注意事项 |
|---|---|---|
127.0.0.1:9090 |
只在当前 Windows 电脑上使用 Web 面板 | 安全性较高,局域网其他设备无法直接访问 |
0.0.0.0:9090 |
确实需要让局域网设备访问控制器 | 必须设置强密钥,并配合 Windows 防火墙限制来源 |
192.168.x.x:9090 |
只绑定指定的局域网网卡 | 网络切换后地址可能变化,虚拟网卡环境下需确认路由 |
如果只是在本机打开 Web 管理面板,不需要修改为 0.0.0.0。浏览器访问 127.0.0.1:9090 已经足够。只有在手机、平板或另一台电脑需要管理 Windows 上的 mihomo 时,才考虑局域网绑定;公网环境下不建议直接暴露控制端口。
保存配置并连接 Web 管理面板
保存 YAML 或覆写设置后,需要让当前运行的 mihomo 重新读取配置。可以在 Clash Verge Rev 中执行重新加载、切换一次配置再切回,或者完全退出并重新启动客户端。只刷新浏览器页面不会让内核读取新字段。如果启动日志出现 YAML 缩进错误,优先修复配置格式,再继续测试控制端口。
打开 Web 管理面板时,通常需要填写三项信息:控制器地址、控制器端口和 Secret。若面板已经把 API 地址合并为一个输入框,则填写类似 http://127.0.0.1:9090 的地址;如果面板单独要求 API Base URL,通常也应使用这个地址,而不是代理端口 7890。
| 输入项 | 正确示例 | 常见错误 |
|---|---|---|
| API 地址 | http://127.0.0.1:9090 |
填成订阅地址或 127.0.0.1:7890 |
| Secret | 与 YAML 中的 secret 完全一致 |
多复制空格、漏掉符号或仍使用旧密钥 |
| 访问协议 | 本机控制器通常使用 http |
未经配置就填写 https |
连接成功后,面板一般能够显示当前模式、延迟测试、代理组和活动连接。切换一个策略组时,变化应能同步反映在 Clash Verge Rev 的界面或日志中。不要把“网页能打开”作为唯一判断标准,因为静态 Dashboard 页面即使没有连接 API 也可能正常显示。
使用 Windows 命令测试控制接口
如果 Web 面板始终连接失败,可以先绕过面板,用 PowerShell 或命令提示符测试 API。Windows 终端中建议明确使用 curl.exe,避免 PowerShell 将 curl 解释为其他命令别名。
curl.exe -i ^
-H "Authorization: Bearer replace-with-a-long-random-secret" ^
http://127.0.0.1:9090/version
在 PowerShell 中也可以使用单行命令:
curl.exe -i -H "Authorization: Bearer replace-with-a-long-random-secret" http://127.0.0.1:9090/version
正常情况下会返回 HTTP 状态码 200,并显示内核版本信息。返回 401 Unauthorized 表示端口可以访问,但 Secret 不正确;返回“无法连接到目标计算机”或类似的连接拒绝错误,通常表示内核没有监听该端口、监听地址填错,或端口被其他程序占用。
无法连接、401 与端口占用的排查方法
提示连接被拒绝
先确认 Clash Verge Rev 当前有配置处于运行状态,并检查配置中的 external-controller 是否与浏览器地址一致。例如配置监听的是 127.0.0.1:9091,却访问 127.0.0.1:9090,结果必然是连接失败。部分客户端在更新配置后会覆盖手动修改,因此还要检查最终生效的配置,而不是只看临时编辑窗口。
可以使用 Windows 的端口查询命令确认监听状态:
netstat -ano | findstr LISTENING | findstr :9090
如果看到类似 127.0.0.1:9090 的监听记录,说明端口已经被某个进程占用。最后一列是 PID,可继续查询对应程序:
tasklist /FI "PID eq 1234"
若确认是 Clash Verge Rev 的 mihomo 进程,说明控制器大概率已经启动,应继续检查 Secret 和请求地址。如果 PID 属于其他软件,就把控制端口改成未占用的端口,并重新加载内核。不要直接结束陌生进程,尤其是安全软件、虚拟机、容器工具或企业管理组件。
提示 401 Unauthorized
401 是一个有价值的结果,它证明浏览器或命令已经到达控制接口。此时不需要修改 Windows 防火墙,也不需要重新安装客户端,重点检查认证信息。Secret 必须与配置中的值逐字符一致,前后不能有多余空格,命令中的请求头格式也要保持为 Authorization: Bearer 密钥。
- 确认面板没有自动保留旧的 Secret。
- 确认修改密钥后已经重新加载 mihomo。
- 确认配置中没有重复的
secret字段,避免误判最终生效值。 - 确认复制密钥时没有包含引号;YAML 中的引号通常不属于密钥内容。
- 如果使用多个配置文件,确认当前启动的配置就是刚刚修改的那一份。
局域网访问和 CORS 问题
本机访问 127.0.0.1 正常,但从另一台设备访问失败时,问题通常不只是 Web 面板。首先要确认控制器绑定的是局域网地址或 0.0.0.0,其次查看 Windows 防火墙是否允许该端口的入站连接。还要确认两台设备位于同一局域网,路由器没有开启无线客户端隔离。
如果控制器返回跨域相关错误,可能需要配置允许的外部来源。不同 mihomo 版本和客户端界面支持的字段有所差异,不建议直接复制不确定的配置。优先使用 Clash Verge Rev 自带或明确兼容的 Dashboard;如果必须使用第三方面板,应根据其文档确认访问来源、API 路径和认证方式。开启 CORS 不能替代 Secret,也不能解决端口未监听的问题。
完成设置后的验证清单
设置完成后,可以按下面顺序做一次完整验证。这样能够把“内核配置正确”“端口可访问”“面板认证成功”三个问题分别确认,避免只看到一个绿色连接状态就认为所有功能都正常。
- 确认 Clash Verge Rev 正在运行 mihomo 内核,并且当前配置没有 YAML 解析错误。
- 确认
external-controller使用了预期的地址和端口,例如127.0.0.1:9090。 - 确认配置中存在强度足够的
secret,并记住它没有包含多余空格。 - 使用
netstat检查端口是否处于LISTENING状态。 - 使用带有 Bearer 认证的
/version请求获得200响应。 - 在 Web 面板中填入相同的 API 地址和 Secret,检查代理组与活动连接是否能够加载。
- 切换一个代理策略后,观察 Clash Verge Rev 和 Web 面板是否同步变化。
- 如果不需要其他设备访问,保持控制器绑定在
127.0.0.1,并关闭不必要的防火墙入站规则。
最常见的配置错误可以归纳为三类:把 7890 代理端口误当成 9090 控制端口、修改了 YAML 却没有重新加载内核、Web 面板保存的 Secret 与当前配置不一致。按照“先看监听、再测接口、最后查认证”的顺序处理,通常比反复重装 Clash Verge Rev 更快找到原因。