时间同步 chrony 的服务端和客户端配置

[root@localhost ~]# cat /etc/system-release
Anolis OS release 8.6

CentOS 8 默认使用 chronyd 作为时间同步工具, chrony 的配置文件是 /etc/chrony.conf 。

/etc/chrony.conf 配置文件注释中文翻译。
# 使用pool.ntp.org项目中的公共服务器。
# 请考虑加入该池(http://www.pool.ntp.org/join.html)。
pool ntp.aliyun.com iburst

# 记录系统时钟获取/失去时间的速率。
driftfile /var/lib/chrony/drift

# 如果系统时钟的偏差大于1秒,则允许在前三次更新中进行 步进调整。
makestep 1.0 3

# 启用内核对实时时钟(RTC)的同步。
rtcsync

# 启用所有支持硬件时间戳的接口。
#hwtimestamp *

# 增加调整系统时钟所需最小可选源的数量。
#minsources 2

# 允许来自本地网络的NTP客户端访问。
#allow 192.168.0.0/16

# 即使未与时间源同步,也提供时间服务。
#local stratum 10

# 指定包含 NTP 认证密钥的文件。
# keyfile /etc/chrony.keys

# 从系统 tz 数据库获取 TAI-UTC 偏移量和闰秒。
leapsectz right/UTC

# 指定日志文件的目录。
logdir /var/log/chrony

# 选择要记录哪些信息。
#log measurements statistics tracking

解释:

1.0
pool ntp.aliyun.com iburst

在 chrony 配置文件中,pool ntp.aliyun.com iburst 表示在 NTP 时间服务器池中选择阿里云的 NTP 服务器作为主要的时间源。

  • pool:指示 chrony 从一个 NTP 服务器池中选择多个服务器进行时间同步。
  • ntp.aliyun.com:阿里云 NTP 服务器的域名。
  • iburst:表示初始同步时快速获取信息以进行准确度更高的同步。这样设置可使 chrony 更快地与 NTP 服务器保持同步并在启动时加速同步过程,而不是等待几分钟才能与 NTP 服务器同步,从而提高时间同步的准确性和精度。

使用 pool ntp.aliyun.com iburst 在 chrony 中配置 NTP 服务器是一种常见方法,可以帮助确保系统时间始终保持精确和同步,并更好地支持全球用户的需求。

1.1
server ntp.aliyun.com iburst

在 chrony 配置文件中,server ntp1.aliyun.com iburst 的作用是指定 ntp1.aliyun.com 服务器作为时间同步服务器,并使用 iburst 参数以加快初始同步速度。

  • server:指示 chrony 使用单个 NTP 服务器进行时间同步。
  • ntp1.aliyun.com:阿里云 NTP 服务器的域名。
  • iburst:在初始同步时,它允许chrony发送更多的请求来更快地获得信息并进行准确度更高的同步。这可以加速chrony与选定的NTP服务器同步,并提高时间同步的精确性和可靠性。

因此,将 server ntp1.aliyun.com iburst 添加到 chrony 配置文件中可以指定使用阿里云的 NTP 服务器进行时间同步,并且快速进行时间同步,确保系统时间的准确性和精度。

2.0
driftfile /var/lib/chrony/drift

在 chrony 配置文件中用于记录和管理时钟漂移的相关配置。

  • driftfile:这个指令指定了一个文件来存储 chrony 的时钟漂移调整,在每次进程退出时保存变化。时钟漂移是指计算机硬件内部时钟与真实时间之间的偏差,这些偏差可能会随着时间或环境因素而改变。chrony 会定期进行时钟漂移的调整,并将其记录在指定的文件中。

  • /var/lib/chrony/drift:指定了 chrony 保存漂移信息的文件路径和名称。在这里,漂移文件名为 "drift",储存在 /var/lib/chrony 目录下。这个文件将记录 chrony 对时钟漂移的各种调整,以便在需要时进行校准。

