chronyc sources 显示 stratum 16 或 delay 极大的上游源问题

11次阅读

stratum 16 表示上游 NTP 服务器不可用,通常由网络不通、防火墙拦截、服务器失效或配置错误导致;需检查端口连通性、同步状态、上游可用性、本地配置及日志。

chronyc sources 显示 stratum 16 或 delay 极大的上游源问题

chronyc sources 显示某个上游 NTP 服务器的 stratum 为 16delay 极大(如数秒甚至几十秒),说明 chronyd 无法正常与该源通信或同步失败。stratum 16 在 NTP 协议中代表“不可用”(相当于离线或拒绝服务),而高 delay 通常意味着网络路径异常、防火墙拦截、服务器过载或配置错误。

检查网络连通性与端口可达性

chronyd 默认使用 udp 123 端口与上游通信,需确保本地能正常访问目标服务器的该端口:

  • nc -uz ntp.example.com 123timeout 2 bash -c 'echo > /dev/tcp/ntp.example.com/123' 2>/dev/NULL && echo "OK" || echo "Blocked" 快速验证 TCP/UDP 连通性(注意:NTP 实际走 UDP,但部分系统可用此方式粗略判断端口是否被拦)
  • 运行 chronyc tracking 查看当前同步状态;若 System clock wrong by 显示极大偏差(如 >1000s),chronyd 可能因安全策略拒绝步进校时,需先手动修正时间再重启 chronyd
  • 确认未被本地防火墙(如 firewalld、iptables)、云平台安全组或企业网络策略屏蔽 UDP 123 出向流量

确认上游服务器是否真实可用

stratum 16 常见于上游本身已失效、返回拒绝响应或配置为仅限特定客户端访问:

  • 换用公共可靠源测试,例如:pool.ntp.orgtime.google.comtime.cloudflare.com,在 /etc/chrony.conf 中临时替换并重启服务:sudo systemctl restart chronyd
  • chronyc -v sources -v 查看详细原因字段(如 REJECTTIMEOUTNOPEER),对应含义可在 man chronyc 的 SOURCES OUTPUT 部分查到
  • 某些机构内网 NTP 服务器可能要求 NTP auth key 或限制 IP 段,若属此类,需按其文档配置 keyfileauthselect 等参数

排查 chronyd 本地配置与资源限制

延迟异常有时并非网络问题,而是 chronyd 自身行为或系统环境导致:

  • 检查 /etc/chrony.conf 中是否误配了 offlineiburst 缺失(首次同步建议保留)、或 minpoll/maxpoll 设置过大(如 maxpoll 12 = 4096 秒,可能加剧 delay 观感)
  • 确认系统未启用 systemd-timesyncd 或其他 NTP 客户端冲突:sudo systemctl stop systemd-timesyncd && sudo systemctl disable systemd-timesyncd
  • 查看日志定位具体错误:journalctl -u chronyd -n 50 --no-pager,留意类似 Source xxx.xxx.xxx.xxx not suitable: invalid stratumrecvfrom: Connection refused 的记录

应对高延迟场景的实用建议

即使网络延迟较高(如跨国链路),只要稳定且小于 1s,chronyd 仍可有效工作;但若 delay 持续 >1s,应主动优化:

  • 优先选择地理邻近的 NTP 池,例如中国用户可用 cn.pool.ntp.org阿里云提供的 ntp1.aliyun.com
  • 避免单点依赖:在 chrony.conf 中配置至少 3–4 个不同来源,chronyd 会自动剔除异常源并加权计算最优时间
  • 如设备位于 NAT 后或容器中,确认宿主机未拦截 UDP 123,或尝试在容器启动时添加 --cap-add=SYS_TIME(仅限需要调整系统时间的场景)

不复杂但容易忽略。关键是把 stratum 16 当作“连接失败信号”,而非单纯的时间偏差问题;逐层验证网络、服务端、配置三者,通常能快速定位根因。

text=ZqhQzanResources