ntp时钟源通常是通过开放123 的udp端口对外提供ntp服务的,udp端口的访问可以通过nc -uvz xx.xx.xx.xx 123 端口进行验证,验证发现ntp时钟服务的123端口是开放的,也没有防火墙拦截123端口,但为什么客户端不同步ntp时钟源呢,这个ntp时钟源仅仅是局域网的一台机器而已。
客户端采用的是chrony,正常情况下执行systemct restart chrony,然后通过systemctl status chrony 是可以看到如下的信息的:
master chronyd[23833]: Selected source 172.21.xx.xx
但是使用出问题的这台ntp服务器的客户端却一直没有显示上面的提示提示,通过journalctl -xe | grep chrony 也没有看到有用的信息,最好只能通过tcpdump报文抓取ntp的报文,最后发现了问题:
由于NTP服务器自身没有同步到一个有效的上游时间源,它无法提供可靠的时间服务给客户端。客户端检测到这一点后,将不会从该服务器同步时间。
用wireshark解析的部分报文信息如下:
报文分析:
-
Peer Clock Stratum: unspecified or invalid (0)
这意味着NTP服务器没有同步到一个有效的上游时间源。一个正常的NTP服务器应该有一个有效的Stratum值(通常是1到15),这表示它距离原始时间源的距离。 -
Reference ID: NULL
Reference ID是NTP服务器所同步的时间源的标识。在这里,它被标记为NULL,这意味着服务器没有成功同步到任何时间源。 -
Reference Timestamp: NULL
这个时间戳应该是NTP服务器最后一次从其上游时间源接收到的时间。如果它是NULL,则表明服务器从未成功地从上游时间源接收过时间。 -
Leap Indicator: unknown (clock unsynchronized)
这表明NTP服务器的时钟是未同步的,因此它无法提供准确的时间信息。 -
Origin Timestamp: Sep 28, 2092 06:11:37.564591642 UTC
这个时间戳远远超出了当前时间,通常这不应该发生。这可能是由于服务器内部的问题或错误配置导致的。
最后通过设置ntp服务器的基准时钟解决:
pool ntp1.aliyun.com iburst
pool ntp2.aliyun.com iburst