chrony显示“No suitable source”是其严格评估后主动拒绝所有NTP源,而ntpdate无视质量强制单次校正;本质差异在于chrony追求稳定建模,ntpdate仅暴力步进。

chrony 显示 No suitable source,但 ntpdate 却能成功同步,本质是两者设计目标和工作逻辑完全不同:chrony 是持续、自适应的守护进程,强调稳定性与本地时钟建模;而 ntpdate 是单次暴力校正工具,不关心源质量、不维护状态、也不拒绝“勉强可用”的服务器。
chrony 的“No suitable source”意味着什么
这不是连接失败,而是 chrony 经过一系列严格评估后,主动放弃所有候选服务器。它会检查:
- 网络往返延迟是否稳定(抖动过大则丢弃)
- 偏移量是否在合理范围内(例如超过 1 秒且持续波动,可能被标记为不可靠)
- 服务器是否返回有效 stratum、poll interval 和 leap indicator
- 本地时钟漂移率是否异常(如突然大幅跳变,chrony 会暂停同步以保护时钟模型)
- 是否启用了
offline模式或配置了burst/iburst但未生效
ntpdate 为什么“总能成功”
ntpdate(已废弃,仅作对比)不做任何质量判断:
- 只要 UDP 包能发出去、收到一个响应(哪怕只有一次),就直接计算偏移并强制设置系统时间
- 完全忽略延迟抖动、服务器 stratum、同步历史或本地时钟状态
- 不区分
unsynchronized或step状态,也不等待多轮测量 - 例如:对一个公网 NTP 服务器 ping 延迟 200ms 且波动 ±80ms,chrony 会拒用;
ntpdate照样执行一次校正并退出
常见导致 chrony 拒绝但 ntpdate 成功的场景
这些情况暴露的是环境问题,而非工具缺陷:
- 防火墙或中间设备干扰:NTP 请求/响应被限速、截断或修改(如 TTL 被改、字段清零),chrony 检测到协议异常而丢弃;ntpdate 只看是否回包,不验字段
-
局域网内使用非标准 NTP 服务:比如某嵌入式设备实现的简易 NTP server 缺少
leap indicator或返回固定 stratum 0,chrony 拒绝,ntpdate 不care -
chrony 配置过于保守:如
maxdistance 0.1(最大容许偏移 100ms),而实际网络偏移达 300ms;ntpdate 无此限制 -
系统启动初期时钟严重偏差:chrony 默认启用
makestep但需满足条件(如启动后首次同步才允许大步调),若未触发或被禁用,就卡在“no suitable source”;ntpdate 总是强制 step
如何排查和解决 chrony 的“No suitable source”
别绕路用 ntpdate,应让 chrony 正常工作:
- 运行
chronyc tracking查看当前同步状态和估计误差 - 用
chronyc sources -v看每个源的状态码(^*表示选中,^-表示淘汰,?表示无响应,x表示异常) - 检查
chronyc sourcestats中的Offset、Std Dev、Skew—— 若 Std Dev 过高(>100ms)或 Skew 爆表,说明网络或源质量差 - 临时放宽策略:在
/etc/chrony.conf中添加makestep 1 -1(允许任意偏移立即步进),再重启 chronyd - 确认防火墙放行 UDP 123,且无 ICMP 限速影响 chrony 的路径 MTU 探测
本质上,ntpdate 的“成功”只是掩盖了网络或配置问题;chrony 的“No suitable source”反而是它在认真履职。修复底层条件,chrony 才能发挥其高精度、低扰动、抗抖动的优势。










