linux系统安装搭建chrony(ntp)时间同步服务器

目录

安装chrony

查询是否安装chrony

配置文件

allow客户端时间同步

[local stratum](#local stratum)

启动chronyd服务

开启防火墙放行ntp流量。

使用chrony命令检测

stratum层:

​编辑

[Stratum 层级的意义](#Stratum 层级的意义)

[查看 Stratum 层级](#查看 Stratum 层级)


系统:centos7、rockylinux9、rockylinux8

ntpd是比较旧的的软件,8.0后存储库中不再提供ntpd软件包

为什么叫chrony实际上来自于词根chron表示时间。

1. 同步精度

Chrony:通常被认为比 ntpd 更加精确,尤其是在网络条件不佳的情况下。它能够更好地处理网络抖动,并且可以在短时间内快速调整时钟。

NTPd:提供了良好的长期稳定性,适合于相对稳定的网络环境。
2. 启动时间

Chrony:启动后可以立即开始同步时间,不需要等待很长时间来收敛到一个稳定的状态。

NTPd:需要一定的时间来达到最佳的同步状态,在初次启动或长时间断开后可能需要几分钟才能完全稳定下来。
3. 配置复杂度

Chrony:配置相对简单,文档清晰,易于理解和维护。

NTPd:配置较为复杂,包含较多选项,对于新手来说学习曲线较陡。
4. 功耗和资源占用

Chrony:优化了算法以减少CPU和内存的使用,因此对系统资源的影响较小。

NTPd:相对来说可能会消耗更多的系统资源,尽管这种差异在现代计算机上通常是微不足道的。
5. 安全性

Chrony:支持更严格的安全措施,如自动选择可信的时间服务器,并且可以通过加密方式进行身份验证。

NTPd:也提供了一些安全特性,但在默认配置下不如 chrony 强大。
6. 恢复能力

Chrony:具有更好的恢复机制,如果因为某些原因导致时间不同步,它可以更快地纠正错误。

NTPd:恢复速度相对较慢,特别是在大幅度的时间偏移情况下。
7. 支持的操作系统

Chrony:广泛支持各种操作系统,包括Linux、Windows等。

NTPd:也是跨平台的,但其开发和维护主要集中在Unix-like系统上。
8. 社区和支持

Chrony:拥有活跃的社区和技术支持,特别是对于较新的Linux发行版。

NTPd:历史悠久,有庞大的用户基础和丰富的文档资源,但它的发展速度已经放缓。

安装chrony

查询是否安装chrony

bash 复制代码
rpm -q chrony

软件并未安装

使用yum或dnf安装chrony

bash 复制代码
yum -y install chrony

配置文件

bash 复制代码
vim /etc/chrony.conf

看到的是pool关键字,这一行是配置chronyd守护进程连接到NTP(网络时间协议)服务器以同步时间的。

具体来说:

pool:这个关键字告诉 chronyd 使用 DNS 轮询(DNS round-robin)来从指定的域名获取多个 NTP 服务器地址,并定期尝试与这些服务器之一进行时间同步。使用池的好处是即使某些服务器不可用,也可以从其他可用的服务器获得时间更新。

iburst:这是一个选项,指示 chronyd 在初次联系新添加的 NTP 服务器时发送一系列快速请求(通常是8个)。这有助于加快初始同步的速度,在客户端与服务器之间的延迟较高或不太稳定的情况下特别有用。一旦建立了良好的时钟偏移估计值,iburst 行为就会停止。

这里使用阿里云时间同步服务器

将其修改为:

bash 复制代码
pool ntp.aliyun.com iburst

allow客户端时间同步

之后修改26allow行。

作用是允许来自指定ip地址范围的客户端与服务器进行时间同步,

(这行配置通常用于将 NTP 或 Chrony 服务器设置为一个内部网络的时间源。)

默认是192.168.0.0/16

这是一个 CIDR 表示法,指定了一个 IP 地址范围。这里它涵盖了从 192.168.0.0 到 192.168.255.255 的所有 IP 地址。这意味着该网络中的任何设备都可以向这台机器请求时间同步服务。

注意:对于 ntpd(NTP v4),你可能会看到类似的配置,但是语法略有不同。在 ntp 的配置文件 /etc/ntp.conf 中,你可以使用 restrict 指令来达到类似的效果:

bash 复制代码
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap noquery

将其修改为

bash 复制代码
allow 0.0.0.0/0
# 允许所有 IPv4 客户端进行时间同步
allow ::/0
# 如果你也想允许 IPv6 客户端

local stratum

之后修改29行的local

用于指定本地时钟的分层(stratum)级别。在 NTP 协议中,时间服务器按照分层结构组织,其中:

Stratum 0:这些是参考时钟源,例如原子钟、GPS 接收器等,它们提供非常精确的时间但不直接参与 NTP 协议。

Stratum 1:连接到 Stratum 0 设备的时间服务器,被认为是最高级别的 NTP 服务器。

Stratum 2:连接到 Stratum 1 服务器的服务器。

以此类推:每个额外的层次都会增加一个 stratum 级别,直到达到 Stratum 15,这是可以同步的最高等级。

默认只需要删除前面的井号即可。

bash 复制代码
local stratum 10

local stratum 表示开启本地时钟授时服务。之后保持退出即可。

启动chronyd服务

bash 复制代码
systemctl enable --now chronyd

开启防火墙放行ntp流量。

bash 复制代码
firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload

查看ntp服务的端口监听状态。

bash 复制代码
ss -ulwn

-u:表示仅显示UDP协议。ntp是基于UDP。

-l:表示列出监听状态的端口。

-w:表示显示端口的原数据信息。

-n:表示显示端口号,而无需将其转换为服务名称。

可以看到123端口处于监听状态,且协议为UDP协议。

使用lsof命令验证。该端口是否由chrony进行监听。lsof(list open files)

bash 复制代码
lsof -i :123

此命令是列出打开的文件。(在linux中一切皆文件,连端口都是文件。)

列出那些进行当前正在打开(监听)123端口。

可以看到123端口正在被chronyd进程打开。

使用chrony命令检测

bash 复制代码
chronyc sources

其中前的*星号表示是最近的同步源,并且已经成功同步了该时间源的时间。

202.107.6.88表示前面配置文件中指定的地址ntp.aliyun.com

右侧的1表示该时间源处于哪一层。可用于判断该时间源的精度,层数越低,时间精度越高,也就意味着越准确。

也可以添加-v选项,显示详细信息:

客户端配置

1、安装chrony软件

bash 复制代码
yum -y install chrony
bash 复制代码
apt -y install chrony

2、编辑配置文件

bash 复制代码
vim /etc/chrony.conf
bash 复制代码
vim /etc/chrony/chrony.conf/

只需要将pool值修改为上游的ntp时间服务器的地址即可。我这里是192.168.6.50/24

其他地方无需配置。保存退出。

3、启动chronyd服务

bash 复制代码
systemctl enable --now chronyd

4、验证时间源是否同步成功。

bash 复制代码
chronyc sources

验证时可能会出现一下信息,是由于之前的缓存没有清除。

只需要重启chronyd服务即可。

bash 复制代码
systemctl restart chronyd

5、时间同步状态

bash 复制代码
timedatectl status

可以看到,system clock synchronized :yes 、NTP service :active

NTP服务和时间同步服务。均为启动状态。

6、NTP服务器查看客户端

bash 复制代码
chronyc clients

stratum层:

在 chronyd(以及 NTP 协议)中,Stratum 层级表示时间服务器的层级结构,它用于定义时钟源与参考时钟之间的距离。Stratum 值越低,意味着该时间服务器离参考时钟越近,因此其时间越准确。

Stratum 0: 这些不是真正的NTP服务器,而是指高精度的时间源,如原子钟、GPS接收器等。它们提供非常精确的时间信号,但不直接参与NTP协议通信。
Stratum 1: 也称为主服务器或一级服务器,直接连接到 Stratum 0 设备。它们通过专用硬件接口获取时间,并通过网络向其他计算机提供服务。
Stratum 2: 这些服务器从一个或多个 Stratum 1 服务器同步时间。由于网络延迟等因素,它们的时间准确性略低于 Stratum 1 服务器。
**Stratum 3 及以上:**每增加一层,就代表一次额外的网络跳跃。理论上,NTP 支持最高到 Stratum 15 的层次,但实际上很少会超过 Stratum 3 或 4,因为更多的层会导致显著的时间误差累积。

Stratum 层级的意义

可靠性: 较高的 Stratum 层级意味着更多依赖于间接的时间源,从而可能导致更大的不确定性。因此,在配置 chronyd 或任何使用 NTP 协议的服务时,尽量选择较低 Stratum 层次的时间服务器是非常重要的。
**负载均衡和冗余:**为了保证时间和性能的质量,通常建议配置多个不同 Stratum 层级的时间服务器,以实现负载分担和故障转移。

查看 Stratum 层级

bash 复制代码
chronyc sources -v
相关推荐
Hurry61 分钟前
Rocky Linux 9.x 基于 kubeadm部署k8s 1.32
linux·运维·kubernetes
zxnbmk40 分钟前
ansible速查手册
linux·服务器·ansible
小卓笔记1 小时前
DNS主从服务器
运维·服务器
Muisti1 小时前
TCP 通信流程图
服务器·网络·windows
book01211 小时前
Ansible 自动化运维
运维·自动化·ansible
阿正的梦工坊1 小时前
Linux 命令:按内存使用大小排序查看 PID 的完全指南
linux·运维·服务器
IT小饕餮2 小时前
linux 基础网络配置文件
linux·服务器·网络
未来之窗软件服务2 小时前
lite_avatar 数字人命令行-安装故障解决
linux·运维·服务器·数字人
IT大头娃娃2 小时前
配置银河麒麟V10高级服务器操作系统安装vmware tools。在您的计算机上尚未找到用于此虚拟机的 VMwareTools。安装将无法继续。
运维·服务器
m0_694845572 小时前
什么是站群服务器?站群服务器应该怎么选?
linux·运维·服务器·云计算·github