通信握手出错与时间同步服务器

橘子 发布于 7 小时前 11 次阅读


奇怪的日志

最近我发现了一个令人费解的地方:我的远程桌面通过WireGuard进行连接,但是最近却突然连不上了。更加奇怪的是,同一个子网内的两台设备,设备A是可以连上的设备B确是不能连上的。更加古怪的是,设备A和B是在同一物理子网下的,拥有几乎一致的配置。而且在这种情况下,我通过设备A做跳板能是够连接到设备B的。

最后经过一番检查,发现设备B的Wireguard日志存在报错,它不能正确连接到WireGuard的服务器。

奇怪的日志如下,这里隐去了IP地址等敏感信息:

2026-07-15 19:33:43.053928: [TUN] [client] Handshake for peer 1 (x.x.x.x:12345) did not complete after 5 seconds, retrying (try 9)
2026-07-15 19:33:43.053928: [TUN] [client] Sending handshake initiation to peer 1 (x.x.x.x:12345)
2026-07-15 19:33:48.522142: [TUN] [client] Handshake for peer 1 (x.x.x.x:12345) did not complete after 5 seconds, retrying (try 10)
2026-07-15 19:33:48.522142: [TUN] [client] Sending handshake initiation to peer 1 (x.x.x.x:12345)
2026-07-15 19:33:53.652097: [TUN] [client] Sending handshake initiation to peer 1 (x.x.x.x:12345)
2026-07-15 19:33:58.977940: [TUN] [client] Handshake for peer 1 (x.x.x.x:12345) did not complete after 5 seconds, retrying (try 2)

可以看到的是,这里说错误主要是在握手上存在问题,也就是说客户端根本连接不到服务器。

寻找解决办法

我在网上搜索了很多解决办法,其中一些是说MTU存在问题,这样就导致握手的包被丢了。但是这非常奇怪,因为我的两台设备一个可以连上,另一个却不行,这说明并不是MTU存在问题。另一个想法是时间同步存在问题。也就是说,握手的包是存在时间戳的,而这些时间戳和服务器的时间戳不匹配。被服务器识别为了重放攻击,所以连接失败了。这里列一些参考文章:

最后我是通过时间同步服务器修改来解决的这个问题。

时间同步服务

Windows修改时间同步服务器的方法比较多,这里比较推荐的是直接在设置中进行修改。这里有两篇参考文章,分别对应Windows 10系统和Windows 11系统,以及一个通用方法。

推荐的同步服务器

这里推荐几个时间同步服务器,可以选用一个自己能正常连接上的服务器来使用。我在测试的时候发现短时间内多次进行同步可能会失败,这有可能是时间同步服务器为了防止低dos攻击而设置的防护措施。

  • 国家授时中心:ntp.ntsc.ac.cn
  • 清华大学开源镜像站:ntp.tuna.tsinghua.edu.cn
  • 阿里云:ntp.aliyun.com
  • 美国国家标准与技术研究院(NIST):time.nist.gov
  • 微软时间同步:time.windows.com

微软的服务经常性连不上。