Linux客户端chrony校时中T1时间戳随机问题研究

简介: 时间同步,客户端时间戳随机

现象

  使用centos8的chrony给本机同步时间时,发现客户端发送给服务器的NTP包中,transmit  timestamp(T3)的时间戳是随机的,同时,服务器端收到客户端请求的包后,原封不动的将时间赋值给origin  timestamp(T1),使用龙蜥测试环境如下图所示:

但是这种情况在使用ntpdate同步本地时间时并不存在,时间都是正确的:

我记得之前并不存在这个问题,随后用centos6.5的ntpd同步测试发现时间戳不是随机的,而是一个正确的客户端本地时间。

分析

Linux7之前的版本同步时间用的是ntpd,Linux7以及7之后的版本都改用chrony了,两者区别参考:https://chrony.tuxfamily.org/comparison.html

经过查资料发现,这个随机时间戳是因为安全考虑,虽然该备忘录要求客户端数据包中的大部分字段设置为零,但发送时间戳应该是随机的。这个决定是出于安全和隐私的动机。在没有密码认证的情况下,验证原始时间戳是客户端对NTP响应进行盲欺骗的主要防御手段。因此,客户端的传输时间戳不可预测是很重要的。参考:https://datatracker.ietf.org/doc/html/draft-ietf-ntp-data-minimization#page-4

同时,自chrony2.3开始已经不显示客户端数据包中的本地时间和同步状态,这个版本2016年2月16日发布的。参考:https://chrony.tuxfamily.org/news.html

同时chrony与ntp对比官方文档的安全性对比表格中,也有关于随机时间戳的说明:

结论

根据上面的分析可得出:

  1. 使用chrony2.3及以上版本作为同步工具的系统均存在客户端时间随机问题。
  2. 一些遵循NTPv4(RFC5905)的时间同步工具,均存在客户端时间随机问题。
  3. Linux7及以下版本系统使用的同步工具是ntpd,故不存在客户端时间随机问题。

想要T1时间戳是客户端本地真实时间戳应该怎么办?

1、卸载chrony,使用ntpd来实现客户端时间同步。

2、将chrony版本降至2.2.1

3、使用ntpdate来同步本地时间,同时将ntpdate加入定时任务。(不推荐)

注:ntpdate 同步本地时间会立即将本地时间校正,这会导致客户端本地时间出现过大的跳变,对业务会存在一定的影响,所以不推荐这种方式。

相关文章
|
存储 安全 数据管理
Linux文件时间戳:解析时区与修改时间的相互作用
Linux文件时间戳:解析时区与修改时间的相互作用
262 2
|
Kubernetes Linux Windows
第二章 Linux和windows部署helm 客户端
第二章 Linux和windows部署helm 客户端
254 0
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
325 0
|
存储 Shell Linux
【Shell 命令集合 文件传输 FTP客户端工具】Linux ncftp 命令使用指南
【Shell 命令集合 文件传输 FTP客户端工具】Linux ncftp 命令使用指南
321 0
|
3月前
|
NoSQL IDE MongoDB
Studio 3T 2025.10 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.10 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
248 21
Studio 3T 2025.10 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
|
3月前
|
Java Linux 开发工具
Linux下版本控制器(SVN) -命令行客户端
Linux下版本控制器(SVN) -命令行客户端
79 3
|
6月前
|
NoSQL IDE MongoDB
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
225 2
Studio 3T 2025.5 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
|
5月前
|
SQL Linux 数据库
YashanDB Linux客户端安装
本文详细介绍了YashanDB客户端在Linux系统中的安装、使用与卸载步骤。安装方法包括适用于所有Linux平台的脚本安装和专用于CentOS的rpm安装。脚本安装需解压软件包并配置环境变量,而rpm安装则需以root用户执行相关命令。此外,文章还说明了如何通过yasql连接YashanDB并进行数据库操作,以及两种安装方式对应的卸载方法,帮助用户顺利完成客户端的管理与维护。
|
6月前
|
NoSQL IDE MongoDB
Studio 3T 2025.4 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.4 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
203 0
Studio 3T 2025.4 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
|
Linux
linux centos history 查看命令历史 显示时间戳
linux centos history 查看命令历史 显示时间戳
506 1