Clash external-controller 安全配置:secret 与公网风险

这是一篇"别给自己挖坑"的安全提醒。控制接口很方便,但它能完全操控你的内核——切节点、改规则、读连接记录。一旦它对公网开放又没设口令,等于把代理拱手让人。这篇讲清三条红线和正确的加固姿势。

风险到底有多大

控制接口是一个无需登录就能调用的管理 API(除非你设了 secret)。如果它监听在 0.0.0.0:9090 又暴露到公网,任何人扫到这个端口都能:替你切换节点、篡改分流规则、查看你正在访问的所有连接,甚至把你的代理当跳板。这不是理论——公网上常年有人批量扫这类裸露端口。

三条红线

红线 1 空 secret = 无门禁 红线 2 监听 0.0.0.0 对外全开 红线 3 端口转发到公网 全网可达

风险示意图这三件事任意一件就危险,三件同时犯等于裸奔。

  1. 空 secret:相当于管理后台不要密码。
  2. 监听 0.0.0.0:同一局域网内别的设备都能连——合租、公司、公共 Wi-Fi 下尤其危险。
  3. 把 9090 端口转发/映射到公网:全互联网都能扫到,最严重。

正确做法

# 桌面单机:只监听本机,外人碰不到
external-controller: 127.0.0.1:9090
secret: "用随机生成的长口令,别用 123456"
  • 能本机就本机:单机使用时绑定 127.0.0.1,这是最安全的默认。
  • secret 必设且要强:随机长字符串,别和别处口令重复。
  • 不需要就别开 external-ui:减少暴露面。
  • 软路由/服务器:哪怕只在局域网用,也要设 secret;不需要远程就绝不做公网端口映射。

非要远程访问怎么办

确实需要在外面管理服务器上的内核,不要直接把 9090 丢公网。用下面任一方式套一层:

  • SSH 隧道:本地端口转发到服务器的 127.0.0.1:9090,最简单也最稳。
  • 反向代理 + HTTPS + 独立认证:用 Nginx/Caddy 在前面加一层 Basic Auth 或更强的鉴权,再开放。
  • WireGuard / Tailscale 等私有网络:把内核留在私网里,只有你的设备能进。
一句话总结:控制接口默认就该躲在本机或私网后面。任何"为了方便"把它直接暴露公网的做法,都是在拿账户安全换便利,不值。

桌面用户默认就安全

桌面客户端默认绑定本机,到下载中心获取即可,无需额外加固。

前往 Clash 下载中心
⚠️ 免责声明:本文为开源软件使用教程,本站不提供任何节点、VPN 或机场服务。请遵守所在地区法律法规,合理合法使用网络工具。