电脑上跑着一个 Clash,手机、平板、电视也想走同一批节点,不必每台设备各装一个客户端。打开混合端口与局域网共享,其他设备把代理指向电脑的局域网 IP 即可。还没装客户端的,先去下载页装好 Clash Verge Rev,按教程导入订阅,再回来开共享。
混合端口:一个端口,两种协议
Clash 配置文件里有三个和端口有关的字段,先分清再动手:
port:HTTP 代理端口,只接 HTTP/HTTPS 代理请求;socks-port:SOCKS5 代理端口,支持 TCP 与 UDP 转发;mixed-port:混合端口,在同一个端口上自动识别进来的是 HTTP 还是 SOCKS 请求,对端不用关心协议差异。
Clash Verge Rev 默认只开一个混合端口 7897(早期版本与部分旧配置是 7890,以「设置 → 端口设置」里实际显示的为准),系统代理、浏览器、命令行工具全部指向它。局域网共享同样围绕这个端口展开:手机、电视上只需要记一个 IP 加一个端口号。
什么时候用到独立的 port 或 socks-port?个别老软件只认其中一种协议、且对自动识别兼容不好时,可以在配置里额外声明,三个字段允许同时存在,互不冲突。日常共享用混合端口就够。各字段的完整说明见配置参考页。
第一步:打开 allow-lan,放行防火墙
默认状态下 Clash 只监听 127.0.0.1,也就是只有本机能连。字段 allow-lan 控制是否监听所有网卡,设为 true 之后,同一局域网里的设备才连得进来。
Clash Verge Rev 里不需要手改文件:打开「设置」页,找到「局域网连接」开关并打开,它对应的就是 allow-lan;同页的「端口设置」可以查看或修改混合端口。等价的 YAML 写法如下:
mixed-port: 7897
allow-lan: true
bind-address: "*"
bind-address 保持 *(全部网卡)即可,填具体 IP 反而容易在换网络环境后失效。
Windows 首次开启共享时,系统通常会弹出安全中心警报,询问是否允许 verge-mihomo 在网络上通信,勾选「专用网络」后允许。如果当时点了取消,到「控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙」里找到对应条目,重新勾选专用网络。macOS 开了防火墙的话,在「系统设置 → 网络 → 防火墙 → 选项」里放行内核程序即可。
第二步:查出电脑的局域网 IP
其他设备要填的「服务器 / 主机名」,是电脑在局域网里的地址,不是 127.0.0.1。查询方法:
- Windows:命令提示符执行
ipconfig,看当前网卡下的「IPv4 地址」,常见形如192.168.1.20; - macOS:「系统设置 → Wi-Fi → 详细信息」里直接可见,或终端执行
ipconfig getifaddr en0; - Linux:终端执行
hostname -I,取第一个地址。
这个地址由路由器 DHCP 分配,重启路由器或租约到期后可能变化。长期共享建议在路由器后台做 IP/MAC 绑定(常叫「地址预留」),把电脑的局域网 IP 固定下来,免得每隔几天在手机上重填一遍。
第三步:手机、平板、电视分别怎么填
前提:设备和电脑连的是同一个路由器、同一个网段。下面以电脑 IP 192.168.1.20、端口 7897 为例。
iPhone / iPad
「设置 → 无线局域网」,点当前 Wi-Fi 右侧的详情按钮,滑到最底部「配置代理」,选「手动」:服务器填 192.168.1.20,端口填 7897,存储。没开认证的话,「认证」开关保持关闭。
Android 手机 / 平板
「设置 → WLAN」,长按或点击当前已连接的网络,选「修改网络」,展开「高级选项」,代理选「手动」:代理主机名填 192.168.1.20,代理端口填 7897,保存。各品牌文案略有差异,关键字都是「代理 → 手动」。
Android TV / 电视盒子
原生 Android TV:「设置 → 网络与互联网 → 当前 Wi-Fi → 代理设置」,选手动后填 IP 与端口。注意很多电视的定制系统(部分国产电视、老款三星与 LG)根本不提供代理入口,这条路走不通,只能把代理下沉到路由器层,不在本文范围。
另一台电脑
macOS 在「系统设置 → Wi-Fi → 详细信息 → 代理」里勾选「网页代理 (HTTP)」与「安全网页代理 (HTTPS)」,填同一组地址;Windows 在「设置 → 网络 → 代理 → 手动设置代理」里填写。也可以只在浏览器插件里指过去,影响面更小。
电脑关机,手机就断网
手机填了手动代理后,几乎所有流量都交给电脑转发。电脑休眠、关机或退出 Clash,手机会立刻上不了网。不用共享时,记得把手机的代理改回「关闭 / 无」。
验证连通与排错顺序
在另一台设备上验证,最直接的是命令行:
curl -x http://192.168.1.20:7897 -I https://www.google.com
能返回响应头,说明「设备 → 电脑 → 节点」整条链路通了。手机上没有终端的话,直接打开浏览器访问一个网站也能判断。
连不上时按下面的顺序查,命中率从高到低:
- 两端是否在同一个网段:手机 IP 也应是
192.168.1.x;连了「访客网络」基本都会被隔离; - 路由器是否开了 AP 隔离 / 客户端隔离,开了之后局域网设备互相不可见,关掉再试;
- 电脑防火墙是否真的放行,可暂时关闭防火墙测一次来定位;
allow-lan是否生效:看内核日志里的监听行,地址是[::]或0.0.0.0才对;如果还是127.0.0.1,说明开关没打开或配置没生效;- 端口是否被本机其他程序占用,占用就换一个,比如
7899,手机端同步改。
level=info msg="Mixed(http+socks) proxy listening at: [::]:7897"
另外两点常见疑惑:一是 HTTP 代理不转发 UDP,语音通话、部分游戏走系统代理时可能异常,属于协议本身的行为,不是配置错误;二是手机上同时开着其他 VPN 类应用时会和手动代理冲突,先关掉再测。
安全提醒:共享开关别常开
只在可信网络里共享
打开 allow-lan 等于把代理服务暴露给当前网段的所有设备。家庭网络没问题;在咖啡馆、机场、公司访客网这类公共网络里,务必保持关闭。
共享出去的代理拥有和电脑完全相同的网络视角:通过它能访问你电脑能访问的一切内网地址,包括路由器管理后台。所以即便是在家里,也只把 IP 和端口告诉可信的人。
需要长期共享时,给代理加一层账号密码,Clash 原生支持:
authentication:
- "homeuser:换成足够长的密码"
配置后,iOS 在「配置代理」里打开「认证」并填写用户名密码;Android 自带的代理入口不支持填账号,需要换用支持认证的代理客户端,或干脆只在用的时候临时开共享。
最后一条习惯:共享结束就回「设置」页关掉「局域网连接」。开关只是回到默认的仅本机监听,不影响电脑自己继续使用代理。