简要说明
系统时间不准确可能导致我们提供的多种协议无法正常连接,原因有两个。轻微的时间偏差通常不会有影响,只有当偏差超过下述容差范围时才会出现问题。时区设置并不重要,关键在于您的时钟在 UTC 标准下是否准确。
原因一:协议本身带有时间戳
- VMess 会在认证信息中包含 UTC 时间戳,用于让服务器拒绝重放请求。如果您的时钟与服务器相差超过约 120 秒,服务器会判定该请求无效。
- Shadowsocks 2022 同样在请求头中携带时间戳用于防重放,容差约为 30 秒,比 VMess 更为严格。
原因二:TLS 证书有效期(影响大多数其他协议)
基于 TLS 的协议——包括 Hysteria2(运行于 QUIC + TLS)、AnyTLS、Trojan 以及基于 TLS 的 VLESS——通常会依据设备时钟校验服务器证书及其有效期。如果已启用证书校验,且时钟偏差过大导致证书显示为尚未生效或已过期,握手会在任何流量传输之前直接失败。若配置采用了其他校验策略,则不受此限制。
这也是为什么即使某些协议本身不含时间戳,"校正时间"仍然能解决连接问题。
常见症状
- 客户端显示配置成功,但没有任何流量通过。
- 连接立即失败,或所有节点均显示不可用。
- 客户端日志中出现证书、握手或 "invalid user" 相关错误。
解决方法
- Windows:设置 → 时间和语言 → 日期和时间 → 开启自动设置时间。(自动设置时区虽然方便,但并不能修正时钟偏差——真正重要的是 UTC 时间是否准确。)如需强制同步,请以管理员身份打开命令提示符并运行
w32tm /resync。 - macOS:系统设置 → 通用 → 日期与时间 → 开启自动设定时间与日期。
- Android:设置 → 系统 → 日期和时间 → 开启自动设置日期和时间。
- iOS:设置 → 通用 → 日期与时间 → 开启自动设置。
校正时间后,请重启客户端并重新连接。