大多数图形化客户端(Clash Verge、Clash for Windows 系列)已经内置了控制面板,日常使用基本不需要额外配置。但如果你直接部署的是 Mihomo 内核,或者想用更强大的第三方面板查看流量走向,就需要手动开启外部控制,再搭配一个浏览器面板项目使用。
什么是外部控制
Clash 内核本身会启动一个 RESTful API 服务,监听在配置里指定的地址与端口上。所有的图形客户端、命令行工具、浏览器面板,本质上都是通过这套 API 与内核通信——查询当前节点、切换策略组、拉取实时日志,都是通过接口完成的,并不需要重启内核本身。
换句话说,内核负责实际转发流量,面板只是一层"仪表盘",两者是完全解耦的。这也是为什么修改节点、清空 DNS 缓存这类操作,大多数面板都能做到"即时生效",不需要重新加载整个配置文件。
开启外部控制
在配置文件中加入下面两行,重启一次内核后即可生效:
external-controller: 127.0.0.1:9090 secret: 'replace-with-a-strong-secret' # 面板访问密钥,务必自行修改
external-controller 是面板要连接的地址与端口,secret 是访问密钥,面板首次连接时需要填入。如果你使用的是内置面板的图形客户端,这两项通常已经预先配置好,可以在设置里直接查看,不需要手动改配置文件。
监听地址保持 127.0.0.1,不要绑定到 0.0.0.0 并暴露到公网——这是最容易被忽视,但后果最严重的一步。
常见面板怎么选
| 面板 | 特点 | 适合人群 |
|---|---|---|
| yacd | 轻量、界面简洁,连接列表与流量图是核心功能 | 只想看连接状态,不需要太多额外功能 |
| metacubexd | 功能更全,支持规则测试、订阅管理、多种主题 | 希望面板承担更多日常操作,减少切换客户端 |
| 客户端内置面板 | 与图形客户端集成,无需额外部署 | 已经在用 Clash Verge / CFW 等图形客户端 |
yacd 和 metacubexd 都是开源的静态网页项目,可以部署到任意静态服务器,也可以直接用浏览器打开本地文件使用。连接时只需要填入前面配置的 external-controller 地址与 secret 即可。
面板里最常用的三个视图
- Connections(连接):实时列出当前所有连接,包括目标域名、命中的规则与所走节点,排查"为什么这个网站走了直连"时最有用。
- Proxies(节点):查看所有策略组与节点延迟,支持手动切换节点或触发测速,效果和客户端里的节点面板完全一致。
- Logs(日志):实时输出内核运行日志,规则不生效、订阅解析失败时,第一时间应该看这里。
安全注意事项
外部控制本质上是一个没有速率限制、权限粒度很粗的管理接口——拿到访问权限基本等于完全接管这个 Clash 实例,包括看到你的所有连接记录、修改节点甚至读取配置里的敏感信息。因此:
- 监听地址保持 127.0.0.1,只在本机访问;确实需要远程访问时,优先通过 SSH 隧道转发端口,而不是直接暴露端口。
- secret 使用足够复杂的随机字符串,不要用生日、用户名这类容易猜到的内容。
- 如果开启了局域网共享(allow-lan),外部控制端口不要跟着一起对局域网开放,两者的监听范围应该分开管理。
配置完成后,打开面板、填入地址与密钥,就能看到实时的连接列表了。比起每次改动配置都要重启客户端、再逐个测试节点,这种"边看边调"的方式效率会高很多,尤其是在调试规则或者排查某个网站访问异常的时候。
多台设备、多个内核怎么区分管理
如果你同时在几台设备上跑 Clash(比如家里的路由器、一台常开的 NAS、再加上笔记本本地测试用的实例),用同一个面板挨个切换地址会比较麻烦。这种情况下,可以给每个实例的 external-controller 配置不同的端口,再在面板里保存多组连接配置,类似浏览器书签一样随时切换,不需要每次手动重新输入地址。
另外要注意,secret 建议每个实例单独设置,不要图省事全用同一个密钥——一旦某个实例的密钥泄露,不会牵连到其他实例。对于长期挂在路由器或 NAS 上跑的实例,由于攻击面更大,密钥更换的优先级应该更高。
面板打不开时怎么排查
面板连接失败,通常逃不开这几种情况,按顺序排查基本能定位问题:
- 地址或端口填错:确认面板里填的地址、端口与配置文件里 external-controller 的值完全一致,注意是否漏了协议前缀或端口号。
- secret 不匹配:修改过配置文件里的 secret 之后,如果没有重启内核,新的密钥不会生效,面板会一直提示认证失败。
- 内核没有监听该地址:如果面板部署在其他设备上访问,但内核的 external-controller 仍然是 127.0.0.1,只在本机可访问,外部设备自然连不上——这也是前面强调不建议轻易改动监听范围的原因,需要远程访问时用 SSH 隧道而不是直接放开监听地址。
- 浏览器跨域限制:部分浏览器对 HTTP 页面访问本地地址有额外限制,遇到连接被浏览器拦截的情况,可以尝试更换浏览器或使用面板项目提供的本地部署方式。
把这几点排查完,基本能解决绝大多数连接问题。控制面板本身不复杂,大部分"用不起来"的情况都出在配置细节上,而不是面板或内核本身有问题。