在服务器管理和维护领域,时间的精确同步是一项基础且至关重要的任务,无论是日志审计、分布式系统协调、数据库事务排序,还是安全认证,都依赖于一个统一、准确的时间源,网络时间协议(NTP)正是为解决这一问题而设计的标准协议,它通过分层的时间服务器体系,将计算机的时间与高精度的时间源(如原子钟、GPS)保持同步,在广泛使用的CentOS 7服务器上,正确配置NTP服务是保障系统稳定运行的关键一步,本文将详细介绍在CentOS 7上安装、配置和管理NTP服务的完整流程。

第一步:安装NTP软件包
CentOS 7的官方软件源中包含了NTP服务守护进程ntpd,在开始配置之前,首先需要确保该软件包已经安装,可以通过yum包管理器轻松完成安装,打开终端,执行以下命令:
sudo yum install ntp -y
这条命令会自动下载并安装NTP服务及其依赖项,参数-y表示在安装过程中自动回答“yes”,无需手动确认,安装完成后,系统便具备了运行NTP服务的基础能力。
第二步:配置NTP服务
NTP服务的核心配置文件位于/etc/ntp.conf,在修改此文件之前,建议先备份原始配置文件,以防意外:
sudo cp /etc/ntp.conf /etc/ntp.conf.bak
使用文本编辑器(如vi或nano)打开配置文件进行编辑:
sudo vi /etc/ntp.conf
配置文件主要包含两个关键部分:访问控制限制(restrict)和上游时间服务器(server)。
配置访问控制(restrict)
restrict指令用于控制其他主机对本地NTP服务的访问权限,增强安全性,默认配置通常已经包含了一些基本规则,但理解其含义非常重要。
# 1. 允许本地主机所有操作
restrict 127.0.0.1
restrict ::1
# 2. 对默认客户端的限制规则
restrict default kod nomodify notrap nopeer noquery 这里的参数含义如下:
| 参数 | 含义 |
|---|---|
kod | 向恶意访问者发送Kiss-o-Death(KoD)包。 |
nomodify | 禁止客户端修改服务器端的配置。 |
notrap | 防止控制消息协议陷阱。 |
nopeer | 禁止与服务器建立对等连接。 |
noquery | 禁止客户端查询服务器状态信息。 |
如果希望允许特定网段内的客户端同步此服务器的时间,可以添加如下规则,允许168.1.0/24网段:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 配置上游时间服务器(server)
server指令用于指定本地ntpd服务将要同步的上游时间服务器,CentOS 7默认配置文件中通常包含一些CentOS项目维护的NTP服务器,为了获得更好的性能和地理邻近性,推荐使用pool.ntp.org项目提供的动态服务器池。
可以将默认的server行注释掉(在行首添加),并添加以下公共NTP服务器池:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst 或者,根据你的地理位置选择更近的池,例如亚洲地区的服务器:
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst iburst参数是一个非常有用的选项,它能让ntpd在刚启动时,以更快的频率(通常是前几个包间隔2秒)向服务器发送请求,从而加速初始同步过程,一旦同步完成,便会恢复正常的时间间隔。
第三步:启动并启用NTP服务
配置文件修改完毕后,就可以启动NTP守护进程了,在CentOS 7中,使用systemctl来管理服务。
sudo systemctl start ntpd
为了确保NTP服务在服务器重启后能够自动运行,需要将其设置为开机自启:
sudo systemctl enable ntpd
可以使用以下命令检查服务的运行状态:
sudo systemctl status ntpd
如果状态显示为active (running),则表示NTP服务已成功启动。
第四步:配置防火墙
NTP服务使用UDP协议的123端口,如果服务器上启用了firewalld防火墙,必须开放此端口,以允许NTP流量通过。
# 开放NTP服务(123/udp端口) sudo firewall-cmd --add-service=ntp --permanent # 重新加载防火墙规则使配置生效 sudo firewall-cmd --reload
--permanent参数表示此规则将永久生效,即使重启防火墙或服务器也不会丢失。
第五步:验证与监控
NTP服务启动后,需要一段时间(通常为5-10分钟)来完成与上游服务器的同步,我们可以使用以下几种工具来监控同步状态。
使用ntpq命令
ntpq -p是监控NTP同步状态最常用、最直观的命令。
ntpq -p
输出结果类似如下:

remote refid st t when poll reach delay offset jitter
===============================================================================
*ntp1.example.com .POOL. 16 p - 64 0 0.000 0.000 0.000
+ntp2.example.com 192.168.1.1 2 u 64 128 377 0.123 -0.456 0.234 列的含义如下:
remote:上游服务器的名称,前面的表示当前正在同步的主源,表示候选的备用源。refid:上游服务器引用的更上层服务器ID。st:Stratum(层级),表示服务器的层级,层级1是直接连接硬件时钟的顶级服务器,数值越小,精度越高。t:类型(u=unicast,m=multicast,l=local,b=broadcast)。when:上次从该服务器收到查询包的时间(秒)。poll:轮询间隔(秒),该值会动态调整。reach:一个8位进制数,表示最近8次查询的可达性记录,377(八进制)表示全部成功。delay:网络延迟(毫秒)。offset:本地时间与服务器时间的偏差(毫秒),此值越接近0越好。jitter:抖动值,表示网络延迟的波动情况,越小越好。
使用timedatectl命令
timedatectl是systemd提供的系统时间管理工具,它可以清晰地显示NTP同步状态。
timedatectl status
输出结果中,关注NTP synchronized字段,如果其值为yes,则表示时间同步已经成功。
Local time: Tue 2025-10-24 10:30:00 CST
Universal time: Tue 2025-10-24 02:30:00 UTC
RTC time: Tue 2025-10-24 02:30:00
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a 相关问答FAQs
问题1:NTP服务启动后,为什么我的服务器时间没有立刻同步?
解答: 这是正常现象,NTP协议被设计为一种温和、渐进的时间调整机制,而不是粗暴地直接跳变,这样做是为了避免对系统上正在运行的应用程序(如数据库)造成冲击。ntpd服务启动后,会先通过iburst模式快速与上游服务器沟通,然后进入一个持续观察和微调的阶段,这个过程通常需要几分钟到十几分钟不等,你可以通过ntpq -p命令观察reach列,当它达到377(八进制),并且offset(偏差)值逐渐趋近于0时,说明同步过程正在进行。timedatectl命令显示NTP synchronized: yes则标志着同步已成功建立。
问题2:ntpd 和 chrony 应该选择哪个?它们有什么区别?
解答: chrony是另一个流行的NTP实现,从CentOS 7开始,chrony实际上就已经被设置为默认的时间同步服务(安装系统时选择默认配置),对于大多数现代应用场景,尤其是在虚拟机、容器或网络连接不稳定的环境中,推荐使用chrony。
主要区别在于:
- 同步速度:
chrony的初始同步速度通常比ntpd快得多,它能在几秒钟内完成大幅度的时钟调整。 - 网络适应性:
chrony对间歇性网络连接(如笔记本电脑)和高延迟网络有更好的适应能力,即使长时间断网后也能快速恢复同步。 - 虚拟机性能:在虚拟化环境中,虚拟时钟可能会出现漂移,
chrony对此有专门的优化,表现更佳。 - 配置复杂度:
chrony的配置文件(/etc/chrony.conf)相对更简洁直观。
如果你没有特殊的历史兼容性要求,在新的CentOS 7及以上版本的服务器上,直接使用默认的chrony会是更简单、更高效的选择,本文介绍的ntpd方法依然是完全有效且广泛使用的,尤其是在对传统环境有依赖的场合。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复