网络知识科普普通用户专题主文章

代理上网的原理:从客户端到出口节点,一次访问经历了什么

开代理后打开一个网页,背后经过了接管流量、分流判断、域名解析、协议加密、入口与线路、出口访问六个环节。本文按顺序拆开这条链路,讲清 fake-ip、远程解析和“网站看到出口 IP”的原因。

小鱼一句话解释

代理上网的过程是:客户端通过系统代理或 TUN 拿到程序发出的请求,按分流规则决定直连还是交给节点;需要代理的请求连同域名一起,用代理协议加密后发往机场的入口节点,经中转或专线到达出口节点,由出口节点解析域名并访问目标网站。所以目标网站看到的是出口节点的 IP,而速度和稳定性取决于这条链路上最差的一段。

  • 系统代理或 TUN 决定哪些流量能进入客户端,分流规则决定进入后走哪条路
  • 走代理的请求通常把域名交给出口节点解析,fake-ip 是 TUN 模式下保留域名信息的办法
  • 协议层负责认证、加密和伪装,入口、中转与出口决定路径和晚高峰稳定性
  • 目标网站只和出口节点直接通信,所以只能看到出口 IP
  • 排查问题时按“接管、分流、解析、协议、线路、出口”逐段定位
适合
Lv.2 普通用户
阅读
8 分钟
更新
网络知识栏目封面插画:粉彩渐变的天空、云朵、星星与星球
文章目录(10 节)
  1. 先说结论
  2. 六个环节一览
  3. 第一步:流量怎么进入客户端
  4. 第二步:按规则决定直连还是代理
  5. 第三步:域名在哪里解析
  6. 本地解析
  7. 远程解析
  8. fake-ip:在 TUN 模式下把域名“找回来”
  9. 第四步:协议层负责加密与伪装
  10. 第五步:入口、中转与出口
  11. 第六步:为什么目标网站看到的是出口 IP
  12. 用这条链路定位问题
  13. 总结

先说结论

一次代理访问可以拆成六个环节:接管流量 → 分流判断 → 域名解析 → 协议封装 → 入口与线路 → 出口访问。前四个环节发生在你的设备上,由客户端负责;后两个发生在机场的网络里。目标网站只和出口节点直接通信,所以它看到的是出口 IP;而一次访问快不快、稳不稳,取决于这六个环节里最差的那一个。

代理访问路径示意图你的设备上的客户端读取订阅后,把流量加密发往机场的入口节点,经过线路到达海外出口节点,再由出口节点访问目标网站。你的设备客户端 + 订阅入口节点国内中转 / 直连出口节点香港 / 日本 / 美国目标网站看到的是出口 IP加密流量线路质量决定稳定性普通访问“机场”提供的,就是入口节点、线路和出口节点这一段
一次代理访问的路径:客户端在本机完成分流和加密,机场负责入口、线路和出口来源:小鱼网络制图

本文是“代理与网络原理”专题的主文章,按顺序把每个环节讲清楚,并给出各环节的延伸阅读。这里默认你已经导入过订阅、用过客户端;如果机场、节点、订阅这些概念还不熟,可以先看 机场是什么。

六个环节一览

环节 在哪里发生 做了什么 出问题时的典型表现
1. 接管流量 你的设备 系统代理或 TUN 把程序的请求交给客户端 浏览器能用,某些软件不走代理
2. 分流判断 客户端内核 按规则决定直连、代理或拦截 国内网站绕路变慢,或该走代理的网站直连了
3. 域名解析 客户端或出口节点 把域名换成 IP,并决定在哪里换 网站打不开,或连到了离出口很远的服务器
4. 协议封装 客户端到节点之间 认证、加密,并让流量看起来像常见协议 节点全部超时、频繁断流
5. 入口与线路 机场网络 接入入口,经中转或专线跨境 晚高峰延迟升高、丢包
6. 出口访问 出口节点 以出口 IP 访问目标网站 显示的地区不对,部分服务不可用

第一步:流量怎么进入客户端

客户端装好之后并不会自动“接管网络”,必须由操作系统把流量交给它。方式有两种。

