CentOS 7如何安装配置NTP服务并同步时间?

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

使用文本编辑器(如vinano)打开配置文件进行编辑:

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服务器池:

CentOS 7如何安装配置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

输出结果类似如下:

CentOS 7如何安装配置NTP服务并同步时间?

     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方法依然是完全有效且广泛使用的,尤其是在对传统环境有依赖的场合。

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

(0)
热舞的头像热舞
上一篇 2025-10-24 05:25
下一篇 2024-06-23 16:40

相关推荐

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信