CentOS 8 安装配置 chrony 时间同步服务指南

在 CentOS 8 上安装配置 chrony 时间同步服务:dnf 安装、配置 /etc/chrony.conf 上游时钟源与本地时钟(allow/local stratum)、systemctl 启动、chronyc sources/tracking/makestep 状态检查,以及搭建内网 NTP 服务器减少外网依赖。chrony 4.1 实测

时间同步与服务NTPchrony时间同步2026/09/29

CentOS 8 安装配置 chrony 时间同步服务指南

目标:在 CentOS 8 上部署 chronyd,同步系统时间到上游 NTP 服务器,并支持搭建内网 NTP 服务器供其他节点使用。chrony 是 RHEL 8 / CentOS 8 的默认与推荐时间同步方案,已取代传统的 ntpd。本文在 CentOS 8(chrony 4.1)实测。

环境信息

  • 系统:CentOS Linux 8(x86_64)
  • 软件:chrony 4.1(chronyd (chrony) version 4.1)
  • 配置文件:/etc/chrony.conf
  • 服务名:chronyd
  • 默认上游:pool 2.centos.pool.ntp.org iburst

💡 CentOS 8 未随系统预装 chrony(rpm -q chrony 提示未安装),需通过 dnf 安装。chronyd 二进制位于 /usr/sbin/chronyd,部分环境需以 root 加 /usr/sbin 调用。


一、安装 chrony

sudo dnf install -y chrony

安装完成后确认版本与配置文件:

chronyd --version        # chronyd (chrony) version 4.1 (...)
ls /etc/chrony.conf

说明:CentOS 8 基础仓库即提供 chrony 包,无需额外开启 EPEL;若 dnf install chrony 提示仓库问题,先执行 dnf makecache 刷新缓存。


二、配置上游时间源

编辑 /etc/chrony.conf。默认仅一行上游 pool:

pool 2.centos.pool.ntp.org iburst

可按需改为国内可达的时钟源,或追加多条 server:

pool ntp.aliyun.com iburst
pool cn.pool.ntp.org iburst
server 202.120.2.101 iburst

常用指令含义:

指令作用
pool <域名> iburst指定上游时钟池,iburst 使首次同步快速建立
server <IP/域名> iburst指定单个上游服务器
allow <网段>允许向哪些网段提供时间服务(内网 NTP Server)
local stratum 10上游不可达时,用本机时钟作为低层级时间源兜底
makestep 1.0 3首次 3 次之内允许大步进校准

三、启动并开机自启

sudo systemctl enable --now chronyd
systemctl is-active chronyd   # active
sudo systemctl restart chronyd   # 修改配置后重启生效

💡 enable --now 等价于 enable + start 两步:设置开机自启并立即启动。


四、检查同步状态(NTP 同步状态检查)

4.1 查看同步源

chronyc sources -v

回显中每行源开头的标记含义:

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
  • ^*:当前选定的最佳同步源(箭头指向即实际在用的上游)
  • ^+:可组合的候选源
  • ^?:暂不可用(如容器/隔离网络下外网源不可达)

4.2 查看跟踪信息

chronyc tracking

回显(示例,上游可达时 Stratum 会体现上游层级):

Reference ID    : 7F7F0101 ()
Stratum         : 10
Ref time (UTC)  : Tue Sep 29 05:46:11 2026
System time     : 0.000000000 seconds fast of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 18.206 ppm slow

Stratum 表示本机层级。接入公开上游一般为 2~3;无上游时若配置了 local stratum 10 则显示 10,此时本机作为内网时间源供内网节点同步。容器/隔离网络如果外网源不可达、又设了 local stratum 10,就会以上面这种本地时钟供时。

4.3 立即校准

chronyc makestep

正常回显 200 OK。一般 chrony 会在几分钟内逐步校准;需要立刻步进时间时用该命令(前提是已在配置中启用 makestep)。


五、搭建内网 NTP 服务器

假设内网 NTP 服务器 IP 为 192.168.1.10,内网网段 192.168.1.0/24。

5.1 服务端配置

在 /etc/chrony.conf 追加上游与内网网段授权:

pool 2.centos.pool.ntp.org iburst
allow 192.168.1.0/24
local stratum 10
  • allow:允许 192.168.1.0/24 网段的客户端向本机请求时间;
  • local stratum 10:即使外网不可达,也以本机为兜底时间源,保证内网客户端可同步(不会因无上游而停供)。

重启服务:

sudo systemctl restart chronyd

5.2 放行防火墙

sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

验证 UDP 123 端口已监听:

ss -lunp | grep ':123'

5.3 客户端指向内网服务器

在其他节点(同样装 chrony)上,注释掉外网 pool,指向内网服务器:

# pool 2.centos.pool.ntp.org iburst
server 192.168.1.10 iburst

重启客户端 chronyd 后检查:

sudo systemctl restart chronyd
chronyc sources -v      # 应看到 ^* 指向 192.168.1.10
chronyc tracking

这样内网所有节点统一从 192.168.1.10 取时,仅该服务器需访问外网,减少外网依赖并保证内网时间一致。


六、常见问题

  • chronyc sources 全部 ^?:上游不可达或 NAT 阻断 UDP 123,检查外网可达性;内网场景改用 server <内网NTP> iburst + local stratum 10。
  • % timed out / 时间未更新:API 或管理命令超时,先 systemctl status chronyd 确认进程在跑。
  • chronyd: command not found:CentOS 8 未预装,先 dnf install -y chrony。
  • 开机不自启:执行 systemctl enable --now chronyd 或检查 systemctl is-enabled chronyd。

七、卸载

sudo dnf remove -y chrony
CentOS 8 安装配置 chrony 时间同步服务指南 - Quzuo