系统代理。 客户端在本机开一个代理端口(Clash Verge Rev 默认是 7897),再把操作系统的代理设置指向这个端口。浏览器等遵守系统代理设置的程序,会把请求发到这里。访问 HTTPS 网站时,浏览器发给代理的是一条 CONNECT 请求,RFC 9110 规定它的目标写法就是“主机名:端口”,例如 CONNECT www.example.com:443。也就是说,客户端从一开始拿到的就是域名,浏览器自己不需要先查 DNS。

TUN 模式。 客户端创建一块虚拟网卡并修改路由表,让所有程序的 IP 流量都先经过它,程序不需要任何配合。代价是,交到客户端手里的已经是发往某个 IP 的数据包——程序在连接之前已经自己做过一次 DNS 查询。

这个差别看起来很小,却决定了后面域名解析要怎么处理。两种方式各自覆盖哪些程序、什么时候该开 TUN、开启时要注意什么,见 TUN 模式和系统代理有什么区别。

第二步:按规则决定直连还是代理

流量进入客户端后,内核对每个连接从上到下逐条匹配规则,命中第一条就按它处理。处理结果只有三种:直连(DIRECT)、交给某个代理组、拦截(REJECT)。下面是一个说明结构的例子:

rules:
  - DOMAIN-SUFFIX,example.com,节点选择   # 按域名后缀匹配,不需要解析
  - GEOIP,CN,DIRECT                     # 按目标 IP 的归属地匹配,需要知道 IP
  - MATCH,节点选择                       # 兜底:前面都没命中的走代理

规则可以粗分为两类:

  • 按域名匹配(DOMAIN、DOMAIN-SUFFIX、GEOSITE 等):只看域名,不需要解析;
  • 按 IP 匹配(IP-CIDR、GEOIP 等):需要知道目标 IP。mihomo 文档说明,一个只有域名的请求走到 IP 类规则时,内核会触发一次 DNS 解析来检查是否匹配,在规则末尾加 no-resolve 可以跳过这次解析。

所以规则文件通常把域名规则放在前面:大部分请求在域名阶段就能分完,不必为了分流专门查一次 DNS。规则、全局、直连三种模式怎么切换,自定义规则写在哪里,见 Clash 使用教程。

第三步:域名在哪里解析

这是代理原理里最容易被误解的一段。“把域名换成 IP”这件事,可能发生在你的设备上,也可能发生在出口节点上。

本地解析

直连的请求在本地完成 DNS 查询,再直接连接查到的 IP,这没有问题。但如果走代理的请求也先在本地解析、再把 IP 交给节点,会带来两个麻烦:

  1. 查询记录留在本地网络。 你要访问哪些境外域名,会以 DNS 查询的形式发给本地网络的 DNS 服务器,这就是常说的 DNS 泄露;
  2. CDN 地址可能不合适。 大型网站普遍使用 CDN,会按查询者的位置返回最近的服务器。在本地解析,拿到的是“离你近”的地址,出口节点去连它可能要绕远路,甚至连不通。

远程解析

更合理的做法是把域名本身交给出口节点,由它在当地解析。代理协议普遍支持这样做:以 SOCKS5 为例,RFC 1928 规定请求中的地址类型可以是 IPv4、IPv6 或域名(类型值 X’03’);机场常用的 Shadowsocks、VMess、VLESS、Trojan 等协议同样可以直接携带域名。系统代理模式下,客户端从 CONNECT 请求里拿到的就是域名,天然适合远程解析。

fake-ip:在 TUN 模式下把域名“找回来”

TUN 模式的难点是:程序连接之前已经查过 DNS,客户端收到的只有 IP。为了仍然按域名分流、仍然把域名交给出口,客户端会接管系统发出的 DNS 查询(DNS 劫持),并用 fake-ip 的方式应答:

  1. 程序查询 www.example.com,客户端不真正解析,而是从一个保留网段里分配一个假地址返回,同时在内存中记下“这个假地址对应这个域名”;
  2. 程序向假地址发起连接,数据包经虚拟网卡进入客户端;
  3. 客户端查表把假地址还原成域名,再按域名匹配规则:需要代理的,把域名交给节点远程解析;需要直连的,再在本地做真实解析。

