为什么「本机正常」,局域网设备却走不了代理

很多用户遇到同一种反差:运行 Clash 的电脑自己上网正常,但在手机或平板的 Wi‑Fi 代理里填上「电脑局域网 IP + 端口」,要么立刻超时,要么页面一直转圈。此时客户端往往其实已经启动,订阅也能更新,问题通常不在节点,而在监听范围、系统防火墙或路由器隔离这三类「局域网可见性」环节。

可以先把目标说清楚:你要做的是局域网代理——让同一二层网络里的其他设备,把 HTTP 或 SOCKS 流量发到「宿主机」上 Clash 监听的端口,再由 Clash 按规则转发。它和「只给本机浏览器用」的系统代理不是一回事;也和 TUN 模式在宿主机上接管全机流量 互补:TUN 解决的是这一台机器上哪些进程会进隧道,而本篇解决的是别的设备怎样才能连上你这台机器上的代理端口。

第一步:先核对三件事实——谁、哪个口、听在哪张网卡

在改配置之前,请先写下三个值,后面每一步都要对得上:① 宿主机的局域网 IPv4 地址(例如 192.168.1.23,以你路由器网段为准);② Clash 实际对外提供代理的端口(常见为 7890 HTTP、7891 SOCKS,或使用 mixed-port 合并端口);③ 该端口在操作系统层面监听在哪个地址上——是 127.0.0.1 还是 0.0.0.0(或等价「所有接口」)。

在 Windows 上可用「命令提示符或 PowerShell」执行 netstat -ano | findstr 7890(把数字换成你的端口)快速扫一眼。若只看到 127.0.0.1:7890,说明外网卡上的其他设备永远连不进来,这与 Clash 是否「已开启」无关。只有把监听绑定到局域网接口或通配地址,手机上的 TCP 连接才能抵达。

若电脑同时连着有线与 Wi‑Fi,或装了虚拟机虚拟网卡,请确认手机与电脑在同一网段、同一 VLAN,且你抄给手机的是当前正在上网那块网卡的 IPv4,而不是虚拟机或回环地址。

第二步:打开 allow-lan,并确认 bind-address

Clash 系列内核默认往往倾向于「只服务本机」,因此配置里常见 allow-lan: false。要做局域网代理,需要改为 allow-lan: true,否则来自其他设备的入站连接会被拒绝。图形客户端里这一开关可能叫「允许局域网连接」「Allow LAN」等,本质都是改同一逻辑。

仅有 allow-lan 有时仍不够:部分场景还要检查 bind-address(或界面里等价的「监听地址」)。若绑定在 127.0.0.1,含义是「只接受本机回环」;要让同一 Wi‑Fi 下的设备访问,通常需要绑定到所有接口,在 YAML 中常见写法为 *(具体以你所用内核与文档为准)。改完后务必重启内核或重载配置,再用上一节的 netstat 复查监听行是否已变为 0.0.0.0:端口 或包含你的局域网 IP。

# Example: LAN-friendly listener (adjust port to your profile)
mixed-port: 7890
allow-lan: true
bind-address: '*'
# If you use separate ports instead of mixed-port, set port / socks-port consistently.

第三步:搞清 mixed-port 与 HTTP、SOCKS 该怎么填

近年许多配置与教程会推荐 mixed-port:在同一端口上同时兼容类 HTTP 代理与 SOCKS 握手,手机系统里「代理端口」往往填这个最省事。若你的配置仍是传统的 port(HTTP)与 socks-port(SOCKS)分离,请在终端设备上与类型一致地填写:浏览器类常走 HTTP 代理端口,部分应用只认 SOCKS。

常见误填是:电脑上 Clash 显示的是 mixed-port 7890,手机却去连另一个被占用的旧端口;或电脑本机系统代理写着 127.0.0.1,你误以为那就是要给手机的地址——请记住:给其他设备的永远是「局域网 IP + 对外监听端口」127.0.0.1 只在手机指回手机自己,用在这是错的。

第四步:Windows 防火墙——按入站规则逐步放行

即使 Clash 已经在 0.0.0.0 监听,Windows 防火墙仍可能默认拦截来自局域网的入站 TCP。最稳妥的做法是为「可执行文件」或「端口」各建一条明确的允许规则,而不是一上来全局关闭防火墙。

