Linux 时间同步:chrony 配置与排错
发布时间:2025-12-17 18:39       
更新时间:2025-12-17 20:37
服务器时间差几分钟,看着是小事,出的事故却都不小:HTTPS 证书校验失败、接口签名对不上、主从延迟算错、日志时间线对不齐,背后常常都是时钟漂移。签名类接口对时间最敏感,请求时间戳与服务端相差超过容忍窗口就直接拒绝——"什么都没改却突然报错"的接口问题,值得先查一下时间。
为什么选 chrony
虚拟机和云主机的时钟走得忽快忽慢,需要持续微调而不是偶尔大步硬追。chrony 正是做持续校准的 NTP(网络时间协议)客户端,比老的 ntpdate 一次跳到位更平滑,如今是主流发行版的默认选择。
安装与配置
CentOS 执行 yum install -y chrony,Ubuntu 执行 apt install -y chrony。Ubuntu 机器注意:系统默认跑着 systemd-timesyncd,装 chrony 前先 systemctl disable --now systemd-timesyncd,两个时间服务同跑会互相较劲。配置文件在 /etc/chrony.conf(Ubuntu 在 /etc/chrony/chrony.conf),核心是 server 行:
server ntp.internal.example iburst
公网机器直接用发行版自带的默认上游即可,一般不需要改;企业内网通常有统一的时间源,填内部地址并加 iburst(首轮加速探测)。云主机也可以优先用云服务商提供的内网 NTP 地址,具体从服务商文档获取,走内网不占公网带宽。首次偏差过大的场景,配置里加 makestep 1 3:误差超过 1 秒时,前三次校准直接跳到正确时间,不再慢慢追。
生效与验证
systemctl enable --now chronyd,开机自启并立即运行。两条查看命令:
chronyc sources -v 看上游列表,行首 ^* 表示正在使用的时间源,^? 说明连不上,认这两个符号就够用;
chronyc tracking 看 System time 一行的当前偏差,毫秒级以内算健康。
timedatectl status 里显示 NTP synchronized: yes 也是个好信号。内网机器多的,可以挑一台配成对内时间源,配置里加 allow 网段放行同事机器,全网一致性更好管理。
两个常见故障
sources 全是 ^?:先查 UDP 123 端口的出站是否被防火墙或安全组拦了;chronyc 报 506:多半是 chronyd 没起来,systemctl status chronyd 一看便知。改过配置记得 systemctl restart chronyd 再验证。