教程 · 预计阅读 13 分钟

Mihomo 外部控制器与 Yacd 面板:
远程换节点与安全密钥配置步骤

不想每次切节点都打开桌面客户端?Mihomo(Clash.Meta)通过 external-controller 提供与 Clash 兼容的 REST API,配合开源 Yacd Web 面板即可在浏览器里查看连接、切换策略组与节点。本文说明如何填写 external-controllersecret,在本机、局域网或远程场景下安全地使用面板,并降低未授权访问风险。

external-controller · Yacd · secret · Mihomo · Web 面板 · Clash API

1 外部控制器:给面板与脚本用的「管理口」

在 Clash 系内核里,external-controller 用来指定 REST API 监听的 IP 与端口。启用后,兼容的控制台(例如 YacdYacd-meta)、自写脚本或自动化工具可以通过 HTTP 请求读取当前配置、切换 策略组选中的节点、查看实时连接等。对桌面图形客户端(如 Clash Verge Rev)而言,内置界面往往已经封装了同类能力;而当你使用纯命令行路由器/服务器上只跑核心、没有常驻 GUI 时,Web 面板就成了最省事的可视化入口。

与「代理流量走的混合口/透明代理」不同,external-controller 只服务管理面:它不负责转发用户上网流量,但能改运行态策略。因此一旦端口暴露在不可信网络且缺少鉴权,他人可能切换你的出口、窥探连接摘要,甚至在部分场景下结合其他配置造成更大影响——下文会反复强调:绑定地址secret网络边界要一起设计,而不是只改一个开关。

若你尚未在本机或 VPS 上跑过 Mihomo,可先对照《Linux 安装 Mihomo 并开机自启:systemd 服务与最小 YAML 配置》完成最小可启动配置,再回到本文把 external-controllersecret 配齐。

2 在配置里写 external-controller 与 secret

在根配置(或经客户端合并后的最终 YAML)中,常见写法如下。端口可按需修改,只要不与系统其他服务冲突即可;secret 为访问 API 时使用的口令,面板与脚本会在请求头里携带(与 Clash 约定一致)。

YAML (excerpt)
# REST API(Yacd / 脚本 / 其他控制台)
external-controller: 127.0.0.1:9090
secret: "请替换为足够长的随机字符串"

# 若需同时从局域网其他设备访问 API,可改为监听网卡地址或 0.0.0.0,
# 但必须配合防火墙与强 secret,切勿对公网裸奔。
# external-controller: 0.0.0.0:9090

为何默认绑在 127.0.0.1

127.0.0.1 表示仅本机回环可连:同一台电脑上的浏览器打开 Yacd、或本机脚本访问 http://127.0.0.1:9090 没问题,但局域网里另一台手机或电脑默认连不上。这是最安全的基础缺省:先把管理口关在本机,再按需要逐步放开,而不是一上来就监听 0.0.0.0

secret 应满足什么强度

secret 应视为与登录密码同级的机密:足够长、不可预测,避免使用默认的 "" 或常见弱口令。修改 secret 后需重载配置或重启核心,并在 Yacd 里同步更新填写的密钥,否则会出现 401 未授权。若你使用图形客户端,部分版本会在 UI 里单独展示或覆盖 API 相关项,请以实际生效的运行配置为准。

不要留空 secret 又把 API 绑到 0.0.0.0 这相当于在局域网甚至公网上敞开「切节点」的权限。若必须监听全网卡,务必配合系统防火墙仅允许可信源 IP,并优先用 VPN、SSH 隧道或反向代理收敛入口。

3 使用 Yacd Web 面板连接 Mihomo

