01
一分钟能做什么,不能做什么
自测的目标不是把链路调到最优,而是先定位问题出在哪一层。协议层、链路层与本机层,处理方式完全不同。

能定位的三件事
当前用的哪种协议、掉速发生在哪一层、换档之后是否恢复。这三件事决定了要不要联系支持、联系谁。
做不到的两件事
无法提升物理带宽上限,也无法绕过目标站点的出口策略。前者由宽带决定,后者由目标方决定。
- 整个过程不需要安装额外工具,客户端诊断页已包含全部读数。
- 进阶判据需要命令行,Windows 用 PowerShell、macOS 与 Linux 用终端,命令在对应小节给出。
- 所有读数建议记录两次,间隔至少 10 分钟,单次读数不可信。
02
四个判据:判断当前用的是哪种协议
判据按可靠性排序:面板最直观,端口表最准确,抓包特征最硬,握手耗时最省事。任选两个交叉验证即可。
| 判据 | 需要什么 | 耗时 | 可靠性 | 局限 |
|---|---|---|---|---|
| 客户端面板 | 客户端诊断页 | 2 秒 | 中 | 面板显示的是配置值,可能未生效 |
| 端口与连接表 | 系统命令 | 15 秒 | 高 | 需要看得懂端口 |
| 抓包特征 | 抓包工具 | 40 秒 | 最高 | 需要权限 |
| 握手耗时 | 诊断页复测 | 6 秒 | 中高 | 依赖本文的数值区间 |
大多数人只需要前两条。第三条适合排查「面板说用的是 A,实际跑的是 B」这类异常;第四条适合在没有工具的环境里快速判断。

03
判据一:客户端面板
最快的一条,两秒出结果。面板第一行会同时显示协议、端口与传输层,三个值要一起看。

面板显示 WireGuard
协议与端口都不会出现在代理系统设置里,只显示在客户端。若系统代理里也出现了相同端口,说明有第三方工具在接管。
面板显示 OpenVPN
注意看传输层是 UDP 还是 TCP。TCP 模式通常是自动降级的结果,说明 UDP 探测失败过一次。
面板显示 Trojan 或 Hysteria2
Trojan 一定走 443/TCP;Hysteria2 一定走 UDP,端口可能不是 443。三者对不上时以端口为准。
04
判据二:端口与连接表
这一条几乎不会骗人:连接表里对端端口与传输层是内核记录的事实,不是界面文案。
- Windows:在 PowerShell 执行 netstat -ano | findstr ESTABLISHED。看对端 443 与高位 UDP 端口。
- macOS 与 Linux:执行 ss -tunp 或 netstat -an | grep ESTABLISHED。关注 UDP 行。
- 对端端口 443 且为 TCP:Trojan(也可能是 OpenVPN TCP 模式,看是否有 TLS 记录)。
- 对端为 UDP 高位端口:Hysteria2 或 WireGuard,再按是否有 TLS 记录区分。
- 对端 51820/UDP 或自定义高位 UDP:WireGuard。对端 UDP 443 且带 QUIC 特征:Hysteria2。
| 对端端口 | 传输层 | 协议 | 附加特征 |
|---|---|---|---|
| 443 | TCP | Trojan | TLS 1.3 记录,SNI 与目标一致 |
| 1194 或自定义 | UDP | OpenVPN | 首包 14 字节左右的控制报文 |
| 1194 或 443 | TCP | OpenVPN TCP | 带长度前缀的帧结构 |
| 51820 或自定义 | UDP | WireGuard | 首字节 1 至 4 的固定长度报文 |
| 443 或自定义 | UDP | Hysteria2 | QUIC 的 Initial 包,长度 1,200 字节左右 |
05
判据三:抓包特征
抓包是最硬的判据,四种协议的首包差异明显。下面给出每种协议一眼能认的特征。
WireGuard 的四个首字节
握手发起包首字节为 1,响应为 2,cookie 为 3,数据为 4;报文长度固定为 148 与 92 字节。看到这种长度与首字节组合,基本可以直接判定。
QUIC 的 Initial 包
Hysteria2 的首包是 QUIC Initial,长度填充到 1,200 字节,头部含版本号与连接 ID。TLS 1.3 握手数据在加密载荷里。
OpenVPN 的控制报文
首包带 16 位操作码与 64 位会话 ID,长度在 14 至 60 字节之间,后续才是 TLS 握手。这是它与 Trojan 最明显的区别。
Trojan 的纯 TLS 外表
先完整跑一次 TLS 1.3 握手,之后的应用数据看起来与 HTTPS 完全一致。区别只在服务端返回的内容,客户端侧无法凭外表区分。
抓包命令分三平台。Windows 用 pktmon 或 Wireshark,macOS 用 sudo tcpdump -i en0 -n udp or tcp port 443。Linux 用 sudo tcpdump -i any -n。抓 10 秒足够,体积约 2 MB。
06
判据四:握手耗时反推
没有工具时,用握手耗时倒推协议。本文的数值区间在三个出口上都验证过,误差 ±6 毫秒。
| 首包耗时 | 最可能协议 | 次可能 | 判断依据 |
|---|---|---|---|
| 36 至 42 ms | WireGuard | 无 | 1 个往返,最快 |
| 60 至 70 ms | Hysteria2 | 无 | 1 个往返加用户态开销 |
| 90 至 102 ms | OpenVPN UDP | Trojan | 2 个往返 |
| 108 至 118 ms | Trojan | OpenVPN TCP | TCP 加 TLS 各 1 个往返 |
| 150 至 165 ms | OpenVPN TCP | 无 | 2 个往返加 TCP 建连 |
- 用诊断页的「三条链路复测」就能拿到首包耗时,不需要抓包。
- 同一出口重复三次取中位,单次读数受调度影响可能偏差 10 毫秒以上。
- 不同出口的区间要按往返时延等比换算,东京乘 1.08,洛杉矶乘 3.8。
07
掉速先看三项:MTU、丢包、UDP 限速
三项按顺序查,因为它们的排查成本递增、误判概率递减。前两项在客户端内就能看到,第三项需要一次对照实验。
第一项 MTU 与分片
表现为「延迟正常但大文件慢、网页正常」。原因是大包被分片后重传率上升。诊断页会显示当前 MTU,低于 1,380 时标黄。
第二项 丢包
表现为「时快时慢、视频花屏」。看诊断页最近 30 秒的丢包比例,超过 2% 就该切 Hysteria2,不要先去换节点。
第三项 UDP 限速
表现为「能连上但速度只有带宽的 8%」。用一个对照实验确认:切到 Trojan 后速度回升,即为 UDP 被限速。
| 项目 | 现场读数 | 判读 | 动作 |
|---|---|---|---|
| MTU | 1,420 | 正常 | 无需处理 |
| MTU | 1,280 至 1,380 | 被下调 | 检查隧道层封装,必要时固定 1,380 |
| 丢包 | 0% 至 0.5% | 正常 | 无需处理 |
| 丢包 | 2% 以上 | 跨境拥塞 | 切 Hysteria2 |
| UDP 限速 | 切 Trojan 后恢复 | 确认被限速 | 长期固定 Trojan |
| UDP 限速 | 切 Trojan 后无变化 | 不是限速 | 回到第一项复查 |
08
第一项细查:MTU 与分片
MTU 问题的典型特征是「小包正常、大包异常」。ping 一个大包即可验证,不需要专业工具。
- Windows 执行 ping -f -l 1472 目标地址。Linux 与 macOS 执行 ping -M do -s 1472 目标地址。
- 若提示需要分片或超时,把 1472 依次减到 1442、1412、1382,直到能通。
- 能通的值再加上 28 字节的开销即为实际 MTU,例如 1412 + 28 = 1440。
- 把实际 MTU 减去隧道封装开销(WireGuard 60 至 80 字节)即为客户端应设的值。
- 设置后复测一次大文件传输,看重传率是否下降。

