代理端口被占用怎么办?端口冲突排查与修改
客户端提示端口被占用、address already in use,或换了代理软件后新客户端不生效?本文讲清代理端口的作用,并给出定位占用与修改端口的方法。
直接回答:bind: address already in use 就是有别的进程占着代理端口。先查是谁占的(一条命令),结束它;确实要两个软件并存,就把客户端的本地端口改掉,并把系统代理里的端口同步改成一样——改一半不改另一半,表现为「端口不报错了但浏览器没网」。
一条命令找出占用者
Clash Verge Rev 新版默认混合端口是 7897(老版本和多数 Clash 客户端是 7890),v2rayN 默认 10808。以 7897 为例:
Windows(PowerShell 或命令提示符):
netstat -ano | findstr :7897
最后一列是进程 PID,再用 tasklist | findstr <PID> 看它是谁。macOS / Linux:
lsof -nP -iTCP:7897 -sTCP:LISTEN
直接显示进程名。查出来无非三种:另一个代理客户端、上次没退干净的 verge-mihomo / xray 内核进程、或碰巧用了这个端口的别的软件。
结束占用还是改端口
| 情况 | 做法 |
|---|---|
| 残留的内核进程 | 任务管理器 / 活动监视器结束它,或直接重启电脑 |
| 开着两个代理客户端 | 只留一个;确需并存,给其中一个改端口 |
| 别的软件长期占用 | 改客户端端口 |
改端口的位置:Clash Verge Rev「设置 → 混合代理端口」;v2rayN「设置 → 参数设置 → 本地监听端口」。改完必须同步两处:客户端里的「系统代理」开关会自动跟随新端口,但如果你在系统网络设置或某个软件里手填过 127.0.0.1:7897,要手动改成新端口。
改完端口浏览器没网了
就是上一节说的没同步。检查系统代理指向的端口:Windows「设置 → 网络和 Internet → 代理」,macOS「系统设置 → 网络 → 当前网络 → 详细信息 → 代理」。端口对不上就改成客户端当前端口,或者关掉系统代理再让客户端重新打开一次。仍不通见机场显示正常但无法上网。
TUN 服务模式的残留
用过 TUN 的 Windows 电脑,Clash Verge Rev 的服务模式会以系统服务方式常驻,卸载不彻底时旧服务还占着端口。到「服务」里找 clash_verge_service,停止并禁用,或在新客户端里重新安装服务覆盖它。内核因端口冲突反复退出的情况见客户端内核无法启动。
客户端配置见 Clash Verge Rev 教程与 v2rayN 教程;同类问题见网络问题排查 · 客户端与系统。
常见问题
为什么会端口冲突?
常见于同时开了两个代理软件、或上一个客户端进程没退干净仍占着 7890/7897 端口,新客户端就绑不上。
改端口会影响使用吗?
会——系统代理和分应用代理里填的端口要跟着改成一致,否则流量找不到代理入口。
关掉重开就好了,为什么?
说明是残留进程占用。彻底结束旧进程或重启电脑,端口即释放。