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

我的一台服务器有一个奇怪的问题。 ntpdntpdate无法正常工作,但debugging完全不显示任何错误。 起初我以为也许本地或networking防火墙阻止UDP端口123,但事实并非如此 – 该服务器可以将UDP端口123(ntp协议)与Internet连接并获得答案。

让我来certificate这个问题。

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

ntpq -pn pool.ntp.org – 工作,我确实从时间服务器获得详细的时间数据,并certificateUDP数据包正在运行。

ntpdate -d pool.ntp.org – debugging模式工作,显示大量debugging数据并显示当前时间偏移量: 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防火墙,并确认数据中心没有过滤udpstream量。 任何想法是什么阻止ntpd和ntpdate同步我的时钟?

这是CentOS 6.3 x64在配备Intel CPU的专用服务器上。

如果偏移量太高, ntpdate (和ntpd )会拒绝(轻松)设置时间。 这两个应用程序将尽量慢慢调整你的时间,以免混淆你的系统或任何可能无法处理大时间跳转的应用程序。

尝试使用ntpdate -b代替。 无论看起来多么无理,它都会设定时间。

您可能还需要添加-u标志,防止ntpdate使用特权(<1024)端口。 请注意-u-d指示 这听起来像-d工作正常。

如果添加-u使得工作和非工作之间存在差异,那么您在引发这些问题的方式上有一个防火墙。

不幸的是,似乎没有可能使ntpd使用不受限制的端口 。

你可以在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层服务器还是其他的同步?

没有适合于同步的服务器意味着它告诉,客户端和服务器之间的通信不能build立。

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

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

停止并启动ntpd守护进程,等待到达377,然后停止tcpdump。 这应该有更多的线索。