应将/etc/chrony.conf中默认server行替换为国内稳定源如server ntp1.aliyun.com iburst,并确保iburst参数存在、无语法错误,改后必须执行systemctl restart chronyd生效。

怎么改 /etc/chrony.conf 里的时间服务器
CentOS 7 默认用 chronyd,时间源全靠 /etc/chrony.conf 里 server 行指定。改错地址或格式,chronyd 启动后根本连不上,chronyc sources 会显示空或全是 ^(表示不可达)。
实操建议:
- 用
sudo vi /etc/chrony.conf打开配置文件,删掉默认的pool.ntp.org类行(国内访问常超时) - 替换成稳定、低延迟的国内源,例如:
server ntp1.aliyun.com iburstserver ntp2.aliyun.com iburstserver ntp.ustc.edu.cn iburst -
iburst必须带上——它让 chronyd 启动时发 8 个包,大幅缩短首次同步时间 - 别写错域名,比如
ntp.aliyun.com已弃用,要用ntp1.aliyun.com - 改完保存,必须执行
sudo systemctl restart chronyd,否则新配置不生效
chronyc sources 显示 * 和 + 分别代表什么
运行 chronyc sources 后,每行开头的符号说明当前源是否被真正使用:
-
*:当前正在用的主时间源(只有一个),offset值越小越好(单位毫秒) -
+:备用源,已校验可用,但未被选为主源 -
^:解析失败或网络不通(DNS 问题 / 防火墙拦截 / 地址写错) -
~:服务器响应异常(比如返回了错误时间或拒绝服务)
如果全是 ^,先检查 ping ntp1.aliyun.com 是否通,再确认防火墙是否放行 UDP 123 端口。
为什么改了服务器还不同步?常见卡点
改完配置却没效果,多数不是配置本身问题,而是环境或权限拦住了:
-
chronyd没在运行:systemctl status chronyd看状态,如果是inactive,得先start再enable - SELinux 拦截 UDP 123:
sudo setsebool -P chronyd_can_network on(尤其在 enforcing 模式下) - 硬件虚拟机(如 VMware/VirtualBox)可能禁用了时间同步功能,需在虚拟机设置里勾选“启用客户机时间同步”
- 系统时间偏差太大(>1 秒)时,
chronyd默认只做渐进调整,不会跳变——此时要手动触发:chronyc -a makestep -
/var/lib/chrony/drift文件权限不对(应属chrony:chrony),会导致 drift 校准失效
要不要加 makestep 这一行?
加,但得写对位置和参数。默认配置里这行是注释掉的,生产环境建议显式启用:
- 在
/etc/chrony.conf底部添加:makestep 1.0 -1 - 含义:只要系统时间偏差 ≥1.0 秒,就立刻阶跃校正(而不是慢慢 slew),
-1表示不限制次数 - 不加的话,重启后若 BIOS 时间严重不准(比如虚拟机挂起太久),
chronyd可能花十几分钟才拉回,期间日志、SSL、Kubernetes 组件都可能报错 - 注意:别写成
makestep 1 0或漏掉空格,语法错会导致chronyd启动失败
改完 chrony.conf,systemctl restart chronyd 是必做动作;chronyc tracking 里看 Offset 落在 ±5ms 内才算真正稳住——这个过程通常 2–3 秒,比 ntpd 快得多,但前提是源可靠、网络通、配置没拼错。











