追云加速 发布页

代理速度慢怎么排查:DNS、MTU、丢包与线路定位步骤

更新于 2026-10-26 · zhuiyunjiasu.shop

简答:先判断是首开慢、持续下载慢、周期性卡顿还是仅晚高峰变慢:首开慢先查DNS与连接计时,持续慢查丢包和节点吞吐,部分资源失败查MTU,固定时段变慢再对比线路拥塞。每次只改一个变量,并用同一设备、目标和时段复测。

定义:“代理速度慢”不是单一指标,可能分别指DNS解析慢、TCP或TLS建连慢、首字节响应慢、持续吞吐低、延迟高、抖动大或丢包。

先做这三步:把慢点分出来

本文按2026-10-26核对的公开技术资料整理,本站与任何客户端、线路或服务品牌无关联。先不要同时修改DNS、MTU和节点,否则很难知道是哪一步产生变化。

症状到动作速查表
现象优先检查下一步
打开网页前等待很久DNS解析、TCP连接、TLS握手用nslookup和curl -w分段计时
网页能打开但下载持续很慢丢包、节点负载、出口吞吐保持同一目标,比较多个节点和时段
部分网站、图片或接口失败MTU、IPv4/IPv6、分流规则先做禁止分片测试,再逐项关闭相关功能
速度周期性归零或视频反复缓冲无线干扰、链路丢包、路径抖动使用pathping、mtr或连续ping
只有固定时段明显变慢出口或运营商链路拥塞至少在两个时段按相同条件复测

第一轮基线应包括:关闭代理测试一次本地网络;开启代理后使用同一设备、同一目标网址、同一协议模式和相近时间复测。不要把高延迟直接等同于低带宽,也不要仅凭一次测速下结论。

第一层:检查DNS解析是否拖慢首开

DNS(域名系统)负责把域名转换为IP地址。DNS异常通常表现为首次打开等待、偶尔解析失败或不同网络返回的地址差异明显。Windows的nslookup可指定查询类型和DNS服务器,微软文档也建议用它检查名称解析与超时情况,见nslookup命令文档和DNS客户端排查文档。

Windows请分别查询A记录和AAAA记录,不要把两种记录合并成一条依赖环境的写法:

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

将example.com替换为实际目标。比较默认DNS与指定DNS的响应是否超时、返回地址是否明显不同。这里的重点不是哪个DNS一定更快,而是确认“解析本身”是否比其他阶段异常。

代理客户端还要检查四个变量:系统DNS、客户端独立DNS、远端解析模式、Fake-IP或分流规则。最小化验证方法是每次只关闭一个功能后重新连接,再重复同一目标测试。若关闭独立DNS后首开恢复,说明冲突可能在客户端解析链路;若只有AAAA路径异常,可临时分别测试IPv4和IPv6,但不要直接把IPv6永久关闭作为结论。

Windows清理本地DNS缓存可使用:

ipconfig /flushdns

清缓存后必须重新连接客户端并复测,否则旧缓存可能让前后结果不可比。

第二层:用curl区分解析、连接、TLS和首包

网页“慢”需要拆成多个时间段。curl的--write-out支持输出time_namelookup、time_connect、time_appconnect、time_starttransfer和time_total等指标,定义可参考curl官方手册。

curl -o /dev/null -sS -w "dns=%{time_namelookup}
connect=%{time_connect}
tls=%{time_appconnect}
starttransfer=%{time_starttransfer}
total=%{time_total}
speed=%{speed_download}
" https://example.com/

Windows命令提示符可将/dev/null改为NUL;PowerShell通常可以使用$null或直接保留输出文件。time_namelookup主要观察解析完成时间,time_connect包含到TCP连接完成的累计时间,time_appconnect反映TLS等安全连接完成时间,time_starttransfer是收到首字节前的累计时间,time_total是完整操作耗时。

判读时看差值而不是只看绝对值:DNS时间明显增加,优先查解析;连接阶段增加,优先查路径、端口或节点;TLS完成后到首包仍很久,可能是目标站、代理出口或应用响应;首包正常但总时间很长,则更接近持续吞吐、丢包或资源本身较大的问题。不同目标站、协议和代理模式不能直接横向比较。

第三层:检测MTU和分片问题

MTU(最大传输单元)是单个链路可承载的IP数据包大小。路径中存在更小的PMTU(路径最大传输单元)时,可能出现网页部分资源失败、连接建立后卡住、上传异常或周期性重传。MTU检测只说明某条路径在某种协议下的表现,不能据此推断所有目标都应使用同一个数值。

Windows的ping /f会设置IPv4禁止分片标志,/l指定数据区大小,微软文档明确将其用于排查PMTU问题,见Windows ping文档。可以从较大的数据区开始,逐步降低,再小幅增加确认最大可通过值:

ping example.com -f -l 1472
ping example.com -f -l 1460
ping example.com -f -l 1400

IPv4下,测试数据区与IP、ICMP头部不是同一个数值,常见换算是数据区加28字节,但应把它当作测试换算,不要直接当成适用于所有隧道或IPv6的固定设置。修改前记录网卡或虚拟适配器原值,修改后重连客户端,再按同一目标复测。

macOS先确认实际接口名称,再查看当前配置:

networksetup -listallhardwareports
ifconfig
ping -D -s 1400 -c 10 example.com

macOS不同版本和网络接口对禁止分片参数的表现可能不同;若ping帮助信息不接受-D,不要强行套用Windows参数,应先运行man ping查看本机选项。Apple文档说明可用networksetup -listallhardwareports识别硬件端口与接口名,见Apple网络抓包文档。查看后可用ifconfig en0核对接口信息,接口名以本机输出为准。

Linux可使用:

ping -M do -s 1400 -c 10 example.com
tracepath example.com

