chrony sources 显示 * 为空但 chronyd 运行正常的 upstream 配置校验

7次阅读

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

chrony sources 显示 * 为空但 chronyd 运行正常的 upstream 配置校验

chrony sources 显示 * 为空但 chronyd 正常运行,说明什么

这表示 chronyd 进程确实在运行,但当前**没有活动的上游时间源(NTP server)被选为同步目标**。星号 *chrony sources 输出中代表“当前正在使用的主时间源”,它为空 ≠ 服务异常,而是意味着 chrony 尚未完成源选择、所有源都不可用、或处于初始同步等待阶段。

常见原因与快速校验步骤

先确认基础配置和网络连通性,再排查 chrony 内部状态:

  • 检查 /etc/chrony.conf 中是否定义了有效的 serverpool 行(例如 server time.cloudflare.com iburst),且**未被注释**
  • 执行 chronyc tracking:若输出中 System clock 显示 unsynchronized,说明尚未完成首次同步;若显示 synchronizedsources 仍无 *,可能是源全部被临时剔除(如抖动过大、离散度超限)
  • 运行 chronyc sources -v 查看每个源的详细状态:^ 表示已尝试连接但未响应,~ 表示响应但时间质量不达标,+ 表示候选但未当选,* 才是最终选定
  • chronyc activity 确认是否有源处于“online”状态;若显示 No sources online,则问题在源可达性或配置

为什么 chronyd 启动成功却无法选源

chronyd 启动只校验配置语法,不验证 NTP 服务器是否可达。以下情况会导致 sources*

  • iburst 参数缺失:对新启动或长时间未同步的实例,缺少 iburst 会导致前几次请求间隔过长(默认 64 秒),看起来像“卡住”
  • 防火墙或网络策略拦截 udp 端口 123:即使 ping 通目标域名,NTP 仍会失败;可用 nc -uz 123ss -tuln | grep :123 检查本地端口监听
  • 系统时间偏差过大(>1000 秒):chronyd 默认拒绝大步调时,需手动加 -s 参数启动或配置 makestep 1.0 -1 允许首次大步调整
  • 使用了 offline 模式:执行过 chronyc offline 会强制禁用所有源,需 chronyc online 恢复

验证 upstream 配置是否真正生效

不能只看 chronyd 进程存在,要观察它是否实际与上游交互:

  • 启用调试日志:在 /etc/chrony.conflog measurements statistics tracking,重启后检查 /var/log/chrony/ 下日志是否出现 Selected sourceSource xxx is now online
  • 抓包验证:运行 tcpdump -i any udp port 123 -n,同时触发 chronyc makestep,应能看到发往配置 server 的 UDP 包
  • 对比两台机器:若同网段另一台 chrony 客户端能正常选源,而本机不能,大概率是本机配置遗漏或本地策略限制(如 SElinux 拦截 socket)

最易被忽略的是 makestep 阈值和 iburst 缺失——尤其在虚拟机克隆、容器重启或系统时间被宿主机重置后,这两点几乎总是根源。

text=ZqhQzanResources