在CentOS系统中搭建NTP(Network Time Protocol)服务器是实现时间同步的重要手段,尤其对于需要精确时间记录的服务器集群或分布式系统而言,确保所有设备时间一致至关重要,NTP服务器通过与其他时间源同步,为局域网内的其他设备提供准确的时间服务,避免因时间偏差导致的数据不一致、日志混乱或安全认证问题,以下将详细介绍在CentOS系统上配置NTP服务器的完整步骤、关键参数及注意事项。

安装NTP服务
确保系统已更新至最新状态,然后安装NTP软件包,在CentOS 7及更高版本中,推荐使用chrony作为NTP服务实现,其相比传统ntpd在动态网络环境下同步效率更高、资源占用更少;若使用CentOS 6或更早版本,则需安装ntp包,以CentOS 7为例,执行以下命令:
sudo yum update -y sudo yum install chrony -y
安装完成后,启动chronyd服务(即NTP服务)并设置开机自启:
sudo systemctl start chronyd sudo systemctl enable chronyd sudo systemctl status chronyd # 确认服务运行状态
配置NTP服务器
NTP服务的主配置文件为/etc/chrony.conf,需根据实际需求修改该文件,核心配置包括时间源、允许同步的客户端网络范围及本地时钟参数等,以下是关键配置项说明及示例:
时间源配置
在chrony.conf中,通过server或pool指令指定上游时间源。server用于指定特定时间服务器,pool用于指定时间服务器池(推荐使用公共NTP池,如pool.ntp.org)。

# 使用公共NTP池(推荐) pool pool.ntp.org iburst # iburst参数加快初始同步速度 # 指定特定时间服务器(如国家授时中心服务器) server 210.72.145.44 iburst server 133.100.9.2 iburst
iburst参数允许在服务启动时快速发送多个时间请求,缩短同步时间。
允许客户端同步
若需为局域网内其他设备提供时间服务,需通过allow指令指定允许同步的客户端IP网段,允许192.168.1.0/24网段内的设备同步:
allow 192.168.1.0/24
若需允许所有客户端(不推荐,存在安全风险),可使用allow all。
本地时钟参数
通过local stratum配置本地时钟的层级(stratum),当没有外部时间源时,本地时钟可作为备用时间源,层级值需大于0(通常设为10):

local stratum 10
其他优化参数
maxdistance:设置与时间源的最大时间偏差(秒),超过此值将拒绝同步,默认16秒。minpoll/maxpoll:设置同步请求的最小/最大间隔(2的幂次方秒,如minpoll 4表示最小间隔16秒)。driftfile:指定本地时钟频率偏移文件的路径,用于在没有外部时间源时保持时间准确,默认/var/lib/chrony/drift。
配置完成后,保存文件并重启chronyd服务使配置生效:
sudo systemctl restart chronyd
验证NTP服务状态
检查同步状态
使用chronyc sources命令查看当前同步的时间源及状态:
chronyc sources
输出结果中,^表示当前使用的时间源,MS表示与时间源的同步状态(表示同步正常,表示可用但未同步)。
查看时间同步详情
chronyc tracking命令可显示与时间源的同步详情,包括当前时间偏差、频率偏差等:
chronyc tracking
测试客户端同步
在客户端设备上安装chrony或ntp,配置服务器IP(如server 192.168.1.100 iburst),然后执行ntpq -p或chronyc sources查看是否与服务器同步,若服务器时间准确,客户端应能快速同步成功。
防火墙配置
若服务器启用了防火墙(如firewalld),需开放NTP服务的UDP 123端口,允许客户端访问:
sudo firewall-cmd --permanent --add-service=ntp sudo firewall-cmd --reload
常见问题排查
- 客户端无法同步:检查服务器防火墙是否开放123端口,客户端配置的服务器IP是否正确,
chronyc sources确认服务器是否有有效时间源。 - 时间同步偏差大:检查
maxdistance参数是否过小,或上游时间源稳定性,可通过chronyc sourcestats查看各时间源的统计信息。
相关问答FAQs
Q1: 如何将CentOS系统的NTP服务从ntpd切换为chrony?
A1: 首先卸载ntp包(sudo yum remove ntp -y),然后安装chrony(sudo yum install chrony -y),将/etc/chrony.conf中的时间源和客户端允许配置按需修改,启动并启用chronyd服务(sudo systemctl start chronyd; sudo systemctl enable chronyd),最后检查chronyc sources确认同步状态,确保旧ntpd的配置不会冲突(如/etc/ntp.conf可备份或删除)。
Q2: CentOS NTP服务器如何设置本地时钟作为备用时间源?
A2: 在/etc/chrony.conf中添加local stratum 10指令(stratum值需大于0,10为推荐值),并确保allow指令配置了允许同步的客户端网段,当外部时间源不可用时,服务器将使用本地时钟为客户端提供服务,可通过chronyc tracking查看本地时钟状态(Local time字段显示本地时钟偏差)。
