先确认局域网共享代理的工作方式
局域网共享代理是让一台正在运行 Clash 的电脑充当代理服务器。电视、手机、平板或另一台电脑仍然连接原来的路由器,只把应用产生的 HTTP 或 SOCKS 流量发送到这台电脑的 Clash 监听端口。Clash 根据规则选择 DIRECT、代理节点或其他策略组,再把结果返回给设备。
这种方式不等于把电脑改造成完整路由器,也不会自动接管同一 Wi-Fi 下的全部设备。接入设备必须支持手动填写代理服务器,或者由浏览器、下载工具等应用单独配置代理。部分游戏、语音、UDP 视频和系统更新服务会绕过 HTTP 代理,因此需要先判断设备和应用是否支持。
| 项目 | 示例值 | 作用 |
|---|---|---|
| Clash 主机地址 | 192.168.1.23 |
接入设备能够访问的局域网 IPv4 地址 |
| mixed-port | 7890 |
同时接受 HTTP 与 SOCKS5 代理连接 |
| allow-lan | true |
允许其他主机连接 Clash 监听端口 |
| bind-address | * |
在可用网络接口上监听连接 |
| 客户端代理地址 | 192.168.1.23:7890 |
填写到电视、手机或另一台电脑 |
mixed-port、allow-lan 与监听地址分别控制什么
mixed-port 合并 HTTP 与 SOCKS5 入口
mixed-port 是混合代理端口。它可以在同一个 TCP 端口上识别 HTTP 代理和 SOCKS5 代理请求。把它设为 7890 后,支持 HTTP 代理的电视可以连接 192.168.1.23:7890,支持 SOCKS5 的桌面程序也可以使用同一地址。
如果配置里同时存在 port: 7890、socks-port: 7891 和 mixed-port: 7890,可能因为重复监听造成启动失败。通常保留一个 mixed-port 就足够。确实需要分离入口时,再使用不同端口,例如 HTTP 使用 7890、SOCKS5 使用 7891。
allow-lan 决定是否接受局域网连接
allow-lan: true 允许其他设备连接代理端口。设为 false 时,本机应用仍可能通过回环地址使用 Clash,但来自 192.168.x.x 或 10.x.x.x 网段的连接会被拒绝。许多图形客户端把它显示为「允许局域网连接」「LAN 访问」或「Allow LAN」。
bind-address 限定监听接口
Clash Meta(mihomo)配置可以通过 bind-address 指定监听地址。* 表示在可用接口上监听,适合家庭局域网测试;指定 192.168.1.23 则只绑定该地址。主机地址由 DHCP 改变后,写死的绑定地址可能失效,因此长期使用时可以在路由器中为该电脑设置 DHCP 地址保留。
mixed-port: 7890
allow-lan: true
bind-address: "*"
mode: rule
log-level: info
不同客户端保存设置的位置并不完全相同。常见操作路径是「设置」→「参数设置」→「允许局域网连接」,然后检查「混合端口」是否为 7890。若客户端提供「配置覆写」或「全局扩展配置」,应在覆写层设置这些字段,避免订阅更新后被远端配置覆盖。修改完成后重载配置或重启内核,并观察日志中是否出现端口监听错误。
找到主机局域网地址并检查端口
Windows 查看 Wi-Fi 地址
打开「设置」→「网络和 Internet」→「Wi-Fi」→「硬件属性」,找到 IPv4 地址。也可以在 PowerShell 执行:
ipconfig
在当前无线网卡下找到类似 192.168.1.23 的 IPv4 地址。不要选择虚拟网卡、TUN 网卡、Docker 网卡或以 169.254 开头的自动分配地址。接着用 PowerShell 检查 7890 是否监听:
Get-NetTCPConnection -LocalPort 7890 -State Listen
如果输出中的 LocalAddress 是 0.0.0.0 或主机局域网地址,说明端口已经对相应接口监听。若只显示 127.0.0.1,应重新检查 allow-lan 和 bind-address。
macOS 与 Linux 查看地址
macOS 可以打开「系统设置」→「网络」→「Wi-Fi」→「详细信息」→「TCP/IP」,读取 IPv4 地址。终端也可以执行 ipconfig getifaddr en0;如果 Wi-Fi 接口不是 en0,先用 networksetup -listallhardwareports 确认接口名。
Linux 桌面可在「设置」→「网络」→「Wi-Fi」→当前连接中查看 IPv4,终端则执行:
ip -4 address
ss -lntp | grep 7890
确认地址后,在另一台设备上测试端口可达性。Windows PowerShell 可以执行 Test-NetConnection 192.168.1.23 -Port 7890。macOS 或 Linux 可以执行 nc -vz 192.168.1.23 7890。只有 TCP 测试成功,才继续检查代理规则和节点。
在电脑、手机、电视与游戏机上填写代理
另一台 Windows 或 macOS 电脑
Windows 11 路径为「设置」→「网络和 Internet」→「代理」→「手动设置代理」→「设置」。服务器填写 192.168.1.23,端口填写 7890。保存后先打开浏览器测试,再测试目标应用。这里配置的是系统 HTTP 代理,不保证所有桌面软件都会读取。
macOS 路径为「系统设置」→「网络」→「Wi-Fi」→「详细信息」→「代理」。勾选「网页代理(HTTP)」和「安全网页代理(HTTPS)」,两项服务器都填写 Clash 主机地址,端口均填 7890。使用完成后取消勾选,避免主机离线后网络请求持续等待。
Android 与 iPhone
Android 常见路径为「设置」→「网络和互联网」→「互联网」→当前 Wi-Fi →编辑→「高级选项」→「代理」→「手动」。代理主机名填写 192.168.1.23,端口填写 7890。不同厂商的菜单名称略有差异,但设置通常保存在当前 Wi-Fi 网络中。
iPhone 与 iPad 路径为「设置」→「无线局域网」→当前网络右侧信息按钮→「配置代理」→「手动」。服务器填写主机局域网地址,端口填写 7890。HTTP 代理主要影响遵循系统代理设置的应用;某些应用自行建立连接,不会经过该入口。
电视与流媒体设备
Android TV 或 Google TV 通常可以在「设置」→「网络和互联网」→当前 Wi-Fi →「代理设置」中选择手动配置。服务器主机名填写 192.168.1.23,代理端口填写 7890。电视连接成功但应用仍提示区域或网络错误时,应查看 Clash 日志是否出现该电视地址的请求。
代理只处理应用实际发送到代理端口的流量。电视的 DNS 探测、时间同步、局域网投屏和部分 UDP 流量可能直接连接。为避免影响投屏,可在 Clash 规则中让 RFC1918 私有地址和局域网域名保持 DIRECT。
PlayStation、Nintendo Switch 与 Xbox
PlayStation 5 可进入「设置」→「网络」→「设置」→「设定互联网连接」,选中当前网络后打开「高级设置」,把「代理服务器」改为使用,填写主机地址和 7890 端口。Nintendo Switch 可进入「设置」→「互联网」→「互联网设置」→当前网络→「更改设置」→「代理设置」。
游戏机的代理设置通常只覆盖下载、商店或部分 HTTP 请求。联机对战大量使用 UDP,NAT 类型检测也不会完整经过 HTTP 代理。Xbox 系统没有通用的手动 HTTP 代理入口时,不能仅靠 mixed-port 接管全部流量,需要使用旁路由或把支持透明代理的设备设为网关。
配置防火墙,只放行可信局域网
Clash 已监听 7890,不代表操作系统防火墙一定允许其他设备访问。正确做法是仅在家庭或可信网络配置文件中开放 TCP 7890,并限制来源网段。不要在机场、酒店、校园公共 Wi-Fi 上长期启用局域网共享。
Windows Defender 防火墙
进入「Windows 安全中心」→「防火墙和网络保护」→「高级设置」→「入站规则」→「新建规则」。选择「端口」,协议选 TCP,特定本地端口填 7890;操作选择允许连接;配置文件只勾选「专用」。在「作用域」中把远程 IP 限制为家庭网段,例如 192.168.1.0/24。
如果 Windows 把当前 Wi-Fi 识别为公用网络,先进入「设置」→「网络和 Internet」→「Wi-Fi」→当前网络,把网络配置文件改为「专用网络」。仅应对可信家庭网络执行此操作。
Linux 使用 UFW 限定来源
sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
sudo ufw status numbered
如果家中使用 192.168.50.0/24,命令中的网段也要同步修改。macOS 出现“是否允许传入连接”提示时,应确认程序是当前使用的 Clash 客户端或 mihomo 内核,再允许家庭网络连接。
认证、规则与 DNS 的安全配置
多人网络为代理入口增加认证
mihomo 支持通过 authentication 为 HTTP 和 SOCKS 入口设置用户名与密码。宿舍、合租网络或访客较多的 Wi-Fi 建议启用认证,并在客户端代理设置中填写对应凭据。
mixed-port: 7890
allow-lan: true
bind-address: "*"
authentication:
- "lanuser:change-this-password"
认证信息属于敏感配置,不要提交到公开仓库,也不要直接写入会被分享的订阅文件。部分电视不支持带认证的代理;遇到这种情况,应优先通过防火墙限制设备 IP,而不是扩大端口访问范围。
保留局域网直连规则
共享代理时,打印机、NAS、投屏接收器和路由器后台应继续直连。规则按从上到下匹配,可以把私有网段放在通用代理规则之前,并在最后保留 MATCH 兜底。
rules:
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- DOMAIN-SUFFIX,local,DIRECT
- MATCH,PROXY
若使用订阅提供的规则集,应确认其中已经包含私有地址直连规则。不要只看客户端当前显示的“规则模式”,还要检查最终命中的策略。打开 Clash 连接页面或实时日志,从来源地址、目标域名和策略名称判断流量是否按预期处理。
DNS 表现取决于客户端应用
HTTP 代理请求通常携带目标主机名,Clash 可以在代理端处理域名,但接入设备仍可能自行执行 DNS 查询。SOCKS5 是否由代理端解析,也取决于应用使用的是远程解析还是本地解析。浏览器访问正常而某个应用失败时,应分别检查应用是否遵循系统代理、DNS 是否可用,以及它是否依赖 UDP。
按顺序排查连接失败
- 确认主机在线。运行 Clash 的电脑不能休眠,切换 Wi-Fi 后要重新核对局域网地址。
- 确认内核正常。先在主机本机使用
127.0.0.1:7890测试代理,排除订阅、节点和规则故障。 - 确认监听范围。检查
allow-lan: true,并确认 7890 监听在0.0.0.0、*或正确的局域网地址上。 - 确认二层网络互通。两台设备应位于同一可互访网络。路由器的 AP 隔离、访客网络隔离会阻止设备之间连接。
- 确认防火墙规则。临时关闭防火墙只适合短时定位,确认原因后应恢复并建立限定网段的入站规则。
- 确认应用使用代理。在 Clash 日志中筛选接入设备的 IP。如果完全没有记录,问题通常在设备代理设置或网络隔离,而不是节点。
可以在另一台安装了 curl 的设备上执行下面的命令。预期结果是成功建立到 Clash 主机 7890 端口的连接,并返回 HTTP 响应头:
curl -I -x http://192.168.1.23:7890 https://www.gstatic.com/generate_204
如果提示 Connection refused,通常是端口未监听或 allow-lan 未开启;如果一直超时,优先检查防火墙、访客网络和 AP 隔离;如果已经连接代理但目标请求超时,再检查 Clash 日志、节点延迟和规则命中结果。