实测对照:MTU 从 1,420 降到 1,280 时,大文件传输的有效吞吐下降 11%。重传率从 0.3% 升到 1.9%。这个代价在下载 10 GB 文件时相当于多花 7 分钟。
09
第二项细查:丢包从哪来
丢包分三段:本地无线、运营商出口、跨境段。三段的排查方式不同,误判最容易发生在把本地问题当成跨境问题。
| 位置 | 识别方式 | 典型比例 | 处理动作 |
|---|---|---|---|
| 本地无线 | 有线连接后复测 | 3% 至 8% | 换 5GHz 或走网线 |
| 运营商出口 | 同城不同运营商对比 | 0.5% 至 2% | 换线路或错峰 |
| 跨境段 | 晚高峰明显高于白天 | 1% 至 3% | 切 Hysteria2 或换节点 |
有线对照是关键一步
很多用户把 Wi-Fi 的 5% 丢包归因到跨境线路。插上网线复测,若丢包归零,问题就在本地,换什么协议都没用。
晚高峰的规律性
跨境段丢包在 20:00 至 23:00 明显上升,这是拥塞而非故障。此时 Hysteria2 的抗丢包能力比换节点更有效。
10
第三项细查:UDP 限速的确认实验
这是唯一需要「切换一次」的排查。判断标准很简单:切到 Trojan 后速度是否回升到带宽的 50% 以上。
- 在当前协议下跑一次 60 秒单流测速,记录读数。
- 切到 Trojan(443/TCP),等 10 秒,再跑一次同样的测速。
- 若读数提升到原来的 3 倍以上,判定为 UDP 限速,长期固定 Trojan。
- 若无变化,说明不是 UDP 限速,回到 MTU 与丢包两项复查。
- 若 Trojan 反而更慢,说明 TCP 侧也有策略限制,考虑用 Hysteria2 的混淆模式。

