Linux系统时间同步chrony配置详解:新手也能轻松上手
准备工作:检查系统环境并安装 chrony
在开始配置前,先确认你的 Linux 发行版是否已预装 chrony。
大多数主流发行版(如 CentOS 7+、Ubuntu 16.04+)默认使用 chrony 替代传统的 ntp。
- 使用以下命令检查是否已安装:
rpm -qa | grep chrony # 适用于 RHEL/CentOS
dpkg -l | grep chrony # 适用于 Debian/Ubuntu
如果输出为空,说明未安装。
执行安装命令:
# CentOS/RHEL
yum install -y chrony
# Ubuntu/Debian
apt-get install -y chrony
安装完成后,chronyd 服务会自动启动。
你可以通过 systemctl status chronyd 确认运行状态。
编写 chrony 配置文件,让时间源更可靠
chrony 的主配置文件位于 /etc/chrony.conf。
编辑前建议先备份:cp /etc/chrony.conf /etc/chrony.conf.bak。
核心配置项如下:
- 指定时间服务器:推荐使用国内公共 NTP 服务器,如阿里云、腾讯云、国家授时中心。示例:
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
server cn.ntp.org.cn iburst
iburst 参数表示在初始同步时快速发送多个请求,加速首次同步。
- 配置允许客户端访问(可选):如果你想让本机作为时间服务器,添加:
allow 192.168.1.0/24
- 设置日志目录(一般保持默认):
logdir /var/log/chrony
保存文件后,重启 chronyd 服务使配置生效:
systemctl restart chronyd
启动 chronyd 服务并设置开机自启
如果服务未运行,手动启动并设为开机启动:
systemctl start chronyd
systemctl enable chronyd
验证服务已启用:
systemctl is-enabled chronyd
输出应为 enabled。
如何验证时间同步是否正常工作
chrony 提供了两个常用命令来检查同步状态:
chronyc sources -v:显示当前配置的时间源及其状态。
$ chronyc sources -v
210 Number of sources = 3
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp.aliyun.com 2 6 377 11 +159us[+114us] +/- 2475us
^- ntp.tencent.com 2 6 377 12 -123us[-178us] +/- 3051us
^+ cn.ntp.org.cn 3 6 377 10 -485us[-540us] +/- 3127us
^* 表示当前同步的主源,^+ 是候选源,^- 是备用源。
chronyc tracking:显示本地时间与标准时间的偏差。
$ chronyc tracking
Reference ID : 190.93.241.6 (ntp.aliyun.com)
Stratum : 3
Ref time (UTC) : Thu Apr 10 08:32:15 2025
System time : 0.000005849 seconds fast of NTP
Last offset : +0.000126418 seconds
RMS offset : 0.000234567 seconds
Frequency : 14.211 ppm fast
Residual freq : -0.014 ppm
Skew : 0.034 ppm
Root delay : 0.023456789 seconds
Root dispersion : 0.004321987 seconds
重点看 System time 和 Last offset,数值越小说明同步越精准。
如果显示 0.000000 或毫秒级偏差,说明同步正常。
避坑指南:防火墙、权限与日志排查
- 防火墙阻塞 UDP 123 端口:chrony 默认使用 NTP 协议(UDP 123)。如果时间同步失败,检查防火墙是否允许出站 UDP 123。临时关闭防火墙测试:
systemctl stop firewalld
确认问题后,添加规则放行:
firewall-cmd --permanent --add-port=123/udp
firewall-cmd --reload
- 时间差过大导致同步失败:如果系统时间与标准时间相差超过 1000 秒,chrony 默认不会自动调整。此时可以手动强制同步一次:
chronyc -a 'burst 4/4'
chronyc -a makestep
- 日志查看:同步异常时,查看
/var/log/chrony/measurements.log或messages日志:
tail -f /var/log/chrony/measurements.log
tail -f /var/log/messages | grep chrony
常见错误如 Cannot connect to server,通常就是防火墙或网络不通。
如果你正在处理 Linux 系统时间同步 chrony 配置,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
掌握 chrony 后,服务器的定时任务、日志时间戳将不再出现偏差,这是运维基本功之一。