直接答案
系统时间不准会让代理连接直接失败,原因有两个:一是 VMess 等协议在认证时会校验时间,客户端与服务器的 UTC 时间误差一般需要在 90 秒以内,超出就会被服务器拒绝;二是 TLS 加密依赖证书有效期校验,时间偏差大时有效证书也会被判为无效。处理方法很简单:在设备上打开“自动设置时间”和“自动设置时区”,确认时间与标准时间一致后,重新连接即可。
为什么时间会影响代理
代理协议需要防止“重放攻击”,也就是别人截获一段合法的连接数据后重复发送。一种常用做法是在认证信息中加入时间戳,服务器只接受时间接近当前时刻的请求。
- VMess:认证依赖系统时间,客户端和服务器的 UTC 时间误差需要在 90 秒以内,与时区无关。
- 其他带时间校验的协议:例如 Shadowsocks 2022 等较新的协议,也会在握手时校验时间戳,允许的误差通常更小。
- TLS 证书:使用 TLS 的协议(例如 Trojan、以及外层套用 TLS 的 VLESS、VMess)都要检查证书是否在有效期内,这同样依赖设备时间。
不同协议对时间的敏感程度不同,所以常见的情况是:时间偏差后,一部分节点完全连不上,另一部分节点仍能使用。
时区设置为什么也会影响
协议校验的是 UTC 时间,也就是换算到统一时区后的时间。如果你手动把时区设错了,然后又手动把时钟调到“看起来正确”的本地时间,屏幕上的时间没问题,换算出来的 UTC 时间却可能差了几个小时。所以只看“时钟显示对不对”是不够的,时区也必须正确。
时间不准的常见原因
- 手动改过时间:为了某些应用或游戏手动调过日期时间,之后忘记改回自动。
- 时区设置错误:出国旅行、刷机或恢复出厂设置后,时区没有自动更新。
- 自动同步失效:电脑的时间同步服务停止,或者所在网络无法访问时间服务器。
- 主板电池没电:台式机每次断电后时间回到很久以前的某一天。
- 双系统切换:Windows 与其他系统对硬件时钟的理解不同,切换后可能相差数小时。
- 路由器时间错误:在路由器上运行代理时,路由器自身的时间不准也会导致失败。
判断标准:是不是时间问题
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 所有 VMess 节点都连不上,其他协议正常 | 时间误差超过 90 秒 | 开启自动时间同步 |
| 报错提示证书过期或尚未生效 | 设备日期错误 | 校准日期和时间 |
| 手机时间看起来正确,但仍然连不上 | 时区设置错误 | 打开自动时区,确认时区正确 |
| 电脑每次开机时间都不对 | 主板电池没电或同步服务未启动 | 更换主板电池,启用时间同步 |
| 双系统切换后连不上 | 硬件时钟解释方式不同 | 在两个系统中都开启自动同步 |
| 路由器上的代理全部失效 | 路由器时间错误 | 在路由器管理界面启用时间同步 |
逐步设置时间同步
- iPhone 与 iPad:进入“设置 > 通用 > 日期与时间”,打开“自动设置”。
- 安卓手机:进入“设置 > 系统 > 日期和时间”,打开“自动确定日期和时间”与“自动确定时区”,部分机型路径不同,以手机实际界面为准。
- Windows:进入“设置 > 时间和语言 > 日期和时间”,打开“自动设置时间”和“自动设置时区”,然后点击“立即同步”。
- macOS:进入“系统设置 > 通用 > 日期与时间”,打开自动设置时间与日期,并在时区中启用根据当前位置自动设置。
- 路由器:在管理界面的系统设置中启用时间同步,并确认时区正确,具体位置以路由器实际界面为准。
- 核对结果:同步后把设备时间与另一台时间准确的设备对比,确认误差在几秒以内。
- 重新连接:在客户端中断开再连接,或重启客户端,然后测试节点延迟。
时间误差多少会失败
以 VMess 为例,误差超过 90 秒就可能被拒绝;其他协议的阈值各不相同,有的更严格。TLS 证书校验对时间的容忍度相对宽松,但如果日期错了几天甚至几年,基本一定会失败。最稳妥的做法是始终保持自动同步,而不是去计算允许多少误差。
注意事项
- 不要为了某个应用长期保持手动时间,这不仅影响代理,也会影响证书校验、双重验证码等功能。
- 服务器一侧的时间同样需要准确,如果你的时间确认无误但 VMess 节点仍全部失败,可以反馈给服务商。
- 使用自动时区需要授予系统定位权限,这是系统功能,与代理客户端无关。
- 双重验证码类应用同样依赖准确时间,时间不准时它们生成的验证码也会失效。
- 恢复出厂设置或刷机后,第一件事就是检查时间和时区。