混合端口与局域网共享:让同网段设备走同一个 Clash 代理

从 mixed-port 与 allow-lan 两个配置项入手,演示把电脑上的代理共享给手机、电视等设备的做法,并覆盖防火墙放行与连不上的排查清单。

mixed-port 与 allow-lan 分别控制什么

局域网代理共享的基本结构很简单:电脑运行 Clash、Clash Meta 或 mihomo 客户端并监听一个代理端口,手机、平板或电视把这台电脑的局域网 IPv4 地址填写为代理服务器。其他设备发出的 HTTP 或 SOCKS 请求先到电脑,再由电脑上的内核按当前规则和策略组处理。

mixed-port 是混合代理端口,同一个端口同时接受 HTTP 代理和 SOCKS5 代理连接。例如设置为 7890 后,支持手动 HTTP 代理的电视可以连接该端口,支持 SOCKS5 的应用也可以连接同一个端口。它与分别设置 portsocks-port 的方式相比,更适合家庭网络中的简单共享场景。

allow-lan 决定内核是否接受来自本机之外的局域网连接。它设为 false 时,即使电脑自己的浏览器可以通过 127.0.0.1:7890 使用代理,手机连接电脑的 192.168.1.20:7890 仍会失败。要进行共享,通常需要同时确认监听地址、防火墙和 Wi-Fi 网络隔离状态,不能只改一个开关。

配置项 示例值 实际作用
mixed-port 7890 在一个端口接收 HTTP 与 SOCKS5 代理连接
allow-lan true 允许局域网设备连接本机代理监听端口
bind-address '*' 让代理端口监听可用网络接口,而不只监听回环地址
authentication lanuser:自定义密码 要求连接代理端口的设备提交用户名和密码

配置 Clash、Clash Meta 或 mihomo 的监听端口

直接编辑 YAML 配置

使用支持覆写配置的客户端时,可以在当前配置或全局覆写文件中加入以下内容。不同图形客户端的入口名称略有差异,常见路径是「设置」→「参数设置」→「允许局域网连接」,或者「配置」→「覆写」→「全局覆写」。修改后必须重载配置或重启内核,否则旧监听状态不会改变。

mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info

如果客户端已经自动管理 mixed-port,应优先通过图形界面的端口设置修改,避免主配置、覆写文件和客户端偏好设置写入不同数值。排查时以客户端日志中实际显示的监听端口为准,而不是只看订阅文件里的字段。

为共享端口增加认证

mihomo 支持通过 authentication 给 HTTP 和 SOCKS 代理设置认证。家庭网络内存在访客设备,或者电脑连接的网络并非完全受控时,可以设置独立凭据。用户名和密码由使用者自行生成,不应沿用订阅网站、邮箱或系统账户密码。

mixed-port: 7890
allow-lan: true
bind-address: '*'
authentication:
  - "lanuser:示例强密码请自行替换"

并非所有电视系统的手动代理页面都提供用户名和密码输入框。如果终端不支持代理认证,可把防火墙入站范围限制为指定 IP,例如只允许手机 192.168.1.35 访问 TCP 7890,或者在路由器中给可信设备分配固定 DHCP 地址。

找到电脑的局域网地址并验证监听

Windows 查看 IPv4 地址

在 Windows 11 中打开「设置」→「网络和 Internet」→「Wi-Fi」→「当前网络属性」,查找“IPv4 地址”。也可以在 PowerShell 执行 ipconfig,选择当前正在使用的无线局域网适配器,不要误用 WSL、Hyper-V、Tailscale 或虚拟机创建的地址。

ipconfig

无线局域网适配器 WLAN:
   IPv4 地址 . . . . . . . . . . . : 192.168.1.20
   子网掩码  . . . . . . . . . . . : 255.255.255.0
   默认网关  . . . . . . . . . . . : 192.168.1.1

这个例子中,其他设备要填写的代理服务器是 192.168.1.20,端口是 7890127.0.0.1 永远表示设备自身:在手机上填写它,只会让手机尝试连接手机自己的 7890 端口。

macOS 与 Linux 查看地址

地址确认后,可以检查端口是否监听。Windows PowerShell 使用 Get-NetTCPConnection -LocalPort 7890;Linux 使用 ss -lntp | grep 7890;macOS 可以使用 lsof -nP -iTCP:7890 -sTCP:LISTEN。如果输出只出现 127.0.0.1:7890,说明监听仍限于本机;出现 0.0.0.0:7890 或电脑的局域网地址才具备接收局域网连接的条件。

放行 Windows、macOS 与 Linux 防火墙

Windows Defender 防火墙

先在「设置」→「网络和 Internet」→「Wi-Fi」→「当前网络」中把网络配置文件设为“专用网络”。随后打开「Windows 安全中心」→「防火墙和网络保护」→「高级设置」→「入站规则」→「新建规则」,选择“端口”,协议选 TCP,特定本地端口填 7890,操作选“允许连接”,配置文件只勾选“专用”。

也可以用管理员 PowerShell 创建仅允许本地子网访问的规则:

