跳转到内容
搜索 Rocky Linux 文档

    浏览当前文档目录

    Rocky 10:chronyc sources 里那些符号到底在说什么

    Rocky Linux 10.2 Server 组虚拟机,chrony-4.8-2.el10。

    实验:把本机指向局域网内一台自建时间源(192.168.2.241,stratum 10),观察从「完全不可达」到「已同步」的完整变化。截图:public/evidence/chrony/rocky-client.png。

    $ chronyc sources
    MS Name/IP address Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^? 192.168.2.241 0 7 0 - +0ns[ +0ns] +/- 0ns
    • ^?:不可达或未通过校验;
    • Stratum 0:还没拿到有效时间;
    • Reach 0:最近 8 次探测一次都没收到回复(reach 是 8 位位图,八进制显示);
    • LastRx -:从来没收到过包。

    这一行几乎覆盖了「时间不对」的绝大多数原因:不是 chrony 不工作,是它压根没连上。

    $ chronyc sources
    ^* 192.168.2.241 10 6 377 23 +2560ns[ +10us] +/- 60us
    • ^*:当前选中的同步源(system peer);
    • 377:八进制,即二进制 11111111,最近 8 次探测全部收到回复;
    • +2560ns:最近一次测量的偏移;方括号里是修正后的值;+/- 60us 是估计误差。
    $ chronyc tracking | grep -E '^(Reference ID|Stratum|System time|Last offset)'
    Reference ID : C0A802F1 (192.168.2.241)
    Stratum : 11
    System time : 0.000010238 seconds fast of NTP time
    Last offset : +0.000015591 seconds

    上游 10,本机 11;偏移在 10 微秒量级——局域网内直连时间源能到这个精度。

    Rocky Linux 10.2:从不可达到已同步的 sources 与 tracking

    $ firewall-cmd --list-services
    cockpit dhcpv6-client ntp ssh

    chrony 默认用 123 作为源端口发查询,因此回复包的目的端口也是 123——客户端入站同样需要放行 ntp。只放行服务端时,客户端会一直停在 ^? / Reach 0,而 ping 完全正常,很容易误判为「网络没问题」。

    实测对照:

    客户端 firewalldsources 状态
    未放行 ntp^?、Reach 0、服务端 NTP packets received: 0
    放行 ntp 后^*、Reach 377、offset 微秒级
    符号含义处理
    ^*当前同步源正常
    ^+合格候选,未选中正常(多源时)
    ^-被判定为异常/离群检查该源
    ^?不可达或未通过校验先查网络与端口
    ^xfalseticker(与多数源矛盾)排除该源

    Reach 是八进制位图:377=255=全通,1=只有最近一次成功,0=全失败。

    • 只看 chronyc tracking 的 Stratum 0 就说「没配」:先看 sources 的 reach;
    • 忘记客户端放行 ntp:如上;
    • systemctl restart chronyd 后立刻判断:首个包要等几秒,Reach 需要几轮才稳定;
    • server 行写在 pool 之后:两者可共存,但多源时 chrony 会挑最优,别只留一条又期待它被选中。
    Terminal window
    chronyc sources
    sudo firewall-cmd --list-services
    sudo chronyc tracking | grep -E '^(Reference ID|Stratum|System time)'
    sudo chronyc sourcestats | head -4

    检查:

    1. sources 里符号是 ^* 还是 ^?;
    2. Reach 是否接近 377;
    3. tracking 的 Reference ID 是否解析成你的时间源 IP;
    4. sourcestats 的 Freq Skew 是否在可接受范围(局域网通常 < 100 ppm)。

    常见问题

    Reach 为什么用八进制?

    它是 8 次探测的位图,chrony 用八进制显示以节省宽度:377 = 最近 8 次全部成功。

    offset 多大算正常?

    局域网内直连通常 < 100 微秒;跨公网 1–10 毫秒;持续几百毫秒说明链路或上游有问题。

    需要 makestep 吗?

    虚拟机首次启动偏差大时可在 chrony.conf 配 makestep 1.0 3,让前 3 次更新直接跳变而非缓慢调整。