如何在 Rocky Linux 上将 Chrony 设置为 NTP 服务器和客户端
在此页
- 先决条件
- 安装 Chrony 包
- 将 Chrony 设置为 NTP 服务器
- 将 Chrony 设置为 NTP 客户端
- 结论
NTP 或网络时间协议是一种用于计算机网络上时间和时钟同步的网络协议。
Chrony 是 NTP 或网络时间协议的实现,是 up 等其他应用程序的替代品。 Chrony 可以在类 Unix 操作系统上运行,在 GNU GPL v2 下发布。 Chrony 被用作某些 Linux 发行版的默认 NTP 服务器软件,也可用于多个 Linux 发行版。
在本指南中,您将学习如何在 Rocky Linux 服务器上安装和使用 Chrony。您将学习如何以两种不同的方式使用 Chrony:
- 将 Chrony 用作 NTP 服务器 - 如果您想为本地环境构建 NTP 服务器,通常会使用这种方法。因此,客户端将连接到运行 Chrony 作为 NTP 服务器的本地计算机,而不是连接到互联网上的公共 NTP 服务器。
- 使用 Chrony 作为 NTP 客户端 - 这是当您需要将计算机或客户端上的时间同步到 NTP 服务器时。
先决条件
本指南假设您有两个不同的 Rocky Linux 服务器,它们将用作 NTP 服务器和 NTP 客户端。您可以使用 Rocky Linux v8 或最新版本 9。此外,您还需要一个在两台机器上都具有 sudo root 权限的非 root 用户。
以下是我们将使用的详细服务器:
Hostname IP Address Used as
-------------------------------------------
rocky8 192.168.5.100 NTP Server
client1 192.168.5.120 NTP Client
现在让我们开始 Chrony 安装和配置。
安装 Chrony 包
Chrony 是类 Unix 操作系统的 NTP(网络时间协议)的实现之一。
默认情况下,Chrony 软件包在 baseos Rocky Linux 存储库中可用。
您可以使用下面的 dnf 命令检查 Chriony 包。您应该会看到有关 Chrony 包的详细信息。
sudo dnf info chrony
在下面的屏幕截图中,您可以看到 Chrony v4.1 的当前版本在 baseos Rocky Linux 存储库中可用。

现在,要安装 Chriony,请运行下面的 dnf 命令。当提示确认安装时,输入 y 然后按 ENTER 继续。
sudo dnf install chrony
安装 Chrony 后,使用下面的 systemctl 命令启动并启用 Chronyd 服务。
sudo systemctl enable chronyd
sudo systemctl start chronyd
之后,使用以下命令验证 Chronyd 服务。
sudo systemctl status chronyd
您应该会看到 Chrionyd 服务已启用并将在系统启动时自动运行。而现在,Chronyd 服务的状态是运行。

将 Chrony 设置为 NTP 服务器
在这一步中,您将学习如何在 ROcky Linux 服务器上将 Chrony 设置为 NTP 服务器。在此示例中,我们将使用主机名为 rocky8 且 IP 地址为 192.168.5.100 的 Rocky Linux 服务器。
要设置 Chrony,您必须编辑默认的 Chrony 配置 /etc/chrony.conf 文件。
使用以下 nano 编辑器命令打开文件 /opt/.chrony.conf。
sudo nano /etc/chrony.conf
在 server 指令中,您可以指定要使用的 NTP 服务器的来源。您可以在 https://www.ntppool.org/en/ 找到离您最近的 NTP 服务器池。
在此示例中,我们将使用以下 NTP 服务器池。此外,我们将使用附加选项 iburst,它允许 Chronyd 服务在启动后不久进行时钟的第一次更新。
# list servers
server 0.se.pool.ntp.org iburst
server 1.se.pool.ntp.org iburst
server 2.se.pool.ntp.org iburst
server 3.se.pool.ntp.org iburst
取消注释 allow 指令并添加允许访问 NTP 服务器的 IP 地址的子网。在此示例中,将允许网络 192.168.5.0/24 中的所有客户端访问 NTP 服务器。
# allowed clients
allow 192.168.5.0/24
完成后保存文件并退出编辑器。
您可能还想更改的其他选项/指令:
# 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 hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Specify the 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
接下来,运行以下命令重新启动 Chronyd 服务并应用新的更改。 Chronyd 服务现在作为 NTP 服务器运行。
sudo systemctl restart chronyd
现在,让我们在下面运行以下 chronyc 命令来验证当前使用的 NTP 服务器池的来源。您应该会看到您的服务器使用的当前 NTP 服务器源的列表。
chronyc sources