Linux的ping -M do用于选择PMTU发现策略,tracepath也可沿路径探测MTU,参数说明见Linux ping手册和tracepath手册。每次只调整一个数值,测试后清理缓存、重连并记录结果。若只有某个客户端或某条隧道失败,优先检查该虚拟适配器,而不是修改整台设备所有网卡。

第四层:用丢包、抖动和路径判断线路

线路判断不能只看一次Ping。需要同时观察平均延迟、最大延迟、抖动和丢包,并区分本地接入、运营商中间链路、代理出口和目标站分别发生了什么。

Windows可先执行:

ping /n 30 example.com
pathping /n /q 50 example.com

pathping会识别路径并向中间路由器发送多次探测,再计算延迟和丢失比例;官方说明见pathping命令文档。Linux可使用:

ping -c 30 example.com
traceroute -n example.com
mtr -rwzc 50 example.com

macOS可使用:

ping -c 30 example.com
traceroute -n example.com

这些命令可能受到目标站限速、ICMP过滤或中间路由器低优先级处理影响,因此“某一中间跳不回应”不等于该跳一定丢包。更有参考价值的是:从某一跳开始,后续多跳以及最终目标都持续出现相近丢包;若只有中间跳显示丢包、后续和最终目标正常,通常不能据此认定线路故障。

本文不设一个对所有网络都适用的硬阈值。可采用同一设备、同一目标、同一节点连续记录30次或50次,重点比较变化:平均延迟明显上升、最大延迟远高于平均值、丢包在最终目标持续出现,或多轮测试都出现周期性超时,才值得进一步更换接入网络、节点或时段复测。若仅单站点异常,应先考虑目标站或CDN,而不是立即判断整条线路有问题。

第五层:节点对比必须保持变量一致

比较节点时,至少固定五项:同一设备、同一目标资源、同一客户端与协议模式、同一DNS和解析模式、同一测试时段。否则一个节点走IPv4、另一个节点走IPv6,或一个使用远端解析、另一个使用本地解析,结果不能说明线路本身更快。

  1. 先关闭代理测一次,记录网页首开和curl时间。
  2. 选择同地区的两个节点,保持客户端配置不变,各测试三轮。
  3. 再选择不同地区节点,仍使用同一目标和同一协议。
  4. 在非高峰与高峰各复测一次,记录平均延迟、最大延迟、丢包、首包和总耗时。
  5. 每轮只改一个变量,完成后断开并重新连接,避免复用连接影响结果。

可复制下面的记录模板:

日期:2026-10-26
设备/网络:
客户端与模式:
目标网址:
节点:
DNS模式:
时间段:
直连:DNS / connect / TLS / 首包 / 总耗时
代理:DNS / connect / TLS / 首包 / 总耗时
Ping平均/最大/丢包:
MTU测试值:
结论与下一步:

如果多个目标、多个时段都只有某个节点异常,可以把节点或出口列为重点排查对象;如果所有节点都在同一时段变慢,更应检查本地接入、运营商路径或目标站拥塞。无独立数据时,不对某条线路的稳定性或速度作保证。

改完设置后的复测与回滚

DNS或MTU调整后,按固定顺序复测:先恢复网络连接,再重启代理客户端或重新加载配置;Windows清理DNS缓存,macOS和Linux按各自系统的缓存服务处理;随后重复同一个DNS查询、curl计时、Ping和目标网页测试。

如果问题扩大、更多网站无法访问或连接完全失败,应立即恢复原值。MTU修改必须保留原接口名、原MTU和修改时间;DNS修改必须记录原DNS地址。不要在没有记录原值的情况下连续调整多个网卡或多个客户端。

遵守所在地法律与服务条款。多网络、多设备和多时段对照后仅目标服务异常时,可考虑已公开主体信息的服务;本页不根据未核实的速度、价格或可用性作结论。

常见问题

只换DNS能解决代理速度慢吗?

不一定。DNS主要影响域名解析和首开等待;如果curl显示解析很快,但连接、首包或下载阶段慢,继续更换DNS通常不能解决核心问题。

Ping延迟低,为什么下载仍然很慢?

Ping主要反映ICMP往返时间,不能代表TCP、TLS、HTTP首包或持续吞吐。应结合curl的首包、总耗时和下载速度,以及丢包和抖动一起判断。

MTU越小是不是越稳定?

不是。过小会增加分包数量和协议开销,也可能降低吞吐。应先检测具体路径,记录原值,逐步测试,并在修改后用多个目标复测。

为什么中间节点显示丢包,但网页还能正常打开?

部分路由器会降低或限制ICMP响应优先级。只有当丢包从某一跳开始持续影响后续多跳和最终目标时,才更值得怀疑链路本身。

Windows的A和AAAA记录可以放在同一条nslookup命令里吗?

Windows文档支持组合查询写法,但为便于通用复制和分别比较IPv4、IPv6,本文采用两条命令分别查询A与AAAA记录。

macOS没有Windows的ping -f -l写法怎么办?

不要直接照搬参数。macOS先用networksetup确认接口,再通过man ping查看本机支持的分片控制参数;可用ifconfig查看接口信息,按本机帮助完成测试。

如何判断是节点慢还是目标网站慢?

使用同一设备和客户端,比较多个节点、多个目标和至少两个时段。若只有单个目标异常,先考虑目标站或CDN;若多个目标都随某节点异常,节点因素更值得排查。

相关阅读

参考资料

  1. Microsoft Learn:nslookup命令
  2. curl官方手册:write-out与时间指标
  3. Microsoft Learn:ping命令与PMTU测试
  4. Apple Developer:识别macOS网络接口
  5. Linux手册:ping与PMTU发现参数
  6. Linux手册:tracepath路径与MTU探测
  7. Microsoft Learn:pathping延迟与丢包统计