混合端口负责接收什么流量
mixed-port 是 Clash 与 mihomo 配置中的本地入站端口。它在同一个 TCP 端口上识别 HTTP 代理和 SOCKS5 代理协议。电脑上的浏览器可以把它当作 HTTP 代理,支持 SOCKS5 的应用也可以连接同一端口,不必分别维护 port 与 socks-port。
常见配置把混合端口设为 7890。如果运行 Clash 的电脑地址为 192.168.1.20,局域网设备需要填写的代理地址就是 192.168.1.20:7890。这里填写的是主机在家庭网络中的 IPv4 地址,不是 127.0.0.1,也不是 Clash 节点服务器地址。
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
mixed-port、port 与 socks-port 的区别
| 字段 | 协议 | 典型用途 |
|---|---|---|
mixed-port |
HTTP 与 SOCKS5 | 用一个端口兼容手机、电视和桌面应用 |
port |
HTTP | 仅提供传统 HTTP 代理入口 |
socks-port |
SOCKS5 | 供明确支持 SOCKS5 的应用连接 |
同一份配置没有必要同时把三个字段都设为 7890。端口不能被多个监听器重复占用。需要兼容多类设备时保留 mixed-port: 7890 即可;需要把两种协议分开审计时,再分别使用不同的 port 和 socks-port。
allow-lan 与 bind-address 的实际作用
allow-lan: true 允许其他主机访问 Clash 的代理入站。它解决的是“是否接受局域网连接”这一层。只开启图形客户端里的“系统代理”,通常只会修改当前电脑的系统代理设置,不会自动让电视或手机经过这台电脑。
bind-address 决定入站监听在哪些网络地址上。'*' 表示监听可用接口,适合地址可能随 DHCP 变化的家庭网络。部分客户端生成的运行配置会将它转换为等价监听方式。若只想绑定固定网卡,也可以填写电脑的局域网地址,例如 192.168.1.20,但该地址变化后需要同步修改配置。
最小可用检查清单
- 在 Clash 配置中确认
mixed-port有明确端口,例如7890。 - 启用局域网访问,对应配置值为
allow-lan: true。 - 确认监听地址不是仅限回环地址
127.0.0.1。 - 重新载入配置或重启内核,使修改后的入站监听生效。
- 在宿主电脑执行
ipconfig、ip addr或查看网络设置,记录当前 IPv4 地址。 - 确保宿主电脑和目标设备连接到同一个家庭网络,且路由器没有启用客户端隔离。
先确认 Clash 是否真的监听局域网
Windows 可在 PowerShell 中运行 Get-NetTCPConnection -LocalPort 7890 -State Listen。若 LocalAddress 显示 0.0.0.0 或宿主机的局域网地址,说明该端口可从对应接口接收连接;如果只显示 127.0.0.1,其他设备无法接入。
Linux 可运行 ss -lntp | grep 7890,macOS 可运行 lsof -nP -iTCP:7890 -sTCP:LISTEN。排查时先看监听状态,再看防火墙。客户端界面显示“允许局域网”不等于系统防火墙已经允许入站连接。
手机、电视与游戏机怎么填写代理
局域网共享的核心是手动代理。目标设备仍然通过原来的 WiFi 获取 IP、网关和 DNS,只把支持代理的应用请求交给 Clash。宿主电脑必须保持开机、联网,并确保 Clash 内核运行。电脑休眠后,其他设备会立即失去这个代理入口。
Android 与 iPhone
Android 常见路径是「设置」→「网络和互联网」→「WiFi」→当前网络→「修改」→「高级选项」→「代理」→「手动」。iPhone 与 iPad 的路径是「设置」→「无线局域网」→当前网络右侧信息按钮→「配置代理」→「手动」。服务器填写宿主电脑地址,例如 192.168.1.20,端口填写 7890。
系统级 WiFi 代理主要使用 HTTP 代理机制。多数浏览器和遵循系统网络设置的应用会生效,但部分应用会自行建立连接、绕过系统代理或使用不受 HTTP 代理承载的 UDP 流量。出现“网页可以打开,某个应用仍直连”的情况,不代表 mixed-port 配置失效,应先确认该应用是否遵循系统代理。
Android TV、Google TV 与智能电视
Android TV 的菜单名称因厂商不同,常见路径是「设置」→「网络和互联网」→已连接的 WiFi→「代理设置」→「手动」。代理主机名填写电脑的局域网 IP,代理端口填写 7890。如果电视只提供“主机名”输入框,直接填写数字 IP,不要添加 http://,也不要把端口拼进同一个输入框。
部分电视系统没有手动代理入口,或者只有浏览器遵循代理设置。此时无法单靠 Clash 的 mixed-port 接管整台电视。需要覆盖所有应用时,应改用具备透明代理能力的路由器、旁路网关,或在受支持的设备上直接运行客户端。
PlayStation、Nintendo Switch 与其他游戏设备
PlayStation 网络设置中可在自定义连接流程里找到“代理服务器”,地址和端口仍填写宿主电脑 IP 与 7890。Nintendo Switch 可在「系统设置」→「互联网」→「互联网设置」→当前网络→「更改设置」→「代理设置」中配置服务器与端口。
游戏流量经常包含 UDP、点对点连接和严格 NAT 检测。手动 HTTP 代理通常只能覆盖账号登录、商店页面、下载接口等 TCP 请求,不能等同于整机透明代理。联机匹配、语音聊天或 NAT 类型不会因为填入 HTTP 代理就必然改变。若目标是转发整机 TCP 与 UDP 流量,应使用路由侧透明代理方案,而不是继续调整 mixed-port。
Windows、macOS 与 Linux 防火墙放行
局域网连接到达电脑网卡后,还要经过操作系统防火墙。建议只允许家庭子网访问代理端口,不要直接为所有远程地址开放。以下示例假设家庭网段为 192.168.1.0/24,混合端口为 7890。
Windows 入站规则
Windows 图形路径为「Windows 安全中心」→「防火墙和网络保护」→「高级设置」→「入站规则」→「新建规则」。选择“端口”,协议选 TCP,特定本地端口填写 7890,配置文件只勾选当前使用的“专用”。作用域中可把远程 IP 限制为家庭子网。
也可以使用管理员 PowerShell 创建限定子网的规则:
New-NetFirewallRule `
-DisplayName "Clash mixed-port LAN" `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-LocalPort 7890 `
-RemoteAddress 192.168.1.0/24 `
-Profile Private
如果 WiFi 被 Windows 识别为“公用网络”,而规则只应用于“专用”,连接仍会被拦截。家庭路由器下可在「设置」→「网络和 Internet」→「WiFi」→当前网络中检查网络配置文件。不要为了测试直接关闭全部防火墙;先核对规则、端口和网络类型。
macOS 与 Linux
macOS 可在「系统设置」→「网络」→「防火墙」→「选项」中确认 Clash 客户端允许接收入站连接。不同客户端的应用名称不同,实际负责监听端口的可能是客户端主程序,也可能是独立内核进程。升级或更换内核文件后,系统可能再次询问是否允许连接。
使用 UFW 的 Linux 主机可以执行下面的规则,只允许指定家庭网段连接 TCP 7890:
sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
sudo ufw status numbered
若系统使用 firewalld、nftables 或云主机安全组,应在实际生效的防火墙层配置,而不是同时堆叠多套规则。家庭局域网共享也不需要在路由器上设置端口转发;端口转发会把内部监听暴露到路由器外侧,与同一 WiFi 内共享不是一回事。
连接失败时按网络层逐项排查
第一步:确认设备之间可以互相到达
在手机或另一台电脑上访问代理前,先确认两台设备位于相同子网。例如宿主机为 192.168.1.20/24,手机为 192.168.1.36/24,通常可以直接通信。如果一台地址是 192.168.1.x,另一台是 192.168.50.x,需要检查是否连接了访客 WiFi、Mesh 隔离网络或不同 VLAN。
许多路由器的“访客网络”“AP 隔离”或“无线客户端隔离”会阻止 WiFi 设备访问局域网主机。此时设备可以上网,却无法连接 192.168.1.20:7890。应把两台设备切换到普通家庭网络,或在路由器中允许对应网段互访。
第二步:测试端口,不先测试节点
另一台电脑可用 Test-NetConnection 192.168.1.20 -Port 7890 测试 Windows 宿主机,也可使用 nc -vz 192.168.1.20 7890。如果 TCP 连接失败,问题位于监听地址、防火墙或局域网隔离,不需要先更换代理节点。
端口连通后,可从支持命令行代理的设备执行:
curl -x http://192.168.1.20:7890 https://example.com/
curl --socks5-hostname 192.168.1.20:7890 https://example.com/
第一条验证 mixed-port 的 HTTP 代理入口,第二条验证 SOCKS5 入口。使用 --socks5-hostname 时,域名解析请求由 SOCKS5 代理侧处理,适合区分本地 DNS 与代理链路问题。
第三步:检查 Clash 日志与规则命中
端口能连接但目标网站打不开时,查看客户端的连接列表或日志。若完全没有新增连接,通常是目标设备没有保存代理设置,或应用绕过了系统代理。若日志出现连接但最终走了 DIRECT,应检查当前模式和规则匹配;若命中代理组后超时,再检查代理组选择与节点状态。
- 连接被拒绝:Clash 没有监听该地址,或端口填写错误。
- 连接超时:防火墙、客户端隔离或网段路由阻止访问。
- 有日志但网页失败:检查规则、DNS、代理组与上游节点。
- 浏览器正常而应用失败:应用可能不读取系统代理,或主要使用 UDP。
- 隔一段时间失效:宿主机 DHCP 地址变化、电脑休眠或客户端更新配置后关闭了局域网访问。
长期使用时的地址与访问控制
手动代理依赖宿主机 IP。若路由器每次分配不同地址,手机和电视中的代理设置会失效。建议在路由器 DHCP 设置中为宿主电脑创建地址保留,例如始终分配 192.168.1.20。这比在电脑上直接填写静态 IP 更容易保持网关、DNS 与网段参数一致。
共享端口只应在可信局域网中开放。mihomo 支持为入站代理配置认证,适合人员较多或设备不可完全信任的网络:
mixed-port: 7890
allow-lan: true
bind-address: '*'
authentication:
- "livingroom:change-this-password"
启用认证后,电视或游戏机必须提供代理用户名与密码输入项;不支持认证的设备将无法使用该入口。家庭环境中还可以通过防火墙把远程地址限制为具体设备,例如只允许 192.168.1.36 和 192.168.1.48,减少同网段其他设备连接的范围。
局域网共享适合临时为手机、电视或少量设备提供 HTTP 与 SOCKS5 代理。需要让整屋设备自动接管、覆盖不支持代理的应用,或处理游戏 UDP 流量时,应把代理能力部署到路由器或独立网关。mixed-port 是明确的应用代理入口,不是透明网关,也不会替代路由转发和 NAT 配置。