Linux系统时间同步chrony配置校准实操教程
为什么服务器需要时间同步
服务器时间不准会直接影响日志记录、定时任务执行、认证服务和数据库主从复制。
Linux系统中,chrony是现代发行版推荐的时间同步工具,相比传统ntpd同步速度更快、对网络抖动适应性更好。
本文带你从零开始完成chrony的配置与校准。
安装chrony
大多数Linux发行版默认不安装chrony,需要手动装。
不同包管理器的命令不同:
- Debian/Ubuntu:
sudo apt update && sudo apt install chrony -y - CentOS/RHEL 7+:
sudo yum install chrony -y - Fedora:
sudo dnf install chrony -y
安装完成后,使用chronyd -v查看版本,确认装好。
如果之前装过ntpd,建议先停用并禁用ntpd服务,避免端口冲突。
配置chrony的核心文件
配置文件路径:/etc/chrony/chrony.conf(部分发行版可能是/etc/chrony.conf)。
打开后重点修改以下几项:
指定上游时间服务器
找到pool或server开头的行,替换为可靠的时间源。
国内用户建议使用阿里云或腾讯云的NTP服务:
# 阿里云NTP(推荐)
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
# 或使用其他公共NTP
server cn.pool.ntp.org iburst
iburst参数让chrony在首次同步时快速发送多个包,缩短校准时间。
允许本地客户端(可选)
如果这台服务器要给局域网内其他设备提供时间服务,需添加allow指令:
# 允许整个/24网段
allow 192.168.1.0/24
加速时间跳跃调整
对于刚开机或时间偏差很大的情况,建议开启makestep:
# 允许在启动时立即调整超过100秒的偏差
makestep 100 3
这样chrony在启动后如果有三次以上的同步周期且偏差大于100秒,就会直接跳跃调整,而不是逐步调慢。
保存配置并重启服务
修改完配置文件后,执行以下命令使配置生效:
sudo systemctl restart chronyd
sudo systemctl enable chronyd
验证时间同步是否正常
查看同步源状态
使用chronyc sources -v列出当前的时间源。
如果输出中^*(星号)表示当前同步的源,^+表示候选源,^-表示不可用。
正常情况应该有至少一个^*。
查看时间偏移详情
chronyc tracking显示系统时间与参考源的偏差,例如:
Reference ID : 123.45.67.89 (ntp.aliyun.com)
Stratum : 3
Ref time (UTC) : Thu Mar 20 05:00:00 2025
System time : 0.000123456 seconds slow of NTP time
Last offset : -0.000001023 seconds
RMS offset : 0.000123456 seconds
如果System time后面的偏差在毫秒甚至微秒级,说明同步正常。
查看当前时间
直接用date命令确认系统时间是否接近标准时间。
也可以对比timedatectl输出中的RTC time,确保硬件时钟(RTC)也正确。
常见问题与避坑说明
防火墙阻止NTP通信
time同步使用UDP 123端口。
如果启用了firewalld或iptables,需要放行:
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
SELinux导致chrony无法访问网络
CentOS/RHEL默认开启SELinux,可能会限制chrony读取配置文件或解析域名。
检查/var/log/audit/audit.log,如果有chronyd被deny的记录,尝试临时关闭SELinux测试:sudo setenforce 0。
如果确认是SELinux问题,可以调整完整策略或永久关闭(生产环境慎用)。
chrony服务启动失败
先检查配置文件语法:sudo chronyd -Q -f /etc/chrony/chrony.conf,如果没有错误输出说明配置正确。
另外注意/var/run/chrony目录和/var/lib/chrony目录的权限,运行chrony用户需要写入权限。
时间始终无法同步
排查步骤:
- 手动用
chronyd -d -f /etc/chrony/chrony.conf前台运行查看详细日志。 - 用
dig ntp.aliyun.com或nslookup ntp.aliyun.com检查DNS解析是否正常。 - 用
telnet ntp.aliyun.com 123测试网络连通性(部分环境telnet不支持UDP,改用nc -vuz ntp.aliyun.com 123)。
写在最后
chrony配置并不复杂,关键在于选对时间源、确认网络通畅、放行防火墙。
完成上述操作后,建议定期用chronyc sources和chronyc tracking检查同步状态。
如果你用的是宝塔面板,也可以在面板“系统”设置里直接开启chrony服务,不过手动配置能更灵活。
遇到问题先看系统日志journalctl -u chronyd,大部分报错都能找到线索。