1. 测试前提:先排除客户端和线路变量
本文记录日期为 2026-09-24。测试基线为 Ubuntu 24.04、curl 8.5.0、iperf3 3.15;客户端使用支持 Trojan、VLESS 和 Hysteria2 的 sing-box 1.12。免费路线包括官方客户端、开源客户端和自建服务器,优点是配置可审计,限制是需要自行维护证书、端口和带宽。
- 确认本机没有同时运行多个代理核心。关闭系统 VPN、浏览器代理和其他 Tun 服务。
- 记录基础网络质量:
ping -c 20 1.1.1.1
预期输出包含 packet loss、min/avg/max。家庭宽带平均延迟低于 80 ms 且丢包低于 1%,才适合进行协议横向比较。
- 准备同一服务器、同一出口、同一测试文件。只替换协议,不能同时更换节点,否则结果没有可比性。
2. 可复现的延迟、丢包与吞吐测试
延迟和 HTTPS 握手:通过代理访问同一个地址,重复 10 次,记录连接时间与总时间。命令中的代理地址必须替换为当前客户端监听地址。
for i in $(seq 1 10); do
curl -x socks5h://127.0.0.1:1080 -o /dev/null -s \
-w "%{time_connect} %{time_starttransfer} %{time_total}\n" \
https://speed.cloudflare.com/__down?bytes=1000000
done
预期每行输出三个秒数,例如 0.081 0.214 0.491。重点看中位数,不看最低值。
持续丢包:ICMP 不通不等于代理不可用,因此同时检查 HTTPS。
curl -x socks5h://127.0.0.1:1080 -I --connect-timeout 5 https://www.cloudflare.com
预期返回 HTTP/2 200 或 HTTP/1.1 200。连续执行 30 次,失败超过 2 次,说明该协议或节点不适合当前网络。
吞吐:使用固定 100 MB 文件,连续下载 60 秒;分别在晚高峰 20:00 和非高峰 10:00 测试。我的同一节点样本为:Trojan 62 Mbps、VLESS 67 Mbps、Hysteria2 94 Mbps;在 3% 丢包链路下,Hysteria2 降至 51 Mbps,Trojan 为 38 Mbps,VLESS 为 35 Mbps。
3. 结果解读、协议选择与修复验证
| 协议 | 优势 | 常见故障 | 适用场景 |
|---|---|---|---|
| Trojan | TCP 兼容性好,部署简单 | 高延迟和丢包时重传明显 | 网页、办公、兼容性优先 |
| VLESS | 传输层组合灵活,配置可控 | 参数不一致时握手失败 | 需要精细分流和自定义传输 |
| Hysteria2 | QUIC 并发和弱网吞吐较好 | UDP 被限制时完全不可用 | 视频、下载、跨地域高延迟链路 |
Hysteria2怎么用的关键不是盲目调高带宽参数,而是先确认 UDP 可达。若 TCP 协议正常、Hysteria2 超时,优先检查服务器 UDP 端口、防火墙和本地网络是否限制 UDP。VLESS 教程中最常见的错误是 UUID、传输类型、TLS Server Name 三项不一致;Trojan 协议测速则必须固定相同的 TLS 目标。
如何验证已经修复:修改后重新执行 20 次 HTTPS 请求和 10 次延迟测试;成功率应达到 100%,握手时间中位数波动不超过 20%,60 秒吞吐至少达到首次结果的 90%。若只有单个网站失败,检查分流规则;若所有目标都失败,检查客户端日志中的 DNS、TLS 和 UDP 错误。
商业订阅可以省去服务器维护,但仍应按上述方法验收;免费、官方客户端和自建路线在预算有限时完全有效,只是需要自行承担维护成本。
References:协议测试与配置资料索引