点阵加速 - 专业网络加速服务

代理速度慢怎么排查是节点还是 DNS 问题?

更新于 2026-10-27 · nodetele.buzz

简答:先固定同一设备、同一目标网站和同一时间,分别做直连、当前节点、其他节点三组测试;再用 nslookup 或 dig 看解析耗时,用 curl 的分段计时区分 DNS、TCP、TLS、首字节和下载阶段。只有更换 DNS 后解析阶段明显改善,才更像 DNS 问题;如果 DNS 很快但换节点后连接、首包或下载明显改善,优先排查节点、出口线路或拥堵。

定义:这里的“代理速度慢”不是单一指标,而是要拆成 DNS 解析、TCP 连接、TLS 握手、首字节响应、完整下载和丢包抖动等阶段分别判断。

先试这一步:用三组对照判断问题范围

不要一开始同时更换节点、DNS、客户端模式和浏览器,否则无法知道是哪一项产生了变化。先记录同一设备、同一网络、同一目标地址和同一时间段的结果,再只改变一个变量。

最小排查矩阵
测试组保持不变只改变的变量重点观察初步判断
直连基线设备、网络、目标地址、时间关闭代理解析、连接、首包、总耗时确认本地网络和目标站的基础表现
当前节点其他条件不变开启当前节点连接、首包、下载、丢包判断代理链路是否增加主要耗时
其他节点设备、网络、目标地址、时间只更换节点同一命令重复测试若差异明显,优先排查单节点或出口线路
其他 DNS节点和目标地址不变只更换解析器或 DNS 模式解析耗时、解析结果、首次访问若只改善解析阶段,才支持 DNS 是主要原因

建议每组至少重复 3 次,并记录时间、节点地区或名称、客户端模式、IPv4/IPv6 情况和目标地址。不要把一次偶然的快慢直接当成结论。

如果所有网站都慢,先检查本地网络、设备负载、后台下载和代理模式;如果只有一个网站慢,不能仅凭现象断定节点故障,还要考虑目标站响应或该域名解析结果变化。

第二步:先测 DNS,区分本地解析与代理端解析

DNS 问题常见表现是:第一次打开域名明显慢、域名访问慢而已知 IP 访问较快、换解析器后解析阶段缩短,或者某个域名间歇性解析失败。但这些现象只能作为线索,仍应通过命令确认。

Windows:用 nslookup 对比 DNS 服务器

在 Windows 命令提示符中执行。下面的域名仅作占位,请替换成你有权访问且能够稳定重复测试的目标域名。

nslookup example.com

这条命令使用系统当前配置的 DNS 服务器。再指定另一个 DNS 服务器进行对比:

nslookup example.com 1.1.1.1

微软文档说明,nslookup 可以直接指定 DNS 服务器,也可以通过 -type=A 或 -type=AAAA 分别查询 IPv4 和 IPv6 记录。可继续执行:

nslookup -type=A example.com
nslookup -type=AAAA example.com

如果默认 DNS 多次超时,而指定服务器能够稳定返回结果,说明本地配置的 DNS 链路值得继续检查;如果两者都很快,但代理访问仍慢,问题更可能在节点、目标站或连接阶段。nslookup 的用途和错误含义可参考微软 nslookup 文档。

macOS 或 Linux:用 dig 记录查询时间

dig example.com
 dig @1.1.1.1 example.com
 dig A example.com
 dig AAAA example.com

重点比较输出中的查询耗时、返回的 A/AAAA 地址以及是否出现超时。不要因为两个 DNS 返回的 IP 不同就直接认定其中一个有问题;CDN、区域和缓存都可能导致返回结果变化。需要结合后面的 curl 分段计时和节点对照。

检查客户端究竟使用哪种 DNS

代理客户端可能存在系统 DNS、客户端内置 DNS、远程解析、Fake-IP 或 Redir-Host 等不同处理方式,不能把系统命令的结果直接等同于代理流量实际使用的解析结果。以 Mihomo 配置为例,官方文档将 enhanced-mode 列为 fake-ip 或 redir-host,并提供 IPv6 开关等 DNS 配置项,具体行为取决于当前配置和客户端实现,可查看Mihomo DNS 配置文档。

在客户端中搜索“DNS”“enhanced-mode”“fake-ip”“redir-host”“IPv6”“nameserver”“proxy-server-nameserver”等关键词,记录当前值。若启用了 TUN,还要确认系统 DNS 请求是否被客户端接管;否则你测试到的可能只是系统解析,而不是代理端解析。

