mixed-port 与 allow-lan 分别控制什么
局域网代理共享的基本结构很简单:电脑运行 Clash、Clash Meta 或 mihomo 客户端并监听一个代理端口,手机、平板或电视把这台电脑的局域网 IPv4 地址填写为代理服务器。其他设备发出的 HTTP 或 SOCKS 请求先到电脑,再由电脑上的内核按当前规则和策略组处理。
mixed-port 是混合代理端口,同一个端口同时接受 HTTP 代理和 SOCKS5 代理连接。例如设置为 7890 后,支持手动 HTTP 代理的电视可以连接该端口,支持 SOCKS5 的应用也可以连接同一个端口。它与分别设置 port、socks-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,端口是 7890。127.0.0.1 永远表示设备自身:在手机上填写它,只会让手机尝试连接手机自己的 7890 端口。
macOS 与 Linux 查看地址
- macOS:打开「系统设置」→「网络」→「Wi-Fi」→「详细信息」→「TCP/IP」,读取 IPv4 地址。
- Linux 桌面:打开「设置」→「网络」→「当前连接」→「详细信息」,或者执行
ip -4 address。 - 地址通常位于
192.168.0.0/16、10.0.0.0/8或172.16.0.0/12私有网段,但应以当前网络实际分配结果为准。
地址确认后,可以检查端口是否监听。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
- 进入「设置」→「无线局域网」,点击当前 Wi-Fi 右侧的信息按钮。
- 滑到页面底部,打开「配置代理」并选择“手动”。
- 服务器填写电脑的局域网地址,例如
192.168.1.20。 - 端口填写
7890;如果配置了认证,再打开“鉴定”并填写用户名、密码。 - 保存后重新打开浏览器,并在 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 不会修改其他设备的默认路由。
连接失败的逐层排查清单
第一层:确认设备处于可互访的同一网络
- 核对电脑和手机地址,例如电脑为
192.168.1.20、手机为192.168.1.35,掩码同为255.255.255.0。 - 关闭路由器的“AP 隔离”“客户端隔离”或“访客网络设备隔离”。访客 Wi-Fi 通常禁止访问主网络设备。
- 电脑同时连接网线、Wi-Fi 和虚拟网卡时,使用与手机同网段的物理接口地址。
- DHCP 重新分配地址后,手机中保存的旧代理地址会失效。可在路由器上为电脑设置 DHCP 地址保留。
第二层:确认内核正在正确接口监听
- 检查
allow-lan的运行时状态,而不是只检查订阅原文件。 - 确认实际 mixed-port 是
7890,没有被客户端自动改成7897、7893等其他端口。 - 重载配置后查看日志,确认端口未被其他程序占用。
- 如果监听地址仍是
127.0.0.1,检查客户端是否有单独的“绑定地址”或“局域网连接”开关覆盖 YAML。
第三层:确认防火墙与代理协议
- 暂时停用代理认证做一次对照测试;成功后再恢复认证并检查终端是否支持凭据输入。
- Windows 防火墙规则应匹配当前网络配置文件。规则只勾选“专用”,而当前连接被识别为“公用”时,入站仍会被拦截。
- 终端手动代理类型选 HTTP 时,仍可连接 mixed-port;不要把端口误填成控制端口
9090。 - 查看 Clash 连接列表:完全看不到来源 IP,问题通常位于局域网或防火墙;能看到连接但请求失败,再检查规则、DNS、节点和策略组。
第四层:判断是全部失败还是部分应用失败
浏览器能够打开网页,而某个视频应用、游戏或投屏功能失败,说明代理端口和局域网链路大概率已经可用。此时应检查该应用是否使用 QUIC、UDP、局域网发现协议或证书固定,而不是反复修改 allow-lan。手动 HTTP 代理不会代理 mDNS 广播,也不会替代局域网投屏所需的设备发现。
如果所有网站都失败,但 Clash 连接列表能看到请求,应查看命中的规则和策略组。请求命中 REJECT、节点不可用、订阅过期或规则提供者加载失败,都会表现为“已连接代理但页面打不开”。把日志级别临时改为 info,记录目标域名、命中规则和出口策略,再针对结果处理。
稳定共享时的配置建议
- 给运行 Clash 的电脑设置 DHCP 地址保留,例如固定分配
192.168.1.20,避免重启路由器后终端代理地址变化。 - 只开放实际使用的 mixed-port,并把防火墙来源限制为
LocalSubnet或明确的设备 IP。 - 让电脑保持唤醒和联网。电脑休眠、切换 Wi-Fi、关闭客户端或内核重启时,共享设备会立即失去代理连接。
- 修改配置后先用一台手机验证,再逐台添加电视和平板,避免同时排查多个终端的差异。
- 通过连接列表核对来源地址与命中规则。正常情况下,手机发起请求后应在数秒内看到对应局域网 IP、目标域名和出口策略。
一个可维护的家庭共享方案通常只需要四项明确数据:电脑局域网地址、mixed-port 端口号、允许访问的设备范围、当前防火墙规则。先保证这四项一致,再处理应用是否遵循系统代理、UDP 是否需要单独方案等上层问题,排查路径会更短。