应先确认实际运行的时间同步服务:执行timedatectl status和systemctl is-active检查chronyd、ntpd、systemd-timesyncd中哪个为active;若用chronyd,仅修改/etc/chrony.conf的server行并加iburst,禁用冲突服务后重启并手动chronyc makestep,再用chronyc sources -v和tracking验证源与偏差。

确认当前正在运行的时间同步服务
别急着改配置,先搞清系统到底在用谁管时间。chronyd 和 ntpd 不能共存,systemd-timesyncd 也常偷偷占位。执行 timedatectl status 看 “System clock synchronized” 和 “NTP service” 字段;再补一句 systemctl is-active chronyd、systemctl is-active ntpd、systemctl is-active systemd-timesyncd,哪个返回 active 就是真正在干活的那个。
只改 /etc/chrony.conf 的 server 行(推荐场景)
如果你的系统已启用 chronyd(RHEL 8+/CentOS 8+、Ubuntu 20.04+ 默认),就别碰 ntpd 或 systemd-timesyncd。直接编辑 /etc/chrony.conf,只保留你信任的源,其他 server 行全删或注释掉:
server ntp1.aliyun.com iburstserver time1.cloud.tencent.com iburstserver ntp.ntsc.ac.cn iburst
iburst 必须加——它让 chrony 启动时发 8 个包快速建立连接,避免因单次丢包卡住。别混用公网 pool 和内网服务器,比如同时写 pool cn.pool.ntp.org 和 server 192.168.100.10,chrony 可能选错源导致漂移。
停用冲突服务再重启 chronyd
如果 systemd-timesyncd 正在运行,它会和 chronyd 抢时间控制权,结果 chronyc tracking 显示 OK,但 chronyc sources -v 里没 * 号。执行:
sudo systemctl disable --now systemd-timesyncdsudo systemctl restart chronyd-
sudo chronyc makestep(立即修正 >1 秒偏差,否则 chrony 默认只平滑调整)
注意:makestep 不是每次启动都自动触发,必须手动调一次才能把大偏差拉回来。
验证是否真连上了目标源
chronyc sources -v 输出里找你填的 IP 或域名,前面有 * 才算正在用;chronyc tracking 看 Offset 是否在毫秒级(比如 -0.002123),Skew 小于 100 表示频率稳定。如果 sources 里全是 ^ 或 ~,说明连不上——检查防火墙:sudo firewall-cmd --list-ports | grep 123,没输出就加 sudo firewall-cmd --permanent --add-port=123/udp && sudo firewall-cmd --reload。
真正容易被忽略的是:即使 timedatectl status 显示 synchronized: yes,也不代表它同步的是你指定的源——它只认服务状态,不校验源头可信度。