第三步:用 curl 把“慢”拆成 DNS、连接、首包和下载

浏览器只告诉你页面加载慢,无法直接说明慢在哪一段。curl 的 -w 参数可以输出多个时间字段,包括 DNS 查询、TCP 连接、TLS 握手、首字节和总耗时。curl 官方文档对这些字段有明确说明,可参考curl 命令手册。

直连测试

在 Windows PowerShell、macOS Terminal 或 Linux Shell 中执行:

curl -o /dev/null -sS -w "code=%{response_code}\nnamelookup=%{time_namelookup}\nconnect=%{time_connect}\nappconnect=%{time_appconnect}\nstarttransfer=%{time_starttransfer}\ntotal=%{time_total}\nspeed=%{speed_download}\n" https://example.com/

Windows PowerShell 如果不方便使用 /dev/null,可以改为:

curl.exe -o NUL -sS -w "code=%{response_code}`nnamelookup=%{time_namelookup}`nconnect=%{time_connect}`nappconnect=%{time_appconnect}`nstarttransfer=%{time_starttransfer}`ntotal=%{time_total}`nspeed=%{speed_download}`n" https://example.com/

通过本地代理端口测试

将 127.0.0.1:7890 替换为你自己的客户端 HTTP 代理端口;不要把订阅链接、Token、Cookie 或账号密码写进命令和文章。

curl -x http://127.0.0.1:7890 -o /dev/null -sS -w "code=%{response_code}\nnamelookup=%{time_namelookup}\nconnect=%{time_connect}\nappconnect=%{time_appconnect}\nstarttransfer=%{time_starttransfer}\ntotal=%{time_total}\nspeed=%{speed_download}\n" https://example.com/

如果客户端只提供 SOCKS5 端口,可使用:

curl --socks5-hostname 127.0.0.1:7891 -o /dev/null -sS -w "code=%{response_code}\nnamelookup=%{time_namelookup}\nconnect=%{time_connect}\nappconnect=%{time_appconnect}\nstarttransfer=%{time_starttransfer}\ntotal=%{time_total}\nspeed=%{speed_download}\n" https://example.com/

--socks5-hostname 会让域名通过 SOCKS5 代理解析;如果改用普通的 --socks5,解析路径不同,因此不要混用两种结果来做直接比较。

如何读结果

  • namelookup 高:解析阶段耗时明显,优先对比系统 DNS、客户端 DNS、远程解析和 IPv6;但若代理模式改变了解析位置,命令输出仍需结合客户端日志判断。
  • connect 高:TCP 建连慢,可能与节点距离、链路绕行、丢包或节点拥堵有关。
  • appconnect 高:HTTPS/TLS 握手阶段耗时增加,可能与代理链路、协议协商、丢包或目标站响应有关。
  • starttransfer 减去 appconnect 或 pretransfer 后仍很高:请求发出后到首字节等待较久,不能简单归咎于 DNS。
  • total 高但前面各阶段正常:完整下载慢,重点查看节点带宽、拥堵、目标站限速和本地后台流量。

curl 官方字段是从请求开始累计的时间,不是每一段的独立耗时。例如要估算某一阶段,应使用后一个累计值减去前一个累计值,不能把 time_starttransfer 直接当成纯服务器处理时间。

第四步:只换节点,判断是单节点、出口还是本地网络

完成 DNS 对照后,保持 DNS、客户端模式、目标地址和测试时间不变,只更换节点。至少比较当前节点与另外两个不同地区或不同线路的节点,并重复相同的 curl 命令。

节点问题的判断信号
现象更可能的方向下一步
只有一个节点连接和首包明显慢单节点负载、出口线路或节点侧异常保留 DNS 不变,换同地区其他节点复测
同一地区节点都慢,其他地区正常地区出口、路由或目标站区域响应对比不同地区并记录 IPv4/IPv6 和时间段
所有节点都慢,直连也慢本地网络、Wi-Fi、运营商链路或设备负载关闭后台同步,改用有线或另一网络复测
白天正常、特定时段变慢高峰拥堵或目标站时段性响应变化至少在两个时间段重复测试,避免一次性结论
curl 很快但浏览器慢浏览器扩展、缓存、并发请求或规则匹配无痕窗口测试,并检查客户端规则命中日志

延迟、带宽和丢包要分开看。可以使用系统自带命令观察基础连通性:

ping example.com
tracert example.com

macOS 或 Linux 可使用:

ping -c 10 example.com
traceroute example.com