这个思路并不新。2001 年发布的 RFC 3089 就描述过类似的“DNS 解析委托”:用一段“从不用于真实通信的保留地址”临时代表域名,连接时再换回域名交给网关。mihomo 文档示例配置里的 fake-ip 网段是 198.18.0.1/16,它落在 IANA 登记为网络基准测试专用的 198.18.0.0/15 范围内,正常的互联网通信不会用到。

方式 谁来解析 优点 需要注意
本地解析 本机或本地 DNS 服务器 直连网站解析快,结果贴近本地网络 用在代理请求上会留下查询记录,还可能拿到不合适的 CDN 地址
远程解析 出口节点 结果与出口位置匹配,查询不经过本地 DNS 结果取决于出口节点使用的 DNS
fake-ip 客户端先回假地址,真正的解析推迟到决定路线之后 TUN 模式下仍能按域名分流,应答几乎没有等待 退出客户端后系统里可能残留 198.18 开头的缓存;少数依赖真实 IP 的程序要放进 fake-ip 过滤名单

mihomo 还提供 redir-host 模式(文档注明它是默认值)。这种模式向程序返回真实 IP,客户端再借助 DNS 查询时留下的映射记录,以及“域名嗅探”(从 HTTP、TLS、QUIC 流量中读出域名)补回域名信息。机场提供的订阅一般已经写好了 DNS 配置,普通用户不需要自己改。

节点自己的域名怎么解析

这里有一个“先有鸡还是先有蛋”的问题:节点地址本身往往是域名,而连上节点之前没法走代理去解析它。mihomo 为此单独提供了 proxy-server-nameserver,文档说明它仅用于解析代理节点的域名。所以节点域名一般不经过代理、直接从本机解析,这也是关闭代理后查询节点地址能看出入口位置的原因,具体方法见 机场线路怎么判断。

第四步:协议层负责加密与伪装

分流和解析之后,需要代理的请求要按节点使用的代理协议“打包”,再发往节点。协议在这一步做三件事:

  • 认证:证明你是这个节点的合法用户,凭据(密码、UUID 等)就写在订阅里;
  • 加密:让途中的网络设备看不到你要访问的域名和传输的内容;
  • 伪装:让这条连接的外观接近某种常见流量,例如普通的 HTTPS 网站访问或 HTTP/3。

各协议的取舍不同:Shadowsocks 追求简单、开销小;Trojan 和 VLESS + REALITY 让连接看起来像标准 TLS;Hysteria2 建立在 QUIC(UDP)之上。协议主要影响“能不能稳定连上”和额外开销,一般不决定带宽上限。五种主流协议的完整对比见 代理协议怎么选。

还要分清加密保护的范围:协议的加密覆盖的是你的设备到出口节点这一段。出口节点解开协议后,再以普通方式访问目标网站。如果目标是 HTTPS 网站,网页内容在浏览器和网站之间另有一层 TLS,节点能知道你连接的域名,看不到网页内容。

第五步:入口、中转与出口

机场的一个“节点”,通常不是一台服务器,而是一条路径:

  • 入口:客户端实际连接的地址。直连节点的入口就是海外服务器本身;中转和专线节点的入口在国内;
  • 中转与线路:入口到出口之间的那一段。普通中转经过公共国际出口,IPLC、IEPL 专线则走私有的跨境链路;
  • 出口(落地):最终替你访问目标网站的服务器,决定你“看起来在哪里”。

很多中转节点的入口只做转发:把收到的数据原样交给出口,协议层的加密和解密仍在你的客户端与出口服务器之间完成。也正因为如此,晚高峰最容易拥堵的跨境段,质量完全取决于机场买的是什么线路。专线为什么更稳、为什么更贵,见 IEPL 是什么。

第六步:为什么目标网站看到的是出口 IP

TCP 连接是两台机器之间的直接连接。在代理链路里,和目标网站建立连接的是出口节点,你的设备与入口、中转之间的连接,目标网站完全看不到。由此有几个直接结果:

  • 网站按出口 IP 判断访问者所在的国家或地区,页面语言、内容版权范围、服务是否开放都以此为准;
  • 一个出口 IP 往往由许多用户共用,网站看到的是“很多人从同一个地址访问”;
  • 出口 IP 属于哪类网络(数据中心或家庭宽带),也是一些网站判断访问来源的参考。