推荐顺序如下:打开「Windows 安全中心 → 防火墙和网络保护 → 高级设置」,在「入站规则」中新建规则。若你使用图形版 Clash,优先选择程序类型,路径指向当前正在运行的 .exe,允许「专用」配置文件(对应专用网络,通常即家庭 Wi‑Fi)。若使用内核二进制或命令行分发,可选用端口类型,协议 TCP,特定本地端口填你的 mixed-port 或 HTTP 端口,作用域限定在「本地子网」更佳。

保存规则后,用手机在浏览器访问一个纯文本检测站,或临时用另一台电脑执行 curl -x http://192.168.x.x:7890 http://example.com(替换为你的 IP 与端口)做探活。若防火墙规则正确,连接应能建立;若仍失败,回到 netstat 看监听是否仍存在,并确认没有第二个安全套件在拦截。

在宿舍、公司或公共 Wi‑Fi 上开放局域网代理,相当于把入口暴露给同网段其他人。务必只在可信家庭网络使用,或配合路由器访客网络隔离策略,下文也会单独强调安全边界。

第五步:路由器与「同一 Wi‑Fi」——AP 隔离与访客网

有些环境表面上「连着同一个 SSID」,二层却是隔离的:例如AP 隔离(不同客户端不能互访)、访客网络与主网不通、Mesh 子路由的无线客户端隔离、或运营商光猫自带的「终端互访限制」。表现就是两台设备互 ping 不通,或 ARP 里看不到对方,这时再怎么改 Clash 配置也无济于事。

排查思路很直接:在手机与电脑之间做最小连通性测试(同网段互 ping、或用局域网文件共享工具试连)。若基础互通都没有,请进路由器管理界面关闭 AP 隔离,或让手机改连与电脑同一「主网络」而非访客 WLAN。若你在公司网络,IT 策略可能禁止 peer-to-peer,只能改用合规方案,不要强行绕过。

第六步:终端设备上如何填代理与自测

iOS、Android 与桌面系统都可以在 Wi‑Fi 详情里设置「手动代理」:服务器填宿主机局域网 IP,端口填 mixed-port 或 HTTP 端口;若系统区分 HTTPS 代理,可尝试与 HTTP 相同或留空按系统说明处理。部分应用不走系统代理,需要应用内单独配置或使用 VPN 类客户端——那就已不是本篇「HTTP/SOCKS 局域网代理」范畴。

自测时建议分两步:先访问一个只返回 IP 或极简内容的检测页,确认 TCP 与 HTTP 代理链路通;再访问目标站点,避免把「规则分流」「DNS 污染」误判成「端口不通」。若你使用 fake-ip 等 DNS 模式,其他设备也可能遇到解析与宿主机不一致的问题,必要时在局域网场景为终端配置可靠的上游 DNS,或暂时简化 DNS 段落做对照实验。

安全与边界:不要把「能连上」当成「可以随便开」

allow-lan: true 配合 0.0.0.0 监听,意味着同一广播域内可达你的代理端口的设备都可能尝试使用它。若网络里还有访客、智能家居或不可信终端,建议限制路由器 DHCP 网段、关闭不必要的端口转发,并在不使用时关断允许局域网或改回仅本机监听。

更高级的做法包括:在路由器层做静态 IP 与 MAC 绑定、仅允许指定 MAC 访问宿主机端口(视设备能力而定),以及优先在自己拥有管理权限的家庭路由下操作。开源协作与漏洞报告可在 GitHub 等渠道关注;若你尚未安装客户端,请优先通过本站 下载页 获取分发,再对照 Windows 安装与基础配置 完成本机就绪,最后才扩展到局域网共享。

小结:按清单过一遍,通常就能定位卡点

把排查顺序记成一张短清单会更省力:局域网 IP 是否抄对 → 端口与 mixed-port 是否一致 → allow-lan 与 bind-address 是否允许外部接口 → netstat 是否显示非回环监听 → Windows 入站规则是否放行 → 路由器是否隔离客户端 → 终端应用是否真的走系统代理。多数「已开客户端却连不上」的案例,卡在前四步与防火墙的占比最高;若前五步都正确仍不通,再集中怀疑路由与更大范围的网络策略。

相比只在单机上反复切换节点,把局域网代理调通一次,后面手机、平板和备用机都能共享同一套规则与订阅,维护成本更低。Clash 在规则分流、内核稳定性与图形界面整合上的一体化体验,对这类「一台主机服务多终端」的场景尤其友好;若你希望省去找包与版本兼容的麻烦,直接从可信渠道获取并保持客户端更新即可。

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