Yacd(Yet Another Clash Dashboard)是广为人知的开源 Web 面板,静态资源可托管在本地或 CDN。使用流程通常是:打开面板页面,在设置里填写 API Base URL(例如 http://127.0.0.1:9090),并填入与配置中一致的 secret。保存后,面板会通过浏览器向该地址发起请求,展示策略组、节点列表与当前连接等信息;你可以在界面上点击切换节点,效果与在客户端里改选组等价。

若你使用面向 Meta 内核的分支(名称常含 meta),其交互与 API 路径在多数场景下仍与 Clash 习惯兼容;若遇版本差异,以当前 Mihomo 文档与面板发布说明为准。策略组类型(如 selecturl-test)的含义与调优思路,可延伸阅读《Clash URL-Test 与 Fallback:测速选节点与故障转移》,便于在面板里理解各组行为。

浏览器跨域与 HTTPS 混合内容

当你从互联网上的 HTTPS 页面访问本机 HTTP API 时,浏览器可能因混合内容CORS 策略拦截请求。常见处理方式包括:在本机打开面板静态页、使用浏览器扩展或本地服务同域代理、以及用 SSH 端口转发把远程 9090 映到本机再访问。不要为满足面板访问而随意把 API 暴露到公网;优先收敛到可信通道内再操作。

验证 API 是否就绪 在本机可用 curl 探测(需带鉴权头,具体路径以 Mihomo 文档为准)。若连 curl 都连不上,应先检查核心是否运行、端口是否被占用、以及 YAML 是否已重载。

4 局域网内其他设备访问:绑定、防火墙与 Allow LAN

若你希望同一 Wi-Fi 下的手机或另一台电脑用浏览器打开 Yacd 并管理运行在某台 PC 或 NAS 上的 Mihomo,需要同时满足几件事: external-controller 监听地址不能仅限 127.0.0.1,应改为局域网 IP(例如 192.168.1.10:9090)或 0.0.0.0:9090(表示所有网卡); 操作系统或路由器防火墙放行该端口,且建议限制源地址为家庭网段; 若要让其他设备使用该机提供的代理端口,还需关注 allow-lan 与混合口监听方式——这与「仅管理 API」不同,但常被同一批用户同时开启。

远程(跨公网)场景下,不建议直接把 9090 映射到公网 IP。更稳妥的做法包括:先连入家庭 VPNWireGuard 再访问局域网地址;使用 SSH -L 本地转发把远端 API 转到本机 127.0.0.1;或在自管服务器上用 Nginx/CaddyHTTPS 终止、加HTTP 基本认证或 mTLS,仅对可信客户端开放。每一种都比「公网裸端口 + 弱 secret」更可控。

5 降低面板被他人访问的风险:清单式加固

  • 默认本机:无特殊需求时保持 external-controller 绑定 127.0.0.1,把管理操作限制在本机用户会话内。
  • 强 secret:使用足够长的随机字符串,定期轮换;修改后同步更新所有使用该 API 的面板与脚本。
  • 最小暴露面:必须对局域网开放时,在防火墙中限制源 IP 或网段,避免 0.0.0.0/0
  • 分层的管理通道:远程优先 SSH 隧道或 VPN,而不是把控制端口直接暴露到互联网。
  • 反向代理与 TLS:在服务器场景用 HTTPS 与访问控制保护管理入口,避免明文口令在公共网络中传输。
  • 意识层面:API 能改策略与查看连接摘要,应像 root 密码一样保管;不要在截图、录屏或公开仓库中泄露完整配置。

这些措施与「代理上网流量」的安全是两条线:即便你的节点与规则很讲究,一个敞开且未鉴权external-controller 仍可能让局域网内的恶意设备或误配置的端口转发带来风险。把管理面锁好,与写好 secret 同等重要。

6 常见问题

  • 面板提示 401 或未授权:核对 YAML 中的 secret 与面板填写是否完全一致;确认已重载配置;检查是否有多份配置被客户端覆盖。
  • 本机可连、他机连不上:检查监听地址是否为 127.0.0.1;若已改为局域网或 0.0.0.0,继续查系统防火墙、路由器 AP 隔离与 IP 是否在同一网段。
  • 能打开面板但无数据或跨域报错:多为浏览器安全策略;改在本机打开面板静态资源,或使用 SSH 转发到本机再访问。
  • 端口已被占用:更换 external-controller 端口并同步修改 Yacd 中的 API 地址。

7 总结

Mihomoexternal-controller 让你能用标准 REST API 管理内核;配合 YacdWeb 面板,可以在浏览器里直观完成策略组与节点切换。配置时请务必写好 secret、谨慎选择监听地址,并在局域网或远程场景下叠加防火墙可信通道,避免管理接口被无关设备访问。

相比仅依赖桌面客户端,这种组合特别适合无 GUI 的服务器长期开机的家庭 NAS,以及希望用大屏浏览器快速看一眼连接与组状态的用户。若你更习惯带图形界面的一体化体验,也可从本站下载页获取各平台客户端,与命令行或 Web 方案互为补充;图形端通常在内置了相似能力的同时,把订阅与系统代理入口打包得更省心。

最后提醒:Web 面板解决的是「怎么管」;节点质量、规则分流与 DNS 仍决定「好不好用」。把 external-controller 当作高权限管理口来防护,你的远程换节点体验才能在方便与安全之间取得稳妥平衡。

→ 立即免费下载 Clash,开启流畅上网新体验

标签: external-controller Yacd secret Mihomo Web 面板 Clash API
Clash 客户端 Logo

Clash Verge Rev

新一代 Clash 客户端 · 免费开源

内建 Mihomo 内核与图形界面,订阅管理与策略组切换无需单独搭 Yacd;亦可在高级设置中配合 external-controller 使用你喜欢的 Web 面板。Windows、macOS、Linux 全平台可用。

可视化策略组 Mihomo 高效能核心 精准规则分流 API 与订阅一体管理 多订阅管理

相关阅读