网络排障

装了两个代理软件,为什么「显示已连接却上不了网」?

界面绿灯、进程在跑、节点也选好了,但网页就是打不开——这是多客户端共存时最难查的一种故障。原因往往不在节点,而在本地端口被另一个软件先抢走了。这篇把端口、系统代理、TUN 三条通路拆开讲清楚,并给出能自己敲的验证命令。

关键词:两个代理软件冲突、显示已连接上不了网、7890 端口被占用、代理客户端共存、系统代理与 TUN 区别

最后更新: · 内容维护:易联 Residential IP Solution

先给结论

多客户端冲突集中在三条互不相干的通路上,搞清楚是哪一条,问题就解决一半:

「显示已连接但上不了网」这个具体症状,绝大多数是第一条

为什么端口冲突这么难发现?

Clash 生态的客户端——Clash Verge、ClashX、mihomo-party、FlClash 以及各种基于它们的分支——默认混合端口几乎都是 7890。这是历史沿用下来的惯例,好处是配置通用,代价就是:你机器上只要同时装了两个,谁先启动谁绑到 7890,后启动那个的内核其实没监听成功。

要命的地方在于,后启动那个客户端的界面通常照样显示「已连接」——因为 UI 反映的是「配置加载了、节点选好了」,不是「端口真的绑上了」。于是你看到的是:软件一切正常、进程也在、节点延迟还能测出来,但浏览器打不开任何网站。

这一点我们自己踩过:易联桌面端早期沿用了同一个默认端口,用户机上先跑了别的 Clash 客户端时就会复现这个症状。后来我们把默认混合端口改成不常用的值,并对老配置做了自动迁移(只迁移仍是默认值的,用户自己改过的一律不动),这类「装了两个就瞎」的报障才明显减少。

三条通路对照表

通路作用范围冲突表现解决方向
本地端口(如 7890)显式走该端口的程序显示已连接但完全上不了网错开端口,不必杀进程
系统代理遵守系统设置的程序后开的软件「抢」走设置让其中一个改走 TUN
TUN / 虚拟网卡路由层,几乎全部流量两个都开 TUN 才会抢只让一个开 TUN

关键认知:这三条是不同层的机制,不是同一件事的三种叫法。所以「A 占了系统代理」并不妨碍「B 走 TUN 正常工作」——它们可以并存,这也是多客户端共存的基础。

怎么自测?三步定位

第 1 步:查端口被谁占了

macOS / Linux:

lsof -nP -iTCP:7890 -sTCP:LISTEN

Windows:

netstat -ano | findstr 7890

看列出来的进程名。如果不是你现在想用的那个客户端,端口就是被抢了。解决办法是把其中一个客户端的混合端口改掉(改成 27890 之类不常用的值),而不是去结束对方进程。

第 2 步:确认出口是不是你以为的那个

端口通了不代表走对了线路。打开 易联 AI IP 检测,或直接:

curl -s https://ipinfo.io/json

看返回的 org / 地区是不是你选的那条线路。如果显示的是另一个软件的出口,说明流量实际走了别人那条通路。

第 3 步:分清是端口问题还是分流问题

如果大部分网站正常、只有某一两个服务打不开或报 403,那多半不是端口冲突,而是分流规则把那个域名匹配到了不合适的出口。快速判据:切到全局模式复测。全局正常、规则模式异常,基本可以锁定是规则问题;两种模式都不行,才回头查端口和线路。

两个客户端能不能共存?正确做法

不要卸载,也不要结束别人的进程。很多人装多个客户端各有用途,而且某些组网/内网工具可能是你访问公司资源的唯一通道,强行关掉可能造成更大麻烦。

稳妥的分工是:

常见误区

「界面显示已连接就代表端口绑上了」——不是。UI 通常只反映配置状态,端口绑定失败也可能照样显示绿灯。

「换个节点试试」——端口冲突和节点无关,换多少个节点都一样打不开。

「装两个就一定冲突,必须卸载一个」——错开端口 + 只让一个走 TUN,多数情况可以共存。

「某个服务 403 就是被墙了」——先切全局复测。规则模式下的单点异常,更常见的是分流规则匹配错了出口。

下一步建议

照上面三步走一遍,基本能分清是端口被抢走错线路,还是分流规则。如果确认出口本身没问题、只是想让 AI 工具和跨境业务更稳,再考虑线路本身的画像干不干净。

相关阅读