11
结果判读表:把读数变成动作
把前面所有读数汇总成一张表,左边的组合对应右边的动作。表中覆盖 89% 的现场情况。
| 协议 | 丢包 | 吞吐占带宽 | 结论 | 动作 |
|---|---|---|---|---|
| WireGuard | 低于 0.5% | 90% 以上 | 健康 | 无需处理 |
| WireGuard | 2% 以上 | 40% 以下 | 跨境拥塞 | 切 Hysteria2 |
| Hysteria2 | 2% 以上 | 70% 以上 | 最优状态 | 保持 |
| Trojan | 低于 1% | 60% 左右 | 端口受限但正常 | 保持 |
| OpenVPN | 任意 | 20% 以下 | 兜底档 | 尝试切回其他档 |
| 任意 | 任意 | 8% 左右 | UDP 限速或 MTU 异常 | 按第 08、10 节复查 |
判读时先看两列的配合关系。丢包 2% 以上而吞吐仍在带宽的 70% 以上,说明链路尚可,只是协议不够抗丢包。丢包低于 0.5% 而吞吐只有 8%,则与协议无关,去查 MTU 与 UDP 限速。这两种情况的采样条件相同,动作完全不同。
- 实测对照:同一条香港线路,WireGuard 在 3% 丢包下吞吐 318 Mbps,切到 Hysteria2 后 588 Mbps。采样条件与本文表 7 一致。
- 若两次复测的读数差异超过 15%,先怀疑测量环境,例如后台更新或无线干扰,而不是先改客户端设置。
12
复测与对比:让读数可比
单次读数没有意义,能对比的读数才有。复测的关键是固定变量:同一节点、同一时段、同一测速目标。
- 同一节点:换节点后读数不可比,因为落地与回程都变了。
- 同一时段:跨越晚高峰的两次读数不可比,跨境丢包有明确的时间规律。
- 同一目标:测速目标服务器不同会引入额外变量,建议固定一个纯 IP 目标。
- 同一时长:60 秒单流是本文的统一口径,10 秒的读数受慢启动影响偏乐观。
- 记录三次取中位:单次读数受系统调度影响,三次中位更稳。
- 把每次复测的协议与节点写进文件名,例如 1031-TYO03-hy2.csv,两周后仍能一眼对上。
- 复测前后各拍一张诊断页截图,图片比文字更容易看出哪一列发生了变化,也便于发给支持人员。
- 单次测速时长
- 60 秒单流
- 复测间隔
- 至少 10 分钟
- 读数取值
- 三次中位
- 记录方式
- CSV 导出
- 对比基准
- 同一节点同一时段

14
命令清单:三个平台直接复制
下表只列必要的命令,全部为系统自带工具,不需要安装。执行前确认已连接到目标节点。
| 用途 | Windows(PowerShell) | macOS / Linux | 看什么 |
|---|---|---|---|
| 看连接表 | netstat -ano | findstr ESTABLISHED | ss -tunp | grep ESTAB | 对端端口与传输层 |
| 测 MTU | ping -f -l 1472 目标地址 | ping -M do -s 1472 目标地址 | 是否提示需要分片 |
| 抓包 443 | pktmon start --capture --comp 0 | sudo tcpdump -n port 443 | 首包长度与首字节 |
| 查路由 | route print | ip route show | 出口是否指向虚拟网卡 |
| 查 DNS | nslookup 目标地址 | dig +short 目标地址 | 是否被客户端接管 |
| 看 CPU | Get-Counter "\Processor(*)\% Processor Time" | top -b -n 1 | head -12 | 单核是否接近打满 |
- 抓包需要管理员或 root 权限,普通权限下会提示无法打开设备,这不是工具故障。
- 测 MTU 时目标地址应选一个可达的境外 IP,用本地网关测出来的值偏大。
- 查 DNS 时若返回的是客户端内置的解析地址,说明接管正常,不必再改系统设置。
- 看 CPU 时关注单核而不是总占用:OpenVPN 的瓶颈永远是单核,总占用 25% 也可能已经打满一个核。
命令执行完把输出复制到诊断日志的备注里,后续对比时能直接看到当时的原始状态,比回忆「当时好像挺慢」可靠得多。
15
不建议做的四件事
这些做法看起来像在排查,实际上在制造新的变量,让问题更难定位。
不要同时改多个设置
一次只改一个变量,否则读数变化无法归因。这条比任何工具都重要。
不要用瞬时读数下结论
刚连上时读数受握手与慢启动影响,通常比稳定值低 30% 至 50%。
不要混用多个加速工具
系统代理、浏览器插件与客户端同时启用时,流量可能被两次封装,MTU 与丢包都会异常。
不要忽略本地设备
网卡驱动、无线干扰与后台更新都会影响读数,抓包前先确认本地环境干净。
还有一个容易忽略的变量是时间本身:同一台机器在不同日期的手握耗时可能相差 10 毫秒以上。服务端版本、内核与拥塞算法都会变。因此本文给出的都是区间而不是单点值,判断时看是否落在区间内,不要追求精确复现某一个数字。
自测完成之后,如果结论是「协议不匹配网络」,去四协议对照表找合适的档位;如果是「选路没选对」,看选路与线路里的阈值说明。