New-NetFirewallRule `
  -DisplayName "Clash mixed-port LAN" `
  -Direction Inbound `
  -Action Allow `
  -Protocol TCP `
  -LocalPort 7890 `
  -RemoteAddress LocalSubnet `
  -Profile Private

HTTP 代理和 SOCKS5 的主要连接使用 TCP。只有在客户端、应用和内核都明确使用 SOCKS5 UDP 转发时,才需要按实际需求额外放行 UDP 7890。不要把“端口测试失败”直接归因于 UDP,因为手机 Wi-Fi 页面配置的 HTTP 代理首先依赖 TCP。

macOS 与 Linux

macOS 防火墙以应用为单位管理入站连接。路径是「系统设置」→「网络」→「防火墙」→「选项」,确认当前 Clash 客户端或其内核进程被允许接收入站连接。客户端升级后如果内核文件路径改变,需要重新检查授权记录。

使用 UFW 的 Linux 主机可以将来源限制在当前网段。假设局域网为 192.168.1.0/24

sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
sudo ufw status numbered

手机、平板和电视怎样填写代理

iPhone 与 iPad

  1. 进入「设置」→「无线局域网」,点击当前 Wi-Fi 右侧的信息按钮。
  2. 滑到页面底部,打开「配置代理」并选择“手动”。
  3. 服务器填写电脑的局域网地址,例如 192.168.1.20
  4. 端口填写 7890;如果配置了认证,再打开“鉴定”并填写用户名、密码。
  5. 保存后重新打开浏览器,并在 Clash 客户端的连接列表中检查新连接。

该设置只作用于当前 Wi-Fi。切换到另一个无线网络或移动数据后不会继续使用这台电脑的代理。部分应用忽略系统 HTTP 代理,部分基于 UDP 的协议也不会被 Wi-Fi 手动 HTTP 代理完整接管,这是终端代理方式的能力边界。

Android 与电视设备

原生 Android 常见路径是「设置」→「网络和互联网」→「互联网」→「当前 Wi-Fi」→「修改」→「高级选项」→「代理」→“手动”。不同厂商可能把入口放在「WLAN」→「已连接网络」→「代理设置」。主机名填写电脑地址,代理端口填写 7890,绕过列表可保留局域网域名或内部地址。

Android TV、Google TV 和部分电视盒子的入口通常在「设置」→「网络和互联网」→「当前 Wi-Fi」→「代理设置」。有些电视只提供 HTTP 代理,不支持 SOCKS5,也不支持用户名与密码。这类设备可以使用 mixed-port 的 HTTP 能力,但应用是否遵循系统代理仍由应用自身决定。

终端方式 适合场景 限制
Wi-Fi 手动 HTTP 代理 浏览器、应用商店及遵循系统代理的应用 不能保证接管 UDP,也有应用会绕过系统代理
应用内 SOCKS5 支持独立填写 SOCKS5 的下载器或播放器 只影响当前应用
把电脑设为网关 终端不能配置代理且需要转发更多协议 还需要 IP 转发、路由和 NAT,不等同于开启 allow-lan

TUN 模式为什么不会自动共享给其他设备

TUN 模式在运行 Clash 的电脑上创建虚拟网络接口,并通过系统路由接管本机流量。它解决的是“本机应用不读取系统代理”的问题,不会自动把电脑变成局域网默认网关。手机仍然把家庭路由器作为默认网关时,其流量不会因为电脑开启 TUN 就绕到电脑。

局域网手动代理与 TUN 可以同时使用:电脑自身流量进入 TUN,手机则连接 192.168.1.20:7890。两类流量最终都由同一个 mihomo 内核处理,但入口不同。在连接页面中,局域网设备的来源地址通常显示为手机或电视的局域网 IP,可据此判断共享请求是否真正到达内核。

如果目标是让不支持代理设置的游戏机、电视应用或 IoT 设备透明经过电脑,就需要把电脑配置为网关,开启 IPv4 转发,并设置 NAT、策略路由及 DNS 转发。Windows 的移动热点、Linux 的 nftables、软路由旁路网关都属于另一层网络方案。仅添加 allow-lan: true 不会修改其他设备的默认路由。

连接失败的逐层排查清单

第一层:确认设备处于可互访的同一网络

第二层:确认内核正在正确接口监听

第三层:确认防火墙与代理协议

第四层:判断是全部失败还是部分应用失败

浏览器能够打开网页,而某个视频应用、游戏或投屏功能失败,说明代理端口和局域网链路大概率已经可用。此时应检查该应用是否使用 QUIC、UDP、局域网发现协议或证书固定,而不是反复修改 allow-lan。手动 HTTP 代理不会代理 mDNS 广播,也不会替代局域网投屏所需的设备发现。

如果所有网站都失败,但 Clash 连接列表能看到请求,应查看命中的规则和策略组。请求命中 REJECT、节点不可用、订阅过期或规则提供者加载失败,都会表现为“已连接代理但页面打不开”。把日志级别临时改为 info,记录目标域名、命中规则和出口策略,再针对结果处理。

稳定共享时的配置建议

  1. 给运行 Clash 的电脑设置 DHCP 地址保留,例如固定分配 192.168.1.20,避免重启路由器后终端代理地址变化。
  2. 只开放实际使用的 mixed-port,并把防火墙来源限制为 LocalSubnet 或明确的设备 IP。
  3. 让电脑保持唤醒和联网。电脑休眠、切换 Wi-Fi、关闭客户端或内核重启时,共享设备会立即失去代理连接。
  4. 修改配置后先用一台手机验证,再逐台添加电视和平板,避免同时排查多个终端的差异。
  5. 通过连接列表核对来源地址与命中规则。正常情况下,手机发起请求后应在数秒内看到对应局域网 IP、目标域名和出口策略。

一个可维护的家庭共享方案通常只需要四项明确数据:电脑局域网地址、mixed-port 端口号、允许访问的设备范围、当前防火墙规则。先保证这四项一致,再处理应用是否遵循系统代理、UDP 是否需要单独方案等上层问题,排查路径会更短。

下载 Clash 按平台选择客户端