clash允许局域网
VSCode AI回答
下面我会说明 Clash 配置中的“允许局域网”(通常在配置里是 allow-lan 或 allow-lan: true/false)是什么意思、它如何工作、会开启哪些服务/端口、可能的安全风险、常见场景以及推荐的配置和检测方法。
基本含义¶
- “允许局域网”(allow-lan)是 Clash(及其衍生脚本/一键安装)中的一个开关。开启后,Clash 会监听本机的代理服务(HTTP/SOCKS/DNS/TUN 等)在局域网接口上可被同一局域网内其它设备访问。
- 换句话说,当 allow-lan = true 时,局域网内其他设备可以通过你的机器上的 Clash 服务来使用代理(即把你这台机器当作代理网关)。
具体行为(常见实现)¶
- HTTP 代理(如端口 7890/7910 等)和 SOCKS5(如 7891)会绑定到 0.0.0.0 或 局域网 IP(例如 192.168.x.x),而不是仅绑定到 localhost(127.0.0.1)。
- Web UI(通常是 9090)也会按 allow-lan 的配置可在局域网地址上访问(比如 http://192.168.1.100:9090/ui)。
- 有些安装脚本会同时开放端口转发或 iptables 规则以支持 TUN/透明代理,此时也会影响局域网可达性。
常见端口(仅作示例,实际端口以你的配置为准)¶
- HTTP 代理:7890(或自定义)
- SOCKS5 代理:7891
- 本地 DNS:53 或 1053(视配置)
- Web UI:9090 说明:这些端口是否对局域网开放,取决于服务是否绑定在非 127.0.0.1 接口。
安全风险¶
- 未设密码或未限制来源时,局域网内任意设备都可使用你的代理访问外网,可能导致滥用(比如被用作非法活动的跳板)。
- 如果你的本机处在不受信任的网络(例如公共 Wi‑Fi)或你的路由器设置不够严格,可能会有外部(互联网)访问到这些端口的风险(端口转发 / UPnP)——尤其当你的机器有公网 IP 或被路由器映射端口时。
- Web UI 如果无认证或密钥较弱,可能泄露代理订阅、日志、甚至允许远程控制(切换节点、导出订阅等)。
推荐配置(安全优先)¶
- 若只在本机使用代理:将 allow-lan 设为 false(或确保所有服务仅绑定到 127.0.0.1)。
- 若确实需要在局域网共享代理:
- keep allow-lan = true,但同时在 Clash 配置中设置
secret(Web UI 密钥)并确保代理服务需要认证(SOCKS5 可启用用户名/密码)。 - 在路由器上禁止端口映射(确保 7890/7891/9090 等不被映射到公网)。
- 在操作系统防火墙上只允许特定局域网 IP 访问这些端口(例如通过 iptables 或 UFW 限制来源 IP)。
- 在 Web UI 中设置强密码或只允许 HTTPS(如果 Web UI 支持)。
- 如使用脚本安装(例如仓库中提到的一键脚本),注意脚本默认的提示密钥/端口,修改默认密钥(示例中 clashsecret)并记录密钥。
检测与验证方法¶
- 本机检查服务绑定:
- 在 Linux 上运行:ss -lntp | grep
或 ss -lnp 查看端口监听地址,确认是否绑定到 0.0.0.0(表示对所有接口可达)还是 127.0.0.1(仅本机)。 - 局域网设备测试:
- 在同一局域网其他机器上配置浏览器或系统代理指向你的机器 IP + 端口,检查是否能上网。
- Web UI 测试:
- 在局域网设备上打开 http://<你的机局域网IP>:9090/ui(或脚本中提示的地址),如果能打开并看到控制面板,说明 allow-lan 已允许访问。
- 公网暴露检测:
- 使用在线端口扫描或从外网主机尝试访问你的公网 IP:端口(注意不要做不安全或违规的扫描)。更稳妥的是检查路由器的端口转发设置。
示例(配置片段)¶
- 只允许本机(更安全)
- 将 Clash 配置中的 allow-lan 设为 false(或不设置,让默认本机绑定)。
- 允许局域网但开启 Web UI 密钥(推荐共享时使用)
- allow-lan: true
- secret: "强密码或长随机字符串"
- 然后在防火墙/路由器上限制来源。
示例(YAML 风格,仅作展示): allow-lan: true secret: "change_this_to_a_strong_secret" port: 7890 socks-port: 7891 redir-port: 7892 mixed-port: 7893