ntpdate 和 ntpd 无法在 Linux 上同步时钟

ntpdate 和 ntpd 无法在 Linux 上同步时钟

我的一台服务器出现了一个奇怪的问题。 ntpd无法ntpdate工作,但调试时没有显示任何错误。起初我以为可能是本地或网络防火墙阻止了 UDP 端口 123,但事实并非如此 - 该服务器可以通过 UDP 端口 123(ntp 协议)与互联网通信并获得答案。

让我演示一下这个问题。

date -s "30 DEC 2012 02:30:00"- 有效,所以我可以成功设置时钟而没有错误。

ntpq -pn pool.ntp.org- 有效,我确实从时间服务器获得了详细的时间数据,并证明 UDP 数据包正在运行。

ntpdate -d pool.ntp.org- 调试模式有效,显示大量调试数据并显示当前时间偏移: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

一切看起来都很正常,直到: ntpdate pool.ntp.org- 暂停 4.7 秒后,它返回: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

运行时出现类似问题ntpd,它不会更新时钟。

ntpd 启动后,ntpq -pn导致所有 refid 永远卡在,.INIT.这意味着它们无法同步。

/var/lib/ntp/drift 是 ntp.conf 中的漂移文件设置,其权限为 chmod 644 并归 ntp:ntp 所有,与我的所有其他系统相同。

我尝试了十几个其他 ntp 时间服务器,禁用了 iptables 防火墙,并确认数据中心没有过滤 udp 流量。有什么想法阻止 ntpd 和 ntpdate 同步我的时钟吗?

这是在具有 Intel CPU 的专用服务器上运行的 CentOS 6.3 x64。

答案1

ntpdatentpd如果偏移量过大,(和)将拒绝(轻松)设置时间。两个应用程序都会尝试慢慢地调整您的时间,以免混淆您的系统或任何可能无法很好处理大时间跳跃的应用程序。

尝试ntpdate -b一下。无论看起来多么不合理,它都会设置时间。

您可能还需要添加标志-u,这将阻止ntpdate使用特权(<1024)端口。请注意,-u暗示了-d!听起来-d运行良好。

如果添加-u会对工作和非工作产生影响,则说明您在途中有一个防火墙导致了这些问题。

不幸的是似乎无法使用ntpd不受限制的端口

答案2

您能在 pastebin 中提供以下输出吗?

cat /etc/ntp.conf
cat /etc/sysconfig/ntpd
ntpq -pn
ntpdc -c sysstat
ntpdc -c kerninfo
ntpdc -c loopinfo
ntpdate -d <time-server-IP>
ntptrace

您是从第 1 层服务器还是其他任何服务器进行同步。

没有适合同步的服务器意味着客户端和服务器之间无法建立通信。

如果我们不能从这组数据中找到线索,则可能需要使用 tcpdump 来查看数据包丢失的位置。

tcpdump -s0 -i ethX -p udp -w /tmp/ntp.pcap

停止并启动 ntpd 守护进程,等待到达 377,然后停止 tcpdump。这应该会提供进一步的线索。

相关内容