这些命令只能帮助观察基础路径和丢包线索,不能代替真实代理下载测试。若代理使用的是远程出口,直连的 ping 路径也不一定等于代理流量路径,因此应把它作为辅助证据。

第五步:检查 IPv6、DNS 泄漏和客户端规则

如果 A 记录访问正常、AAAA 记录访问异常,或者启用 IPv6 后才出现连接超时,可能是 IPv6 路径、节点支持或本地网络配置不完整。可以分别测试:

curl -4 -o /dev/null -sS -w "total=%{time_total}\n" https://example.com/
curl -6 -o /dev/null -sS -w "total=%{time_total}\n" https://example.com/

如果 -6 失败而 -4 正常,不代表 DNS 一定有问题;它可能只是 IPv6 路径不可用。此时可在客户端 DNS 设置中临时关闭 IPv6 解析作为验证,记录变化,并在确认网络具备稳定 IPv6 后再恢复。

DNS 泄漏检查应关注“实际 DNS 请求从哪里发出”,而不是只看配置文件里写了哪个服务器。检查客户端日志、系统 DNS 设置和 TUN 接管状态;如果启用了 Fake-IP,还要确认日志中的域名请求、Fake-IP 映射和最终规则命中是否一致。修改前先导出配置,测试失败时恢复原配置,再重新载入。

规则模式也会影响结论:同一个域名可能在规则模式下直连,在全局模式下经过代理。测试时记录模式,并查看日志确认目标请求确实命中了预期的代理或直连规则。

一张可填写的排查记录表

建议把以下字段复制到笔记中,每次只改变一个变量。记录 3 次以上,取中位数或至少标注最大、最小值。

代理速度排查记录
时间模式节点DNS/解析模式IPv4/IPv6解析耗时连接耗时首字节总耗时结果
填写日期和时刻直连/规则/全局节点名称或地区系统/客户端/远程4/6填写秒数填写秒数填写秒数填写秒数正常/超时/慢

最终结论最好写成条件句,例如:“在同一设备和同一时间,两个节点的 DNS 查询都低于直连测试,但节点 A 的 TCP 连接和首字节明显高于节点 B,因此更偏向节点或出口线路问题。”不要写成没有测试依据的绝对结论。

第三方使用指南说明

本文是第三方使用指南,不代表任何客户端或网络服务的官方页面。客户端菜单、字段名称和 DNS 行为可能随版本、系统权限和配置变化;涉及具体服务状态、价格、线路或可用性的信息,本文未作推断,请以对应服务的官方资料为准。

常见问题

代理速度慢,换 DNS 还是换节点?

先用 nslookup 或 dig 测 DNS,再用 curl 查看分段时间。如果 DNS 查询耗时高且更换解析器后明显改善,优先处理 DNS;如果 DNS 很快但 TCP、TLS、首字节或下载阶段随节点变化明显,优先排查节点或出口线路。

为什么 nslookup 很快,浏览器打开网页还是慢?

nslookup 通常测试的是系统配置的 DNS,而浏览器或代理客户端可能使用自己的 DNS、远程解析、Fake-IP 或其他模式。还要检查 TCP 连接、TLS、首字节、规则命中、IPv6 和浏览器扩展,不能只用 DNS 结果解释整个页面加载时间。

域名访问慢,但直接访问 IP 很快,能确定是 DNS 问题吗?

不能直接确定。域名访问还包含 TLS 主机名、目标站路由、CDN 调度和证书校验等环节。应对比 nslookup/dig 的解析耗时、curl 的 namelookup 和连接阶段,并确认 IP 访问使用了正确的 Host 和 HTTPS 条件。

更换节点后速度变快,是否说明原节点一定故障?

只能说明在这次测试条件下,两个节点的表现存在差异,可能与节点负载、出口地区、路由、时段或目标站区域响应有关。建议在同一时间重复多次,并比较不同目标站,避免把一次测试写成永久性结论。

开启 TUN 后速度变慢,应该先检查什么?

先确认 TUN 是否接管了系统流量和 DNS,再检查规则模式、Fake-IP 或 Redir-Host、IPv6、日志中的规则命中以及是否出现多层代理。修改前备份配置,逐项恢复或关闭单个功能进行对照测试。

相关阅读

参考资料

  1. curl 官方命令手册:-w 时间字段与代理参数(curl.se)
  2. Microsoft Learn:nslookup 命令
  3. Microsoft Learn:DNS 客户端排查
  4. Mihomo 官方文档:DNS 配置与 enhanced-mode