总的来说,其作用是记录系统时钟的漂移,以便 chrony 随时可以更新时钟以保证时间同步的准确性和精度。

3.0
makestep 1.0 3

这是一个 chrony 配置文件中的命令,用于控制系统时钟的步进调整。

  • makestep:这个命令用于指定系统时钟进行时间步进的条件。它允许在某些情况下进行立即调整本地时钟,以快速达到时间同步。

  • 1.0:这是一个浮点数值,指定了时钟步进调整的偏移量阈值,单位为秒。当本地系统时钟与参考时间源的偏差超过这个值时,chrony 就会尝试进行时间步进调整。

  • 3:这个整数值指定了系统时钟进行时间步进调整的次数。在前三次更新过程中,如果时钟偏差过大,则 chrony 可以进行多次步进调整以尽快校准本地时钟。只有在这三次更新后,chrony 才会从阈值调整为正常模式,根据漂移值进行微调。

因此,该配置指示 chrony 允许对系统时钟进行时间步进调整,并且只在开始的三次更新中允许多次步进调整,当本地系统时钟与参考时间源之间的偏差超过 1 秒时,就会触发步进调整。这将快速校准本地系统时钟,以确保时间同步的准确性。

4.0
rtcsync

该指令是在Linux系统中,通过修改 /etc/sysconfig/chronyd 配置文件来启用内核对实时时钟进行同步的。当设置 rtcsync 指令后,chrony会将内核中的“硬件时钟”与 UTC 时间同步,以便能够正确地记录系统中发生的事件的精确定时。这个指令可以提高系统时间的稳定性和精度,并且使得系统在重启后能够保持准确的时间。

5.0
#hwtimestamp *

