外观
Clash 提示端口被占用怎么办?7890、7897 冲突这样排查
打开 Clash,弹出“端口被占用”;或者软件界面出来了,日志却反复出现 address already in use。节点列表还在,但怎么换节点都没用。
这种情况先别急着买新订阅。**本地端口冲突,通常是在电脑里的代理入口还没建好,和机场节点快不快是两件事。**入口没开起来,后面的节点再正常,软件也未必能把流量送进去。
这篇主要讲 Windows 下的 Clash Verge Rev。其他使用 Mihomo 的桌面客户端也能参考判断方法,但菜单位置和默认端口可能不同,以你当前设置和日志为准。
先看完整报错:究竟哪个端口打不开?
把本地端口想成电脑里的一扇门。一个程序已经在某个地址、协议和端口上接客,另一个程序再来使用同一入口,就可能发生冲突。这里说的是软件监听端口,不是电脑上的 USB 插孔。

先打开客户端的日志,记录报错里的地址、端口和关键词,不要只截最后一句。下面几类情况,处理方向不同:
| 报错或现象 | 优先检查 |
|---|---|
address already in use,或 Windows 错误 10048 | 指定本地地址和端口是否已被使用 |
access permissions,或错误 10013 | 权限或独占绑定限制,不能只凭这句认定普通进程占用 |
cannot assign requested address,或错误 10049 | 监听地址是否属于当前电脑 |
External controller 监听失败 | 外部控制端口,不一定是网页代理端口 |
这些错误的含义可以对照 Microsoft 的 Winsock 错误说明。不要把所有包含 bind 的报错都当成“换个节点就好”。
还有个重要区别:**本地监听失败,不等于节点服务器的远端端口出问题。**不要为了修复电脑上的 127.0.0.1:7897,去修改订阅中的节点服务器端口。
混合代理端口和外部控制端口,不是同一扇门
Clash、Mihomo 的设置里会出现不止一种端口:
- 混合代理端口:供支持 HTTP 或 SOCKS5 代理的软件接入,本机浏览器、下载工具等可能使用它。
- 单独的 HTTP / SOCKS 端口:有些配置会分别开启,不是每个客户端都需要。
- 外部控制端口:供界面或控制工具和内核通信,不是拿来填写网页代理的入口。
教程里常见 7890、7897,但不能因此认定你的客户端一定用这个数字。先看设置中的“端口设置”“混合代理端口”等项目,再和日志核对。
如果网页还能上网,只有代理页面空白,同时日志出现外部控制监听错误,就应该查控制端口。Clash Verge Rev 的 官方 FAQ 也单独说明了这类情况。只改混合端口,可能根本没改到出问题的位置。
Windows 按这 4 步处理,别先强制结束进程
第一步:退出自己开启的其他代理工具
先保存工作,看看托盘里是否同时开着两套 Clash、其他代理客户端、抓包工具或本地调试服务。从对应程序的菜单正常退出,不只是关掉窗口。
再重启需要保留的客户端。如果这样恢复,先保持只运行一套,之后再检查另一套的开机自启和端口配置。
公司电脑上的安全接入软件、你不认识的后台服务,不要直接结束或卸载。端口冲突可以绕开,不值得把工作网络一起弄坏。
第二步:用只读命令查是谁在监听
如果正常退出其他程序后仍报错,可以打开 PowerShell,查询日志中那个 TCP 端口。下面用 7897 示范,实际执行前要换成自己的报错端口:
Get-NetTCPConnection -LocalPort 7897 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess这条命令只是查看,不会结束程序或修改网络设置。Microsoft 文档 提供了这些筛选参数。
结果里的 OwningProcess 是进程编号。假如你查到的编号是 12345,再执行下面的查询;12345 只是示例,必须替换为刚才实际查到的数字:
Get-Process -Id 12345 | Select-Object Id, ProcessName, Path看到名字还不确定,就在任务管理器中核对它属于哪个软件。路径可能因权限无法显示;如果提示权限不足,可以用管理员 PowerShell 再做只读查询,公司设备则先咨询管理员。
如果进程已退出、第二条命令查不到了,重新查询一次端口,别拿旧编号继续操作。不要直接照抄网上的强制结束命令,更不要一键结束所有名字带 clash 的程序。
第三步:退出占用程序,或调整本地监听端口
确认占用者是自己不需要的程序,先从它的界面退出,再启动 Clash。若两套工具都确实要保留,可以给它们安排不同的本地端口,但不要同时争抢系统代理设置。
修改前记下原值。优先在客户端设置中调整发生冲突的端口;比如混合端口发生冲突,就调整混合端口,控制端口发生冲突,就调整控制端口。保存后按客户端提示重载或退出重启。
没有哪个示例数字保证在所有电脑上都空闲。新端口同样要查询、启动验证,也不能和自己配置中的其他监听入口重复。
不要为了“解决占用”把监听地址改成 0.0.0.0,或者打开局域网访问、路由器端口映射。本机入口冲突不需要靠扩大访问范围来修复。
第四步:同步修改所有手动代理入口
这一步经常被漏掉:Clash 的门牌号改了,其他软件还往旧地址敲门,当然还是连不上。
重新启用客户端的系统代理后,核对 Windows 代理设置是否指向当前代理端口。之前手动填写过代理的地方,也要逐项检查:
- 浏览器代理扩展;
- 下载软件和聊天软件里的独立代理设置;
- 终端的代理环境变量;
- Git 等工具的单独代理配置。
不要把控制端口当成新的网页代理端口。只改了外部控制端口时,需要同步的是额外使用控制 API 的工具,不是把所有浏览器入口也改过去。
命令没输出,却仍然报错,怎么办?
上面的命令只查询指定端口的 TCP 监听记录。没输出只能说明这次没查到匹配项,不能证明所有绑定限制都不存在。
先核对三件事:端口抄对了吗?看到的是最新日志吗?报错写的是 tcp 还是 udp?UDP 或 DNS 监听错误不能用这条 TCP 查询直接下结论。
如果关键词是权限拒绝或地址无效,也不要不停结束进程。检查是否手动填写了旧 Wi-Fi 地址、是否存在客户端服务异常;保留报错,先尝试恢复自己最近修改的设置。需要时保存工作后重启电脑,再只启动一套客户端做对照。
仍失败就把客户端版本、系统版本、报错地址端口和脱敏日志提交给项目维护者或管理员。别为此清空全部配置、永久关闭防火墙,或者安装陌生的“端口修复工具”。
这种故障要换机场吗?
**只要本机还在报端口绑定失败,先把本地入口修好,再判断机场。**购买新订阅并不会自动释放电脑上已经使用的端口。
端口正常、浏览器和客户端的入口一致之后,若多个节点依然不能连接,再检查套餐状态、订阅是否更新、其他设备能否使用。只看到一排 Timeout 的话,也可以继续看 节点超时排查文章,不要把两个层面的故障混在一起。
准备主力和备用机场时,可以把它们导入同一个支持多配置的客户端,再按需要切换,没必要为了每个机场都同时开一套软件。本站固定推荐的 99吧 主打便宜大碗、不限设备,适合入门和多设备使用,¥8 / 66G 起,详见 99吧深度测评;FlyBit 主打全节点 1 倍率、用多少扣多少、晚高峰稳定,¥15 / 128G 起,详见 FlyBit测速评测。其他选择思路可以看 机场推荐与选购说明。
最后记住这个顺序
看完整报错,分清端口用途,查清监听进程,做最小调整,再同步软件的代理入口。
修复后确认日志不再出现对应监听失败,新连接能按预期经过客户端,再退出重开验证一次。这样才算解决了端口问题,而不是只让弹窗暂时消失。