在现代IT基础设施中,时间的精确同步是确保系统稳定、数据一致性和安全性的基石,无论是分布式数据库的事务处理、日志文件的顺序分析,还是集群节点间的协同工作,都依赖于一个统一、准确的时间标准,网络时间协议(NTP)正是实现这一目标的关键技术,在CentOS操作系统上配置一台NTP服务器,可以为整个内部网络提供可靠的时间源,减少对外部公共时间服务的依赖,增强网络的安全性和自主可控性,本文将以当前CentOS主流版本(如7、8、9)为例,详细介绍如何使用chrony
软件包来配置一台高效、稳定的NTP服务器。
准备工作
在开始配置之前,请确保您已经具备以下条件:
- 一台已安装CentOS操作系统的服务器,并拥有
sudo
或root
权限。 - 服务器能够访问互联网,以便初次同步上游时间服务器。
- 了解服务器的静态IP地址以及允许访问此NTP服务的客户端网段。
我们可以检查系统当前的时间和同步状态,使用以下命令:
timedatectl status
此命令会显示系统时间、时区以及是否已启用NTP同步,在全新安装的系统上,NTP synchronized
一项通常显示为no
。
安装Chrony
从CentOS 7开始,chrony
成为了默认的NTP实现,相较于传统的ntpd
,它在处理网络不稳定、虚拟机环境以及快速同步方面表现更优,因此是当前推荐的选择。
使用dnf
(适用于CentOS 8及更高版本)或yum
(适用于CentOS 7)来安装chrony
:
# For CentOS 8/9 sudo dnf install chrony -y # For CentOS 7 sudo yum install chrony -y
安装过程会自动完成,并将chrony
服务配置为开机自启。
配置Chrony服务
chrony
的主配置文件位于/etc/chrony.conf
,在修改之前,建议先备份原始文件:
sudo cp /etc/chrony.conf /etc/chrony.conf.bak
使用您喜欢的文本编辑器(如vi
或nano
)打开配置文件:
sudo vi /etc/chrony.conf
配置文件中的几个关键指令如下表所示,理解它们是正确配置NTP服务器的核心。
指令 | 作用 | 示例/说明 |
---|---|---|
pool / server | 指定上游时间服务器。pool 会从一组服务器名中自动解析多个可用服务器。 | pool 2.centos.pool.ntp.org iburst server 0.pool.ntp.org iburst iburst 选项可以加速初次同步。 |
allow | 允许特定网络或主机向此服务器查询时间,这是控制客户端访问的关键。 | allow 192.168.1.0/24 表示允许 168.1.0 网段的所有客户端访问。 |
local stratum | 当所有上游服务器都无法访问时,允许本机作为时间源,并设定其层级。 | local stratum 10 层级数字越小,时间精度越高,内部NTP服务器通常设为10。 |
driftfile | 指定一个文件用于记录系统时钟的频率漂移,帮助chrony 在断网后也能保持时间精度。 | driftfile /var/lib/chrony/drift |
logdir | 指定日志目录。 | logdir /var/log/chrony |
配置步骤:
配置上游服务器:默认配置文件已经包含了一些公共NTP池服务器(如
pool 2.centos.pool.ntp.org
),您可以根据需要保留或替换为更接近您地理位置的公共NTP池,例如pool.cn.pool.ntp.org
。允许客户端访问:找到
#allow 192.168.0.0/16
这一行(可能被注释掉),取消注释并将其修改为您实际的客户端网段,如果您的内网网段是0.0.0/24
,则应修改为:allow 10.0.0.0/24
如果您希望允许任何IPv4地址访问,可以使用
allow all
,但这在生产环境中不推荐。启用本地时间源(可选但推荐):为了在网络中断时,服务器仍能为内网提供时间服务,可以取消
#local stratum 10
这一行的注释:local stratum 10
修改完成后,保存并退出编辑器。
启动服务与配置防火墙
配置文件修改完毕后,需要启动并设置chronyd
服务开机自启。
sudo systemctl start chronyd sudo systemctl enable chronyd
检查服务状态以确保其正常运行:
sudo systemctl status chronyd
如果看到active (running)
的绿色字样,说明服务已成功启动。
必须在防火墙中开放NTP服务所使用的UDP 123端口,CentOS默认使用firewalld
。
sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload
--permanent
参数表示规则永久生效,reload
则是重新加载防火墙配置使其立即生效。
验证服务器状态
服务器配置完成后,我们需要验证它是否正常工作。
查看上游同步源:
chronyc sources -v
此命令会列出当前配置的上游时间服务器,注意
^
符号表示服务器,符号表示当前正在同步的源。查看时间同步信息:
chronyc tracking
这会显示详细的同步状态,包括
Stratum
(层级)、Reference ID
(参考ID)、以及系统时间与标准时间的偏移量。再次使用
timedatectl
检查:timedatectl status
NTP synchronized
一项应该显示为yes
,表示时间同步已成功建立。
至此,一台功能完善的CentOS NTP服务器就已配置完成,网络内的其他客户端只需将其NTP设置指向这台服务器的IP地址,即可实现整个网络的时间同步。
相关问答FAQs
Q1: chrony
和传统的ntpd
有什么区别?为什么现在推荐使用chrony
?
A:chrony
和ntpd
都是实现NTP协议的软件,但它们在设计理念和适用场景上有所不同。chrony
是后起之秀,主要优势在于:
- 快速同步:
chrony
通常能在几分钟或几秒内完成时间同步,而ntpd
可能需要数小时。 - 适应性强:它对网络连接不稳定(如间歇性断网)和虚拟机环境(时钟频率可能变化)有更好的适应性和容忍度。
- 精确性:在大多数情况下,
chrony
能提供与ntpd
相当甚至更高的时间精度。
由于这些优点,特别是对于现代云环境和虚拟化场景,chrony
被选为CentOS 7+等现代Linux发行版的默认NTP客户端/服务器,因此是当前配置NTP服务的首选。
Q2: 如果NTP服务器无法连接到任何外部时间源,它还能为内网客户端提供时间服务吗?
A: 可以,但这需要在配置文件中明确启用,通过在/etc/chrony.conf
中设置local stratum
指令(例如local stratum 10
),您可以告诉chrony
,即使失去了所有上游服务器的连接,也要将本机时钟作为有效的时间源,这台服务器会进入“孤立模式”,它自身的时钟成为“本地主时钟”,虽然其时间精度和可靠性(层级)会下降(层级数字变大),但它仍然能够响应内网客户端的时间请求,为隔离网络或网络中断期间提供一个基本的时间基准,这对于维持内部系统的基本运作至关重要。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/9146.html