这是一条配置指令,用于在所有支持硬件时间戳的接口上启用硬件时间戳功能。通过在chrony的配置文件中添加此指令(去掉注释符号“#”),chrony将启用硬件时间戳来准确地记录系统时钟的不同事件。硬件时间戳是使用网络接口卡中的硬件定时器生成的时间戳,它可以提供更高的精确度和可靠性,因为它不受计算机处理器和操作系统的负载影响。

6.0
#minsources 2

这是一条chrony配置指令,用于增加调整系统时钟所需的最小可选源数量。通过在chrony的配置文件中添加此指令(去掉注释符号“#”),chrony要求在调整系统时钟之前,至少需要两个可选时间源进行同步。这可以提高时间同步的精确度和可靠性,因为使用多个时间源可以减少单个时间源出现问题的影响,并确保在选择时间源时具有更多的选择。

7.0
#allow 192.168.0.0/16

这是一条chrony配置指令,用于允许来自本地网络的NTP客户端访问chrony。通过在chrony的配置文件中添加此指令(去掉注释符号“#”),你可以将192.168.0.0/16网络地址范围内的NTP客户端添加到允许列表中,以便它们可以与chrony进行时间同步。这可以确保系统在内部网络中的计算机之间保持时间同步,并防止其他未经授权的计算机访问chrony服务。

8.0
#local stratum 10

这是一条chrony的配置指令,用于设置本地时钟为stratum 10级别。通过在chrony的配置文件中添加此指令(去掉注释符号“#”),chrony可以在未有效同步到时间源的情况下继续为客户端提供时间服务。通常情况下,一个stratum级别越小的服务器表示它与原子钟等高精度时间源的同步更接近。由于本地时钟无法像外部时间源那样准确,因此将其设置为stratum 10意味着chrony不会将其视为可靠的时间源,但仍然允许它为客户端提供时间服务。
stratum 的最大值为 15,它表示时间来源与原子钟的距离越远,即时间同步精度越低。通常情况下,原子钟为 stratum 0 级别,可以为其他 NTP 服务器和客户端提供高精度的时间源。NTP 服务器通过向下传递其 stratum 值来构建时间同步层次结构,例如,当 NTP 服务器接收到来自 stratum 0 级别的时间源时,其 stratum 值为 1,然后传递给它的客户端的 stratum 值将是 2或更高级别。在实际使用中,通常只会使用 stratum 1-15 级别的 NTP 服务器进行时间同步。
要查看 chrony 当前的 stratum 值,可以在终端中运行以下命令:

chronyc sources | awk 'NR >2 {print "NTP时间源 "$2" 的Stratum值是:"$3}'
chronyc tracking | awk '/Stratum/ {print "本机的Stratum值是:"$3}'

可以查看时间源的 stratum 的值。

9.0
# keyfile /etc/chrony.keys

这是一条chrony配置指令,用于指定存储NTP认证密钥的文件。通过在chrony的配置文件中添加此指令(去掉注释符号“#”),chrony将读取指定的文件以获取NTP认证密钥。NTP认证密钥用于验证其他NTP服务器或客户端发出的时间请求,以确保来自可信的NTP源。这可以提高系统对时间同步数据的安全性和准确性。默认情况下,chrony不会加载任何密钥文件,因此需要手动指定要使用的密钥文件路径。

10.0
leapsectz right/UTC

这是一条chrony配置指令,用于从系统时区数据库中获取TAI-UTC偏移量和闰秒信息。通过在chrony的配置文件中添加此指令(去掉注释符号“#”),chrony可以查询系统时区数据库以获取当前时间的TAI-UTC偏移量和闰秒数,以便更准确地同步时间。系统时区数据库中存储了与全球标准时间(UTC)相关的信息,包括TAI-UTC偏移量和当前可用的闰秒数等。leapsectz指令允许chrony定期查询系统时区数据库以更新本地时钟的TAI-UTC偏移量和闰秒数,从而保持时间同步的准确性。

11.0
logdir /var/log/chrony

这是一条 chrony 的配置指令,用于指定 chrony 的日志文件存储目录。通过在 chrony 的配置文件中添加此指令(去掉注释符号“#”),可以将 chrony 生成的日志文件存储到指定的目录中。日志文件可以记录 chrony 运行过程中的各种信息,例如时间源同步状态、客户端连接情况、调试信息等。将日志文件存储到指定的目录中有助于组织和管理 chrony 的日志文件,并且还可以避免在系统根分区上产生大量日志文件导致磁盘空间不足,从而影响系统运行。

12.0
#log measurements statistics tracking

这是一条 chrony 的配置指令,用于指定记录哪些信息到日志文件中。通过在 chrony 的配置文件中添加此指令(去掉注释符号“#”),可以选择记录 chrony 运行过程中哪些信息。其中,“measurements”选项用于记录每个时间源的同步状态和精度参数,“statistics”选项用于记录 chrony 的运行统计信息,“tracking”选项用于记录 chrony 跟踪系统时钟的操作,例如校准偏差和调整频率等。默认情况下,chrony 会记录所有选项的信息到日志文件中。通过手动指定要记录的信息选项,可以精细控制 chrony 的日志输出,从而更好地满足系统管理员的管理需求。

一、chrony 服务器配置

ens160(内网 192.168.30.11)
ens224(外网 192.168.60.128)
Anolis OS 8.6 CentOS 8 默认使用 chrony 作为时间同步服务。

1、修改/etc/chrony.conf配置文件。

只需添加allow 192.168.30.0/24即可,local stratum 10(chrony可以在未有效同步到时间源的情况下继续为客户端提供时间服务) 该选项可选添加

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool ntp.aliyun.com iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.30.0/24

# Serve time even if not synchronized to a time source.
#local stratum 10
local stratum 10

# Specify file containing keys for NTP authentication.
# keyfile /etc/chrony.keys

# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
2、重启 chronyd 服务。
systemctl restart chronyd
3、防火墙开启192.168.30.0/24 网段访问udp 123 端口。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.30.0/24" port port="123" protocol="udp" accept"
firewall-cmd --reload
3、手动同步上游(ntp.aliyun.com)时间

该命令是使用 chronyc 时的一条指令。它会强制使系统时钟向 chronyd 当前与参考时钟的差值调整一步。在执行该命令时,系统时间将会被突变地改变一段量,而不是像平常一样进行缓慢的调整。通常情况下,我们不建议对系统时钟使用 makestep 命令。但是,在某些时候,如果您需要快速将系统时钟同步到正确的时间,特别是在您对系统的时钟作出大幅度更改后,可以使用这个命令。需要注意的是,执行此命令需要使用 root 权限。。

chronyc makestep

二、chrony 客户端配置

ens160(内网 192.168.30.12)
Anolis OS 8.6 CentOS 8 默认使用 chrony 作为时间同步服务。

1、修改/etc/chrony.conf配置文件。

删除或注释pool ntp.aliyun.com iburst 添加内网的NTP(192.168.30.11)服务器。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool ntp.aliyun.com iburst
server 192.168.30.11 iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
# keyfile /etc/chrony.keys

# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
2、重启 chronyd 服务。
systemctl restart chronyd
3、手动同步上游(192.168.30.11)时间。

该命令是使用 chronyc 时的一条指令。它会强制使系统时钟向 chronyd 当前与参考时钟的差值调整一步。在执行该命令时,系统时间将会被突变地改变一段量,而不是像平常一样进行缓慢的调整。通常情况下,我们不建议对系统时钟使用 makestep 命令。但是,在某些时候,如果您需要快速将系统时钟同步到正确的时间,特别是在您对系统的时钟作出大幅度更改后,可以使用这个命令。需要注意的是,执行此命令需要使用 root 权限。

chronyc makestep

chrony 的常用命令。

以下是 chrony 常用的一些命令:

  1. 启动 chrony 服务:

    sudo systemctl start chronyd.service
    
  2. 停止 chrony 服务:

    sudo systemctl stop chronyd.service
    
  3. 重启 chrony 服务:

    sudo systemctl restart chronyd.service
    
  4. 查看 chrony 服务状态:

    sudo systemctl status chronyd.service
    
  5. 手动与 NTP 服务器同步时间:

    sudo chronyc -a makestep
    
  6. 查看 chrony 时间同步状态:

    sudo chronyc tracking
    
  7. 查看 chrony 时间服务器列表:

    sudo chronyc sources
    sudo chronyc sources -v
    
  8. 查看 chrony 日志:

    sudo less /var/log/chrony/*.log
    

以上是常用的一些 chrony 命令,可以根据实际需求进行使用。

chrony 时间同步配置服务端和客户端脚本。

该脚本在服务端和客户端各执行一次。
需要修改以下变量的值为自己所需的值:
server_ip
server_allow_ip
server_source

#!/bin/bash
# 配置chrony 作为时间同步的 服务端 和 客户端。

# 服务端IP(内网)地址。
server_ip="192.168.30.11"
# 服务端允许那个IP段访问。
server_allow_ip="192.168.30.0/24"
# 服务端使用的时间源。
server_source="pool ntp.aliyun.com iburst"

# 服务端配置
ntp_server_conf() {
    sed -i 's/^pool/#pool/' /etc/chrony.conf
    sed -i 's/^server/#server/' /etc/chrony.conf
    echo -e "${1}\nallow ${2}\nlocal stratum 10" >> /etc/chrony.conf
    systemctl restart chronyd
    firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.30.0/24" port port="123" protocol="udp" accept"
    firewall-cmd --reload
}

# 客户端配置
ntp_client_conf() {
    sed -i 's/^pool/#pool/' /etc/chrony.conf
    sed -i 's/^server/#server/' /etc/chrony.conf
    echo "server $1 iburst" >> /etc/chrony.conf
    systemctl restart chronyd
}

# 判断运行该脚本的是服务端还是客户端。
ip addr | grep "$server_ip" &> /dev/null
if [ "$?" -eq 0 ];then
    ntp_server_conf "${server_source}" "${server_allow_ip}"
else
    ntp_client_conf "${server_ip}"
fi

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容