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