日志里出现 listen tcp 127.0.0.1:7897: address already in use,或者系统代理开关打开就自动弹回——都是同一件事:Clash 想用的端口被别的程序先占了。三步定位,两种解法。
第一步:找出占用者
Windows 按 Win+R 输入 cmd 回车,执行:
netstat -ano | findstr 7897
输出最后一列是进程 PID(比如 14232),再查它是谁:
tasklist /FI "PID eq 14232"
macOS / Linux 一条命令直接看名字:
lsof -i :7897
第二步:决定谁让路
情况 A:占用者是别的代理软件
最常见。Clash for Windows、v2rayN、Shadowsocks 等默认端口相近,双开必撞。彻底退出那个软件(注意托盘里可能还挂着),再重启 Clash Verge。长期共存没有意义——一台机器留一个代理客户端就够了,从 CFW 过来的看迁移教程。
情况 B:占用者是残留的 verge-mihomo 进程
上次退出没退干净,旧内核还抓着端口。任务管理器(Ctrl+Shift+Esc)搜 verge-mihomo,结束进程后重启软件。命令行党直接:
taskkill /IM verge-mihomo.exe /F
情况 C:占用者是你不认识的正经软件
别结束它,给 Clash 换端口更稳妥——看第三步。
第三步(可选):给 Clash Verge 换端口
「设置」页面找到「端口设置」,把混合端口从 7897 改成一个冷门值,比如 17890,保存后内核自动重启。改完注意两处联动:
- 系统代理由 Clash Verge 自动管理,会跟着新端口走,无需手动改;
- 但手动配过代理的地方要同步更新——浏览器插件、终端环境变量、局域网里指向这台电脑的设备。
预防复发
- 卸载不再使用的旧代理软件,别让它们开机自启抢端口;
- 迅雷、某些下载器和开发工具(如本地调试服务器)会随机监听高位端口,偶发撞上 7897 的话,固定给 Clash 一个不常见端口一劳永逸;
- 如果端口冲突伴随内核反复重启,问题可能不止端口,接着看内核启动排查。