chrony sources 显示 * 为空但 chronyd 正常运行,说明服务已启动但无活动上游时间源;可能因配置缺失、网络不通、时间偏差过大、offline 模式或未触发初始同步。

chrony sources 显示 \* 为空但 chronyd 正常运行,说明什么
这表示 chronyd 进程确实在运行,但当前**没有活动的上游时间源(NTP server)被选为同步目标**。星号 \* 在 chrony sources 输出中代表“当前正在使用的主时间源”,它为空 ≠ 服务异常,而是意味着 chrony 尚未完成源选择、所有源都不可用、或处于初始同步等待阶段。
常见原因与快速校验步骤
先确认基础配置和网络连通性,再排查 chrony 内部状态:
- 检查
/etc/chrony.conf中是否定义了有效的server或pool行(例如server time.cloudflare.com iburst),且**未被注释** - 执行
chronyc tracking:若输出中System clock显示unsynchronized,说明尚未完成首次同步;若显示synchronized但sources仍无\*,可能是源全部被临时剔除(如抖动过大、离散度超限) - 运行
chronyc sources -v查看每个源的详细状态:^表示已尝试连接但未响应,~表示响应但时间质量不达标,+表示候选但未当选,\*才是最终选定 - 用
chronyc activity确认是否有源处于“online”状态;若显示No sources online,则问题在源可达性或配置
为什么 chronyd 启动成功却无法选源
chronyd 启动只校验配置语法,不验证 NTP 服务器是否可达。以下情况会导致 sources 无 \*:
-
iburst参数缺失:对新启动或长时间未同步的实例,缺少iburst会导致前几次请求间隔过长(默认 64 秒),看起来像“卡住” -
防火墙或网络策略拦截 UDP 端口 123:即使
ping通目标域名,NTP 仍会失败;可用nc -uz或123 ss -tuln | grep :123检查本地端口监听 - 系统时间偏差过大(>1000 秒):chronyd 默认拒绝大步调时,需手动加
-s参数启动或配置makestep 1.0 -1允许首次大步调整 - 使用了
offline模式:执行过chronyc offline会强制禁用所有源,需chronyc online恢复
验证 upstream 配置是否真正生效
不能只看 chronyd 进程存在,要观察它是否实际与上游交互:
- 启用调试日志:在
/etc/chrony.conf加log measurements statistics tracking,重启后检查/var/log/chrony/下日志是否出现Selected source或Source xxx is now online - 抓包验证:运行
tcpdump -i any udp port 123 -n,同时触发chronyc makestep,应能看到发往配置 server 的 UDP 包 - 对比两台机器:若同网段另一台 chrony 客户端能正常选源,而本机不能,大概率是本机配置遗漏或本地策略限制(如 SELinux 拦截 socket)
最易被忽略的是 makestep 阈值和 iburst 缺失——尤其在虚拟机克隆、容器重启或系统时间被宿主机重置后,这两点几乎总是根源。










