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
相关推荐
DO your like1 小时前
Linux系统操作笔记
linux·服务器·笔记
Xi_er_6 小时前
密钥管理系统在数据安全解决方案中的重要性
运维·数据仓库·物联网·web安全·前端框架·智慧城市·安全架构
练小杰6 小时前
我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习
android·运维·数据库·经验分享·学习·mysql·adb
hqxnb6668 小时前
深入理解 Linux 管道:创建与应用详解(匿名管道&&进程池)
linux·运维·服务器
vvw&8 小时前
如何在 Ubuntu 24.04 上安装 Drupal CMS 11 并配置 Nginx, MariaDB 和 SSL 教程
linux·运维·服务器·nginx·ubuntu·ssl·mariadb
未完成的歌~9 小时前
Kali 离线安装 ipmitool 笔记
linux·运维·笔记
会飞的土拨鼠呀9 小时前
docker system df命令
运维·docker·容器
vvw&9 小时前
在 Ubuntu 22.04 上部署 AppArmor 应用安全教程
linux·运维·服务器·nginx·安全·ubuntu·node.js
qq13267029409 小时前
GitLab创建用户,设置访问SSH Key
linux·运维·服务器·gitlab·gitlab创建用户·设置ssh key
CHANG_THE_WORLD9 小时前
Linux 基础七 内存
linux·服务器·前端