Clash Verge 设置里有一堆端口:混合端口、HTTP 端口、SOCKS 端口、重定向端口、外部控制端口。大部分人一辈子不用改,但一旦遇到端口冲突或者要配命令行工具,就得知道它们各自是干什么的。
五个端口分别是什么
混合端口(Mixed Port)
这是你 99% 情况下要用的那个。
它的特殊之处在于能自动识别协议:客户端发来 HTTP 请求它就当 HTTP 代理处理,发来 SOCKS5 握手它就当 SOCKS5 处理。所以填地址的时候,不管对方要 HTTP 还是 SOCKS,填同一个端口就行。
HTTP 端口 / SOCKS 端口
历史遗留。在混合端口出现之前需要分开配置。现在保留它们主要是为了兼容某些只认固定端口的老软件。
如果不需要,建议关掉(设为 0 或留空)——少开一个端口少一份暴露面。
重定向端口(Redir Port / TProxy Port)
用于 Linux 和 macOS 上的透明代理(配合 iptables/nftables 规则把流量重定向过来)。桌面用户基本用不上,做软路由才需要。
外部控制端口(External Controller)
默认 9090。这是 Mihomo 的 RESTful API,Clash Verge 界面本身就是通过它和内核通信的。
第三方面板(metacubexd、yacd)也连这个端口。
各类工具该填哪个端口
假设你的混合端口是 7897:
| 工具 | 配置方式 |
|---|---|
| Windows 系统代理 | 127.0.0.1 : 7897 |
| Chrome / Edge | 跟随系统代理,不用单独配 |
| Firefox | 设置 → 网络设置 → 手动,HTTP 和 SOCKS 都填 7897 |
| Git | git config --global http.proxy http://127.0.0.1:7897 |
| npm | npm config set proxy http://127.0.0.1:7897 |
| pip | pip install --proxy http://127.0.0.1:7897 包名 |
| curl | curl -x http://127.0.0.1:7897 https://example.com |
| SSH | 在 ~/.ssh/config 里加 ProxyCommand(见下) |
| Docker | 配置 daemon proxy,或直接开 TUN |
SSH 走代理
# ~/.ssh/config
Host github.com
HostName github.com
User git
# Windows(需要装 ncat 或用 connect.exe)
ProxyCommand ncat --proxy 127.0.0.1:7897 --proxy-type http %h %p
# macOS / Linux
# ProxyCommand nc -X connect -x 127.0.0.1:7897 %h %p环境变量一次搞定
大部分命令行工具都认这几个环境变量:
# macOS / Linux
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897
export no_proxy="localhost,127.0.0.1,::1,*.local,192.168.0.0/16"# Windows PowerShell
$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:NO_PROXY = "localhost,127.0.0.1,::1,*.local"端口冲突怎么办
启动时报「端口被占用」「address already in use」,说明有别的程序抢先占了。
找出是谁占的
Windows:
netstat -ano | findstr :7897
# 拿到最后一列的 PID,再查是什么程序
tasklist | findstr <PID>macOS / Linux:
lsof -i :7897
# 或
ss -tlnp | grep 7897两条解决路
改端口的话,选一个 1024 到 65535 之间、没被占用的数字。常用备选:7898、7899、10808、10809。
一个常见误解:改端口不会提速
有人以为换个端口能绕过限速。不会的——端口只是本机上的一个入口编号,跟你的网络速度、节点质量没有任何关系。
真正影响速度的是节点线路、带宽、和你到节点的网络路径。
关于「允许局域网连接」和端口的关系
打开「允许局域网连接」后,端口的监听地址会从 127.0.0.1 变成 0.0.0.0:
验证方法:
netstat -an | findstr 7897看到 0.0.0.0:7897 说明局域网可访问,看到 127.0.0.1:7897 说明只有本机可用。
端口相关的排查小技巧
测试代理端口是否真的在工作:
curl -x http://127.0.0.1:7897 -I https://www.google.com返回 HTTP 状态码说明代理通了。报 Connection refused 说明端口没开或者填错了。
测试外部控制 API:
curl http://127.0.0.1:9090/version返回 JSON 里带版本号说明内核在正常运行。
这两条命令在排查「到底是客户端问题还是节点问题」时特别有用:如果 API 正常但代理请求失败,问题在节点或规则;如果 API 都连不上,说明内核根本没起来。
小结
- 日常只用混合端口,HTTP 和 SOCKS 单独端口可以关掉
- 命令行工具用环境变量,记得配
no_proxy - 外部控制端口别暴露公网,要暴露就设 secret
- 端口冲突时先查占用,改端口是最后手段