在复杂的网络环境中,确保所有服务器和设备的时间保持精确同步至关重要,时间同步对于日志分析、分布式系统协作、安全审计以及数据库事务处理等场景都是不可或缺的基础设施,网络时间协议(NTP)是用于同步网络中计算机时间的标准协议,本文将详细介绍如何在 CentOS 系统上部署一台稳定可靠的 NTP 服务器,为内网其他设备提供精准的时间源。
环境准备
在开始之前,请确保您具备以下条件:
- 一台已安装的 CentOS 7 或 CentOS 8 系统。
- 拥有
sudo
或root
权限的用户账户。 - 服务器能够访问互联网,以便与上游的公共 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
以下是配置文件中需要关注和修改的关键项:
配置上游时间服务器:
文件中默认已经配置了几台公共 NTP 服务器池,这些服务器用于将我们自己的服务器与标准时间同步,使用pool
指令可以自动选择响应速度最佳的服务器。pool 2.centos.pool.ntp.org iburst
您可以根据地理位置选择更近的 NTP 池,例如使用
pool.ntp.org
。允许客户端同步:
默认情况下,chrony
不会响应来自网络的同步请求,要使其作为 NTP 服务器为内网提供服务,必须使用allow
指令明确指定允许的客户端网段。
要允许168.1.0/24
网段的所有客户端访问,添加或修改以下行:allow 192.168.1.0/24
如果希望允许所有客户端,可以使用
allow all
,但这在生产环境中不推荐,应尽量限制访问范围。其他关键参数:
下表小编总结了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 服务器是否已成功与上游时间源同步,并准备好为客户端提供服务。
在服务器上,使用 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
文件中 server
或 pool
指令已指向您的 NTP 服务器 IP,同样可以使用 chronyc sources -v
命令查看,在输出列表中,您应该能看到自己服务器的 IP 地址,并且前面带有 ^*
(表示当前同步源)或 ^+
(表示备选的合格同步源)符号,运行 timedatectl status
命令,查看 NTP synchronized
字段,如果显示 yes
,则表示时间同步已成功。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复