在网络世界中,时间的精准同步是确保系统稳定运行、服务可靠交付和安全审计有效性的基石,无论是分布式数据库的事务一致性、日志文件的时序分析,还是证书的时效性验证,都离不开一个统一、准确的时间源,在众多 Linux 发行版中,CentOS 因其稳定性和广泛的企业级应用而备受青睐,本文将详细介绍如何在 CentOS 系统上配置一台 NTP(Network Time Protocol)服务器,为整个网络提供精确的时间同步服务。
准备工作
在开始配置之前,请确保您已经具备以下条件:
安装 NTP 服务软件
CentOS 的不同版本默认使用的时间同步软件有所不同,在 CentOS 7 中,传统的是标准选择;而在 CentOS 8 及之后的版本中,更现代、更高效的成为了默认的时间同步服务,两者都能出色地完成 NTP 服务器的工作,但在处理网络不稳定和虚拟机环境方面表现更优,我们将分别介绍它们的安装。
对于 CentOS 7:
CentOS 7 默认可能没有安装,您可以使用包管理器进行安装:
sudo YUM install ntp -y
对于 CentOS 8 / Stream / RHEL 9:
在这些较新的系统中,推荐使用,它通常默认已安装,如果没有,可以使用进行安装:
sudo dnf install chrony -y
为了方便对比,下表列出了和的一些主要区别:
| 特性 | ||
|---|---|---|
| 默认系统 | CentOS 8+ / RHEL 8+ / Debian 10+ | |
| 同步速度 | 初始同步较慢 | 初始同步非常快 |
| 网络适应性 | 适合稳定的网络环境 | 对网络延迟和中断适应性极强 |
| 时钟精度 | 非常高 | 同样非常高 |
| 配置文件 |
/etc/ntp.conf
|
/etc/chrony.conf
|
| 推荐场景 | 传统、稳定的物理服务器 | 现代服务器、虚拟机、容器、网络不稳定环境 |
配置 NTP 服务器
安装完成后,核心步骤在于编辑配置文件,定义上游时间源并设置访问控制规则。
配置 ntpd (CentOS 7)
的主配置文件是
/etc/ntp.conf
,在编辑前,建议先备份原文件:
sudo cp /etc/ntp.conf /etc/ntp.conf.bak
使用文本编辑器(如或)打开配置文件:
sudo vi /etc/ntp.conf
配置上游服务器
在文件中找到开头的行,这些行定义了您的服务器将从哪里获取时间,默认情况下,CentOS 可能已经配置了一些
centos.pool.ntp.org
这样的服务器池,您可以保留它们,或者替换为您偏好的公共 NTP 服务器池,例如中国的 NTP 服务器池
cn.pool.ntp.org
。
# Use public servers from the pool.ntp.org project.# Please consider joining the pool (0.cn.pool.ntp.org iburstserver 1.cn.pool.ntp.org iburstserver 2.cn.pool.ntp.org iburstserver 3.cn.pool.ntp.org iburst
参数是一个很好的实践,它能在服务启动时快速进行多次时间同步请求,以加快初次同步的速度。
设置访问控制
这是至关重要的一步,它决定了哪些客户端可以向您的 NTP 服务器请求时间同步,使用关键字来定义规则。
# 授予本地机器所有权限(包括修改时间)restrict 127.0.0.1restrict ::1# 允许局域网(192.168.1.0/24)内的客户端查询和同步时间,# 但禁止他们修改服务器的配置或作为对等节点restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
配置 chrony (CentOS 8+)
的主配置文件是
/etc/chrony.conf
,同样,建议先备份:
sudo cp /etc/chrony.conf /etc/chrony.conf.baksudo vi /etc/chrony.conf
配置上游服务器
与类似,使用或指令。指令会自动解析域名下的多个服务器,更具弹性。
# Use public servers from the pool.ntp.org project.pool 0.cn.pool.ntp.org iburstpool 1.cn.pool.ntp.org iburstpool 2.cn.pool.ntp.org iburstpool 3.cn.pool.ntp.org iburst
设置访问控制
使用指令来控制客户端访问。
# Allow NTP client access from local network.allow 192.168.1.0/24
这一行表示允许
168.1.0/24
网段的所有设备向此服务器同步时间。
启用本地时钟源(可选)
如果您的服务器与外网断开,可以将其自身的硬件时钟作为时间源,继续为内网提供服务,尽管精度会逐渐下降,取消以下行的注释即可启用:
# Serve time even if not synchronized to a time source.local stratum 10
启动服务并设置开机自启
配置文件修改完毕后,就可以启动相应的服务,并将其设置为开机自启动。
对于 ntpd (CentOS 7):
sudo systemctl start ntpdsudo systemctl enable ntpd
对于 chrony (CentOS 8+):
sudo systemctl start chronydsudo systemctl enable chronyd
您可以使用
systemctl status ntpd
或
systemctl status chronyd
来检查服务是否正在运行。
配置防火墙
NTP 服务使用 UDP 协议的 123 端口,如果您的服务器启用了防火墙(默认启用的),必须开放此端口。
sudo firewall-cmd --add-service=ntp --permanentsudo firewall-cmd --reload
--permanent
参数表示规则永久生效,是重新加载防火墙配置使其生效。
验证与监控
服务器运行后,如何确认它是否正常工作?
对于 ntpd,使用命令:
输出结果会列出所有配置的上游服务器,您需要关注以下标记:
对于 chrony,使用
chronyc sources -v
命令:
chronyc sources -v
输出同样会列出上游服务器,关注、 等符号:
您还可以使用
chronyc tracking
命令查看更详细的系统时间同步状态信息。
至此,您的 CentOS NTP 服务器已经配置完成,并开始为网络中的其他设备提供精准的时间同步服务。
相关问答 FAQs
问题 1:在新的 CentOS 系统上,我应该选择还是?
解答: 对于大多数现代部署场景,尤其是在 CentOS 8 及更新版本上,强烈推荐使用,主要原因有三点:是这些新版本的默认时间同步工具,与系统集成度更高;在处理网络连接不稳定(如虚拟机休眠唤醒、网络频繁中断)方面表现远超,它能更快地恢复同步;的初始同步速度非常快,通常在几秒钟内就能完成,如果您在维护一个基于 CentOS 7 的、网络环境极其稳定的传统系统,依然是一个非常可靠和成熟的选择。
问题 2:我的客户端无法从 NTP 服务器同步时间,应该如何排查?
解答: 客户端同步失败通常涉及多个环节,可以按照以下步骤进行排查:














发表评论