代理设置里要填两个数。地址那一格多半是 127.0.0.1,指的就是你手上这台电脑;端口那一格是代理客户端在本机开的口,Clash Verge Rev 出厂是 7897,FlClash 是 7890,v2rayN 是 10808。这三个数是 2026-10-30 我翻各家源码核的,同一天我查了自己的 Windows 11,系统代理那两格写的正是 127.0.0.1 和 7897。同是 Clash 一系,FlClash 和 Clash Verge Rev 的出厂端口差了 7 个号,端口一格要照你自己装的那个客户端填。
127 开头的一整段,1986 年就划给了本机
127.0.0.1 叫回环地址,发到这里的数据不出网卡,在本机里转一圈就回来。浏览器把请求交给 127.0.0.1 的 7897,就是交给同一台电脑上在 7897 监听的程序,我这台电脑上是 verge-mihomo,它再按规则把请求送去订阅里的节点。香港、日本那些节点的地址由客户端自己去连,系统代理这一格只负责把请求交到本机。
这个号的来历,我顺着几份老的号码分配表翻了一遍。1985 年 12 月的 RFC 960 里,127 开头那一行只写着 Reserved,也就是保留 [1]。1986 年 11 月的 RFC 990 还是 Reynolds 和 Postel 编的,这一版才写明 127 这个 A 类网络号分给回环功能,发往 127 的数据报要在主机内部绕回来,不该出现在任何网络上 [2]。1989 年 10 月的 RFC 1122 把这一条定成主机必须遵守的要求,原文用的是 MUST NOT [3]。
照这个规定,127 后面三段写什么都算本机。我在自己电脑上 ping 127.8.8.8,一样有回应,耗时不到 1 毫秒。填代理却不能这么随便,客户端只在 127.0.0.1 这一个地址上开了口。我用 curl 把地址和端口轮流换掉去连,结果是下面这样。
| 填的地址与端口 | 结果 | 我的解释 |
|---|---|---|
| 127.0.0.1 加 7897 | 连得上 | Clash Verge Rev 的混合端口就开在这里 |
| 127.0.0.2 加 7897 | 连不上 | 同在回环段里,客户端没在这个地址上开口 |
::1 加 7897 |
连不上 | 客户端只开了 IPv4 |
| 本机 192.168 开头的局域网地址加 7897 | 连不上 | 允许局域网连接没打开 |
| 127.0.0.1 加 7890 | 连不上 | 7890 上没有程序在听 |
::1 是 IPv6 的回环地址,RFC 4291 写的用途是本机给自己发包 [4],我这台的客户端只在 IPv4 上开了口,所以落空。局域网地址那一行牵扯到一个开关,Clash 系的客户端叫它 allow-lan,mihomo 的文档写着它决定别的设备能不能经过代理端口上网 [5]。mihomo 的源码写得更直白,这个开关关着时,监听地址一律拼成 127.0.0.1 加端口,打开以后才按 bind-address 走,写成星号就是所有网卡 [6]。Clash Verge Rev 出厂把它关着 [7],口就只开在 127.0.0.1 上。
表里连不上的四行,curl 报的是同一句 7 号错误,都等了 2 秒上下才放弃,差别只在 via 后面那个地址。地址填错还是端口填错,光看报错分不出来。
终端 · Git Bash 里的 curl 8.19.0(局域网地址后两段已遮挡)
#地址换成本机局域网地址,端口不动
curl -x http://192.168.x.x:7897 http://example.com/
curl: (7) Failed to connect to example.com port 80 via 192.168.x.x after 2041 ms: Could not connect to server
#地址不动,端口换成 7890
curl -x http://127.0.0.1:7890 http://example.com/
curl: (7) Failed to connect to example.com port 80 via 127.0.0.1 after 2043 ms: Could not connect to server地址那一格要是 127 以外的数,指的就是另一台机器。公司或学校发的代理多半是内网里的一台服务器,买来的代理 IP 是服务商那边的入口,端口都由对方定,照着对方给的抄就行。买之前该留意的实名和使用范围,买代理 IP 那页写了。
端口号没人统一,各家出厂填的数不一样
RFC 6335 把端口号切成三段,0 到 1023 叫系统端口,往上到 49151 叫用户端口,这两段由 IANA 分配,剩下的 49152 到 65535 留作动态端口,从来不分配 [8]。代理客户端爱用的号都落在中间那段,我拿到 IANA 2026-10-27 更新的那一版登记表里挨个查了,7888 到 7899 整段未分配,7890 和 7897 都在里面,10808 所在的 10806 到 10808 也空着 [9]。没人替客户端定号。出厂值只能一家一家去源码和文档里找。
| 程序 | 地址 | 出厂端口 | IANA 登记表里这个号 | 出处与我没核到的 |
|---|---|---|---|---|
| mihomo 文档示例 | 文档没写 | HTTP 7890,SOCKS 7891,混合 7892 | 7888 到 7899 未分配 | 代理端口页,2026-07-18 更新 [10],写的是示例,没说是默认值 |
| Clash Verge Rev | 127.0.0.1 | 混合 7897 开着,SOCKS 7898、HTTP 7899 默认关 | 未分配 | dev 分支源码 [7],为什么选 7897 我没查到说明 |
| FlClash | 127.0.0.1 | 混合 7890,SOCKS 和 HTTP 默认是 0,不开口 | 未分配 | main 分支源码 [11],端口为 0 时 mihomo 不监听 [6] |
| v2rayN 现行版 | 127.0.0.1 | 混合 10808,写进系统代理的也是它 | 未分配 | master 分支源码 [12] |
| v2rayN 6.23 | 127.0.0.1 | SOCKS 10808,HTTP 10809 | 10809 登记给 Network Block Device | 2023-04-21 发布的版本 [13] |
| v2rayNG | 127.0.0.1 | SOCKS 10808,用 Xray 内核时 HTTP 也是 10808 | 未分配 | master 分支源码 [14],换别的内核 HTTP 端口加 1 |
| sing-box | 必须自己写 | 没有默认 | 不适用 | 文档把 listen 标为必填 [15] |
| Xray | 不写就是 0.0.0.0 | 没有默认 | 不适用 | 入站代理文档 [16] |
| SOCKS 的惯例 | 不适用 | 1080 | 登记给 SOCKS | RFC 1928 [17] |
| Fiddler | 127.0.0.1 | Classic 8888,Everywhere 8866 | 8888 登记给 NewsEDGE,注着有未授权使用;8866 未分配 | Telerik 文档,2026-10-20 更新 [18] |
| Charles | 127.0.0.1 | 8888 | 同上一行 | Charles 文档 [19] |
| Privoxy | 127.0.0.1 | 8118 | 2002 年 6 月登记给 Privoxy | 4.2.0 版手册 [20] |
| Squid | 装在哪台就是哪台 | 3128 | 登记给 ndl-aas | 配置文档里的建议配置 [21] |
7890 在 Clash 这一系里出现得多,mihomo 文档拿它当 HTTP 端口的示例 [10],FlClash 拿它当混合端口的出厂值 [11]。Clash Verge Rev 没用它,源码里混合、SOCKS、HTTP 三个口排在 7897 到 7899,出厂只开第一个,前面的 7895、7896 留给透明代理,Windows 版里没有这两项 [7]。照着别人的教程填了 7890,装的却是 Clash Verge Rev,浏览器连的就是一个没有程序在听的端口。这种填错会报什么,curl 和 Edge 各等多久,SOCKS5 和 HTTP 那页挨个试过。
v2rayN 新旧版本算端口的办法不一样。2023-04-21 发布的 6.23 版,HTTP 端口按 SOCKS 端口加 1 算,默认 10808 加 1,就是 10809 [13]。现在 master 分支的源码里已经没有单独的 HTTP 端口,给 Xray 和 sing-box 生成的本地入站都写成 mixed 类型,写进 Windows 系统代理的就是 127.0.0.1 加这个 10808 [12],sing-box 文档对 mixed 的说明是 SOCKS4、SOCKS4a、SOCKS5 和 HTTP 都收 [15]。v2rayNG 的源码里,用 Xray 内核时 HTTP 端口直接等于 SOCKS 端口 [14]。照旧版写的教程会让你填 10809,先去 v2rayN 的设置里看一眼本地端口再填。10809 在 IANA 的表里 2010 年就登记给了 Network Block Device,一种通过网络用另一台机器上磁盘的协议 [9],你机器上没跑它,两边就撞不上。
sing-box 和 Xray 干脆不给出厂端口,配置文件写多少就是多少。sing-box 的文档把 listen 标成必填,mixed 入站还能在启动时自动设好系统代理,停下时清掉 [15]。Xray 的 listen 不写时默认 0.0.0.0,所有网卡上的连接都收 [16],手写配置漏了这一行,代理端口就对整个局域网开着。
抓包调试工具也在本机开端口。Fiddler Classic 和 Charles 出厂都是 8888,Fiddler Everywhere 是 8866 [18][19]。系统代理那一格要是写着 127.0.0.1:8888,多半是哪个抓包工具开过。Fiddler Classic 的文档自己提醒,浏览器用了这组设置的,关掉 Fiddler 以后要改回去,不然页面打不开 [22]。碰上这种残留怎么清,看代理报错那页。
表里来历写得最清楚的是 1080。1996 年 3 月发布的 SOCKS 第 5 版规范 RFC 1928 写明,SOCKS 服务按惯例开在 TCP 的 1080 端口 [17],IANA 的登记表里 1080 也归 socks。Privoxy 的 8118 在 2002 年登记过,它的手册把默认监听写成 127.0.0.1:8118,说这适合把它和浏览器装在同一台机器上的家庭用户 [20]。Squid 的 3128 在登记表里属于一个叫 ndl-aas 的服务,Squid 文档的建议配置照用不误 [21]。登记只说明谁先报了名,管不住谁在用。
我这台 Windows 11 上,那两格写着 127.0.0.1 和 7897
Windows 的入口在设置里的网络 & Internet,点代理,手动代理设置那一行,“使用代理服务器”旁边有个设置按钮。弹出的窗口里有两个框,一个叫“代理 IP 地址”,一个叫“端口”[23]。微软这页在端口后面注了“可选”两个字,对本机客户端来说这一格空不得,空着 Windows 就不知道要去找 7897。
这两格存在注册表里,当前用户那一支的 Internet Settings 底下,ProxyEnable 管开关,1 是开,0 是关,ProxyServer 存地址加端口 [24]。这份说明出自微软 Scripting Blog 2005 年的一篇,我这台 Windows 11 上键名照旧。PowerShell 一条命令就能读全,比一层层点设置快。
PowerShell · 读当前用户的系统代理设置
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' |
Select-Object ProxyEnable, ProxyServer, ProxyOverride2026-10-30 我这台读出来是下面三行,ProxyOverride 太长,中间我截掉了一段。
PowerShell 输出(2026-10-30,中间用省略号截短)
ProxyEnable : 0
ProxyServer : 127.0.0.1:7897
ProxyOverride : localhost;127.*;192.168.*;10.*;172.16.*;172.17.*;……;172.31.*;<local>开关是 0,系统代理关着,地址那一格却还留着 127.0.0.1:7897,关掉开关并没有清掉地址。后面那串是例外名单,对应设置页上的例外列表,列在里面的地址不走代理 [23]。172.16 到 172.31 一共 16 段,拼起来正好是 RFC 1918 留给内网的 172.16.0.0/12,10.* 和 192.168.* 是另外两段 [25]。这串和 Clash Verge Rev 源码里给 Windows 写的默认例外只差一项,dev 分支现在的版本在 <local> 前面多了 *.local,我装的 2.4.7 写进去的没有 [7]。
地址那一格写着 7897,还得确认 7897 上真有程序在听。PowerShell 的 Get-NetTCPConnection 能按本地端口和状态筛连接 [26],查到的进程号交给 Get-Process,就换成了程序名。
PowerShell · 查 7897 上是谁在听
Get-NetTCPConnection -LocalPort 7897 -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess
Get-Process -Id (Get-NetTCPConnection -LocalPort 7897 -State Listen).OwningProcess我这台查出来,7897 只开在 127.0.0.1 上,程序名 verge-mihomo,是 Clash Verge Rev 带的 mihomo 内核,安装目录里主程序 clash-verge.exe 的版本号是 2.4.7。习惯 cmd 的用 netstat -ano,它列出所有连接和监听中的端口,最后一列是进程号,微软的文档说拿这个号去任务管理器的进程页就能对上程序 [27]。
反过来的情况也有,客户端自己起不来。Windows 报 10048,意思是这个地址和端口已经被别的套接字占着;报 10013,微软文档列的原因之一是别的程序以独占方式占了这个地址 [28]。端口落进系统的排除段也会绑不上,netsh interface ipv4 show excludedportrange protocol=tcp 能把这些段列出来 [29]。我这台列出三段,5357、27339 和 50000 到 50059,7890 和 7897 都不在里面。
系统代理只是其中一处。Firefox、终端里的 curl 和 git、Windows 后台程序用的 WinHTTP,各有各的代理设置,系统这边写着 127.0.0.1:7897,它们不一定跟着走。我这台的环境变量里一个带 proxy 的都没有,git config --global --get http.proxy 也查不出东西。Firefox、curl 认的环境变量和 WinHTTP 怎么查、怎么清,代理报错那页写过。
Mac 和 Linux 上换成这几条命令
这一节的命令是照文档写的,我没在 Mac 和 Linux 上逐条跑过。Mac 的代理在系统设置里,点网络,再点你正连着的那项服务,进详细信息,里面有一页叫代理。网页代理 (HTTP)、安全网页代理 (HTTPS)、SOCKS 代理各占一行,打开哪一行,就填哪一行的服务器地址和端口号 [30]。命令行看得更全,scutil --proxy 打印当前的代理配置,Apple 开源的 configd 里这条命令的手册页就是这么写的 [31]。同一份代码的头文件列着输出用的键名,HTTPEnable 取 0 或 1 管开关,地址和端口分别放在 HTTPProxy 和 HTTPPort 里,SOCKS 那组把 HTTP 换成 SOCKS [31]。
查端口归谁用 lsof。lsof -nP -iTCP:7897 -sTCP:LISTEN 只列 TCP 里处在 LISTEN 状态的那几行,-n 和 -P 让它别把地址和端口翻成名字 [32],输出第一列就是程序名。7897 换成你客户端里写的端口。
Linux 桌面拿 GNOME 说,设置里的网络有一项网络代理,方式分无、手动、自动三种,选手动以后每种协议各填地址和端口 [33]。命令行用 gsettings 读同一份设置,gsettings get org.gnome.system.proxy mode 回 none、manual 或 auto,地址和端口在 org.gnome.system.proxy.http、org.gnome.system.proxy.socks 这些子项的 host 和 port 里 [34]。GNOME 的配置定义里,HTTP 那组的 port 出厂就是 8080,host 却是空的,HTTPS 和 SOCKS 的 port 出厂是 0 [34]。读到 8080 不代表谁设过代理,先看 mode 是不是 manual。
端口归谁,Linux 上用 ss -ltnp,l 和 t 把范围收到监听中的 TCP 端口,n 让它别去解析服务名,p 把进程一起带出来 [35]。终端里的程序多半认环境变量,env | grep -i proxy 能看出 http_proxy、https_proxy 这一类设没设。
手机上的地址和端口,在 Wi-Fi 详情里
iPhone 的代理跟着每一个 Wi-Fi 走。设置里点无线局域网,点网络名旁边的 i,拉到最下面是 HTTP 代理,配置代理选了手动,才出现服务器和端口两栏。Apple 的说明页里,我只在设置助理那篇见到 Wi-Fi 详情里能设 HTTP 代理这一句 [36],平时进设置改它的那一页,我没找到 Apple 的说明。
Android 在 Wi-Fi 网络的详情里,进高级选项把代理改成手动,填主机名和端口,各家厂商的菜单名不一样,我没逐个核。另有一个全局的 http_proxy,Android 开发文档写着它存的是全局 HTTP 代理的主机名和端口,中间用冒号隔开,API 17 加进来的 [37]。用 adb 连上手机,adb shell settings get global http_proxy 能把它读出来,settings 命令的帮助文本里,读取的写法就是 get 加命名空间加键名 [38]。拿 adb 给手机设过全局代理调试的,换回日常用之前查一下这一项。
装了代理客户端的手机,流量多半由客户端建的 VPN 接走,Wi-Fi 里那一栏可以一直关着。sing-box 的文档说,在安卓和苹果上没有特权时,系统代理要改用 tun 入站里的 platform.http_proxy [15],那里的服务器地址和端口两项都是必填 [39]。
出厂端口那张表,下一次核对定在 2026-11-30。几个客户端的默认值都写在源码里,改了我照着改表。