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

相关文章
|
2月前
|
存储 安全 数据管理
Linux文件时间戳:解析时区与修改时间的相互作用
Linux文件时间戳:解析时区与修改时间的相互作用
57 2
|
2月前
|
Kubernetes Linux Windows
第二章 Linux和windows部署helm 客户端
第二章 Linux和windows部署helm 客户端
75 0
|
2月前
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
61 0
|
2月前
|
监控 关系型数据库 Linux
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件传输 FTP客户端工具】Linux ncftp 命令使用指南
【Shell 命令集合 文件传输 FTP客户端工具】Linux ncftp 命令使用指南
82 0
|
2月前
|
消息中间件 Kubernetes NoSQL
Linux时间校准(ntpdate及NTP客户端代码校准示例)
Linux时间校准(ntpdate及NTP客户端代码校准示例)
|
2月前
|
监控 Linux 定位技术
Linux【环境部署 01】NTP时间服务器搭建及Linux+Windows客户端使用(一篇学会使用NTP服务)
Linux【环境部署 01】NTP时间服务器搭建及Linux+Windows客户端使用(一篇学会使用NTP服务)
1131 0
|
27天前
|
Linux
linux centos history 查看命令历史 显示时间戳
linux centos history 查看命令历史 显示时间戳
30 1
|
4天前
|
Linux 数据安全/隐私保护 Python
使用Python实现Linux惠尔顿上网认证客户端
使用Python实现Linux惠尔顿上网认证客户端
6 0
|
25天前
|
监控 Linux
探索 Linux 中的 Chronyc:一个用于配置和管理 Chrony 的实用工具
Chronyc 是一款用于配置和管理 Linux 系统中 Chrony 时间同步工具的命令行实用程序。Chrony 结合了 ntpd 和 ntpdate 的优点,提供高精度和灵活性。要安装 Chrony,可使用包管理器(如 `apt` 或 `yum/dnf`)。常用 `chronyc` 命令包括:查看时间源状态(`sources`)、跟踪信息(`tracking`)、添加或删除服务器、手动同步时间(`makestep`)以及查看其他信息和帮助。`chronyc` 提供了便捷的方式来监控和调整系统时间同步。