您还可以通过 -v 选项获取详细信息作为详细信息。
chronyc sources -v
以下是服务器上使用的 NTP 服务器源的详细状态。

最后,您需要将 NTP 服务端口添加到 firewalld。这将允许客户端机器连接到您的 NTP 服务器。
运行下面的 firewall-cmd 命令将 NTP 服务添加到 firewalld。然后,重新加载 firewalld。这将允许任何机器连接到 NTP 服务器。
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

您还可以指定允许通过 Firewalld Rich Rules 访问 NTP 服务器的网络子网。添加 firewalld rich 规则,允许子网 192.168.5.0/24 通过下面的 firewall-cmd 命令访问 NTP 服务器。然后,重新加载 firewalld 以应用新规则。
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.5.0/24' service='ntp' accept"
sudo firewall-cmd --reload
现在您可以使用以下 firewall-cmd 命令检查 firewalld 规则。您应该在 firewalld 上看到启用的服务和打开的端口。
sudo firewall-cmd --list-all
此时,您已经在 Rocky Linux 服务器上安装并配置了 Chrony 作为 NTP 服务器。您接下来可以将 Chrony 设置为 NTP 客户端。
将 Chrony 设置为 NTP 客户端
现在您将学习如何在 Rocky Linux 系统上将 Chrony 设置为 NTP 客户端。在此示例中,您将使用主机名 client1 在 Rocky Linux 机器上设置 Chrony NTP 客户端。
在开始之前,请确保在客户端计算机上安装了 Chrony 软件包。您可以通过 dnf 命令安装它。
sudo dnf install chrony -y
安装 Chriony 后,使用以下 nano 编辑器命令打开配置文件 /etc/chrony.conf。
sudo nano /etc/chrony.conf
在服务器指令中,将 NTP 服务器源更改为您的 NTP 服务器。在此示例中,NTP 服务器正在运行 IP 地址为 192.168.5.100 的服务器。
此外,您还可以在服务器指令中看到其他选项\
- iburst 选项允许 Chronyd 服务在启动后不久进行时钟的第一次更新。
- prefer 选项将在没有 prefer 选项的其他服务器中优先考虑 NTP 服务器源。
server 192.168.5.100 iburst prefer
完成后保存文件并退出编辑器。
现在,运行以下命令重新启动 Chrony 服务并应用新配置。
sudo systemctl restart chronyd
最后,运行以下 chronyc 命令来验证 client1 机器上 NTP 的当前状态。
chronyc tracking
您应该看到 client1 机器已连接并将时间同步到 NTP 服务器 ntp.hwdomain.io,即服务器 IP 地址 192.168.5.100。

您还可以通过下面的 chronyc 命令验证详细的 NTP 数据。
chronyc ntpdata
您现在可以在 Remote address 部分看到 NTP Server 的 IP 地址,而 Local address 部分是当前机器的 IP 地址。

接下来,您还可以通过下面的 chronyc 命令验证 client1 机器上的 NTP 服务器源。您应该看到客户端计算机现在使用 IP 地址为 192.168.5.100 的 NTP 服务器 ntp.hwdomain.io 作为默认和首选 NTP 服务器源。
chronyc sources
chronyc sources -v

结论
恭喜!您现在已经在 Rocky Linux 服务器上成功安装了 Chrony NTP 实现软件。您还了解了可用于 NTP 服务器和客户端的 Chrony 的基本用法。最后,您还了解了用于检查 NTP 状态的 chronyc 命令行的基本用法。