Clash 的代理入口是否对其他设备开放,不能只看端口号,而要按「谁来连、从哪块网卡的哪一个地址连、源 IP 是否被放行」来选监听范围。全局配置里,allow-lan 表示是否允许其他设备经过 Clash 的代理端口访问互联网,取值为 true 或 false。bind-address 则限制其他设备只能通过指定地址访问:* 表示绑定所有 IP 地址;也可以填写单个 IPv4,或使用方括号填写单个 IPv6。
先按使用范围确定是否允许局域网
适用条件可以分成三档。第一档是仅本机进程使用代理:应保持 allow-lan 为 false。此时验收标准是本机连接代理端口成功,而不是局域网主机也能把流量送进同一端口。第二档是明确要把代理端口提供给其他设备:必须把 allow-lan 设为 true,否则后面无论绑定全部地址还是单个地址,都不应按共享入口来理解。第三档是环境不固定、有时只本机、有时临时共享:先按当前这次的使用范围改开关,而不是长期留在 true。
判断依据是配置值与客户端位置是否一致。客户端与内核在同一台主机,却按局域网共享去选 *,会把入口挂到所有地址上;客户端在其他设备,却未打开 allow-lan,则远端无法按官方定义使用代理端口。不要用出站接口或路由标记代替这一项。
再按网卡范围选择 bind-address
在已经允许局域网的前提下,再选绑定地址。需要其他设备通过本机任一当前地址连入、或地址会随网络变化时,将 bind-address 设为 *,对应官方说明的绑定所有 IP 地址。只允许走某一确定接口时,把 bind-address 写成该接口上的单个 IPv4 或单个 IPv6;官方含义是仅允许其他设备通过这个地址访问,因此对端填写的代理服务器必须与之一致。
操作步骤是:列出本机当前地址,标记哪些地址允许被当成入口;若允许多个地址可达,使用 *;若只保留一个入口,写入该单地址。IPv6 单地址按文档使用方括号形式。若 ipv6 为 false,内核不接受 IPv6 流量,此时不要把仅有 IPv6 的对端路径当作有效选择。
判断依据:对端实际访问的目的地址是否落在绑定范围内。访问未写入的地址失败,说明单地址绑定已约束入口;访问本机多个地址都能建立到代理端口的连接,说明当前是全部 IP 绑定。
用地址段和验证收紧来源并处理失败
lan-allowed-ips 仅在 allow-lan 为 true 时生效,默认 0.0.0.0/0 与 ::/0,等于不限制来源网段。使用范围若只是某一局域网,应改成该网段前缀,而不是沿用默认全域。lan-disallowed-ips 是禁止连接的 IP 地址段,黑名单优先级高于白名单,默认值为空;要排除单台主机时可写成文档示例中的 /32 形式。
http(s)、socks、mixed 代理可配置 authentication,每项为 user:pass。skip-auth-prefixes 用于对指定前缀跳过验证,文档示例包含 127.0.0.1/8 与 ::1/128。本机命中免验证前缀,并不表示其他网段也可以空口令接入。
失败时下一步:按顺序核对 allow-lan 是否匹配使用范围、bind-address 是否仍是对端能访问到的地址、源 IP 是否在白名单且未进入黑名单、是否缺少用户验证。单地址已随地址分配变化而消失时,改回 * 或更新为新地址。仍失败则把 log-level 调到 warning、info 或 debug 查看错误类日志,并在操作系统中确认套接字监听与防火墙;不要把 external-controller 的 API 监听地址当成代理入口来修改。