有一个例外容易被忽略:被规则判定为直连的请求,以及根本没有进入客户端的程序,用的仍然是你本地的 IP。所以“开了代理”不等于所有流量都从出口出去了。

AI 服务对访问地区有明确的支持范围,选择出口时的一般原则见 AI 稳定机场怎么选。无论使用哪个出口,都应遵守对应服务的使用条款。

用这条链路定位问题

理解了六个环节,遇到问题时就可以先判断出在哪一段,再对症处理:

现象 最可能的环节 先这样验证
浏览器正常,命令行或游戏不走代理 接管 改用 TUN,或给程序单独设置代理
某个网站该走代理却直连了(或反过来) 分流 切到全局模式对比;在连接日志里查看命中的规则
节点延迟正常,个别网站打不开 解析 检查 DNS 配置;关闭 TUN 后清理系统 DNS 缓存
所有节点同时超时 协议或入口 先确认本地网络正常,再看客户端内核是否支持该协议、机场是否发布了公告
白天正常,晚上变慢且丢包 线路 晚高峰对比同一出口的专线节点与直连节点
能访问,但网站显示的地区不对 出口 打开显示本机公网 IP 的网页,核对出口所在地

“延迟测试很低、速度却上不去”是另一类常见困惑,它涉及延迟、带宽和丢包三者的关系,单独见 机场延迟低为什么速度还是慢。

总结

代理上网是一条六段的链路:系统代理或 TUN 把流量交给客户端,规则决定去向,域名尽量交给出口节点解析,协议负责加密和伪装,机场的入口、线路和出口负责把请求送到目标网站。目标网站只看得到出口 IP;体验好不好,取决于链路上最弱的一环。遇到问题时按环节逐段排查,比反复换节点更有效。

常见问题

开了代理,网站还能看到我的真实 IP 吗?

走代理的请求,网站只能看到出口节点的 IP。但被规则判定为直连的请求,以及没有进入客户端的程序(例如不遵守系统代理设置的软件),用的仍是你本地的 IP。

机场能看到我访问的网页内容吗?

访问 HTTPS 网站时,网页内容在浏览器和网站之间另有一层 TLS 加密,出口节点看不到内容,但能知道你连接的域名和流量大小。访问未加密的 HTTP 网站时,内容对节点是可见的。

fake-ip 会影响正常上网吗?

大多数情况下不会。常见的副作用是退出客户端后,系统 DNS 缓存里还残留 198.18 开头的假地址,导致个别网站暂时打不开,清理一次系统 DNS 缓存即可恢复。

代理和 VPN 的原理一样吗?

都是把流量交给另一台服务器转发。区别在于代理客户端通常带分流规则,可以只让部分流量走节点;传统 VPN 多数直接接管整台设备的全部流量。客户端开启 TUN 后,接管方式和 VPN 很接近。

参考资料

  1. RFC 1928:SOCKS Protocol Version 5(地址类型可为域名)
  2. RFC 3089:基于 SOCKS 的网关机制(DNS 解析委托与 fake IP)
  3. RFC 9110:HTTP Semantics(CONNECT 方法)
  4. mihomo 文档:DNS 配置
  5. mihomo 文档:路由规则

内容编辑与测试

小鱼网络编辑部负责站内文章的选题、测试与审校。我们长期跟踪机场服务、代理客户端、网络线路与 AI 服务的可用性变化,所有教程都会注明适用版本与核对时间,并在内容变化时更新记录。

本文遵循 小鱼网络评测方法与商业披露。发现错误或信息过期?欢迎 告诉我们。

下一步建议

  1. 还没想好用哪家?先看 2026 年稳定机场选购方法,再用 对比表 按自己的需求筛选。
  2. 已经有机场但用得不顺?从 客户端知识 和 网络知识 里找对应的排查方法。

✦ 小鱼严选机场

严选入选理由见各自的“为什么选择”文章;本站尚未完成实测的机场会在资料页注明。部分服务商链接为推广链接(rel="sponsored"),我们可能因此获得佣金,但不影响评测结论。详见评测方法与商业披露。