CentOS服务器时间不准?如何部署NTP服务进行内网同步?

在复杂的网络环境中,确保所有服务器和设备的时间保持精确同步至关重要,时间同步对于日志分析、分布式系统协作、安全审计以及数据库事务处理等场景都是不可或缺的基础设施,网络时间协议(NTP)是用于同步网络中计算机时间的标准协议,本文将详细介绍如何在 CentOS 系统上部署一台稳定可靠的 NTP 服务器,为内网其他设备提供精准的时间源。

CentOS服务器时间不准?如何部署NTP服务进行内网同步?

环境准备

在开始之前,请确保您具备以下条件:

  • 一台已安装的 CentOS 7 或 CentOS 8 系统。
  • 拥有 sudoroot 权限的用户账户。
  • 服务器能够访问互联网,以便与上游的公共 NTP 服务器进行时间同步。

第一步:安装 NTP 服务软件

在现代的 CentOS 系统中,推荐使用 chrony 作为 NTP 服务实现。chrony 相较于传统的 ntpd,在处理网络不稳定、虚拟机环境以及频繁暂停和恢复的系统时表现更为出色,同步速度更快,使用以下命令进行安装:

sudo yum install -y chrony

对于 CentOS 8 或更高版本,使用 dnf

sudo dnf install -y chrony

第二步:配置 NTP 服务器

chrony 的主配置文件位于 /etc/chrony.conf,在编辑之前,建议先备份原始文件:

sudo cp /etc/chrony.conf /etc/chrony.conf.bak

然后使用您喜欢的文本编辑器(如 vim)打开配置文件:

sudo vim /etc/chrony.conf

以下是配置文件中需要关注和修改的关键项:

  1. 配置上游时间服务器
    文件中默认已经配置了几台公共 NTP 服务器池,这些服务器用于将我们自己的服务器与标准时间同步,使用 pool 指令可以自动选择响应速度最佳的服务器。

    pool 2.centos.pool.ntp.org iburst

    您可以根据地理位置选择更近的 NTP 池,例如使用 pool.ntp.org

  2. 允许客户端同步
    默认情况下,chrony 不会响应来自网络的同步请求,要使其作为 NTP 服务器为内网提供服务,必须使用 allow 指令明确指定允许的客户端网段。
    要允许 168.1.0/24 网段的所有客户端访问,添加或修改以下行:

    CentOS服务器时间不准?如何部署NTP服务进行内网同步?

    allow 192.168.1.0/24

    如果希望允许所有客户端,可以使用 allow all,但这在生产环境中不推荐,应尽量限制访问范围。

  3. 其他关键参数
    下表小编总结了 chrony.conf 中一些重要的指令:

指令 功能描述 示例
pool/server 指定上游 NTP 服务器,用于同步本机时间 pool 0.centos.pool.ntp.org iburst
allow 控制哪些网络或主机可以向本机查询时间 allow 10.0.0.0/8
driftfile 存储时钟漂移信息的文件,帮助系统在重启后快速同步 driftfile /var/lib/chrony/drift
logdir 指定日志目录 logdir /var/log/chrony
local stratum 当无法与上游服务器同步时,以本地时间为准,并指定层级 local stratum 10

配置完成后,保存并退出编辑器。

第三步:启动并设置开机自启

配置修改完毕后,需要启动 chronyd 服务并设置其为开机自启,以确保服务器重启后时间同步服务能自动运行。

sudo systemctl start chronyd
sudo systemctl enable chronyd

使用以下命令检查服务状态,确保其正在正常运行:

sudo systemctl status chronyd

如果输出中显示 active (running),则表示服务已成功启动。

第四步:配置防火墙

NTP 服务使用 UDP 的 123 端口,您需要在系统防火墙中开放此端口,以便客户端能够访问。

sudo firewall-cmd --add-port=123/udp --permanent
sudo firewall-cmd --reload

第一条命令永久性地添加了规则,第二条命令重新加载防火墙配置使其立即生效。

第五步:验证服务器状态

我们需要验证 NTP 服务器是否已成功与上游时间源同步,并准备好为客户端提供服务。

CentOS服务器时间不准?如何部署NTP服务进行内网同步?

在服务器上,使用 chronyc 工具进行查询:

chronyc sources -v

此命令会列出当前正在使用的时间源,关注 ^* 符号,它表示当前正在同步的源,如果看到带有 ^* 的服务器,说明同步已成功。

还可以使用 chronyc tracking 命令查看更详细的同步信息,如系统时间与标准时间的偏差(Last offset)和估算的误差(RMS offset)。

至此,一台功能完善的 CentOS NTP 服务器已部署完成,内网中的其他客户端只需将其 NTP 配置指向这台服务器的 IP 地址,即可实现整个网络的时间同步。


相关问答 FAQs


A1: chrony 是一个更现代的 NTP 实现,它在多种场景下优于 ntpd,主要优势包括:1)更快的初始同步,尤其适合于经常开关机的虚拟机或容器环境;2)对网络延迟和抖动有更强的适应性,即使在不稳定的网络连接(如移动网络)中也能保持良好性能;3)能够更精确地处理系统时钟频率的微小变化,从 CentOS 7 开始,chrony 已成为默认的 NTP 服务。

Q2: 如何检查内网的一台 Linux 客户端是否成功从我的 NTP 服务器同步了时间?
A2: 在客户端机器上,首先确保其 chrony.conf 文件中 serverpool 指令已指向您的 NTP 服务器 IP,同样可以使用 chronyc sources -v 命令查看,在输出列表中,您应该能看到自己服务器的 IP 地址,并且前面带有 ^*(表示当前同步源)或 ^+(表示备选的合格同步源)符号,运行 timedatectl status 命令,查看 NTP synchronized 字段,如果显示 yes,则表示时间同步已成功。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-14 04:08
下一篇 2025-10-14 04:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信