ntpdate:找不到适合同步的服务器


82

我的时钟关闭了,所以我想使用进行同步ntpdate。我尝试了几种不同的NTP服务器,但是由于某种原因,我总是收到以下错误消息:

$ sudo ntpdate ntp.ubuntu.com
4 Mar 12:27:35 ntpdate[1258]: no server suitable for synchronization found
$ sudo ntpdate pool.ntp.org
4 Mar 12:27:50 ntpdate[1267]: no server suitable for synchronization found
$ sudo ntpdate de.pool.ntp.org
4 Mar 12:28:01 ntpdate[1273]: no server suitable for synchronization found
$ sudo ntpdate us.pool.ntp.org
4 Mar 12:28:12 ntpdate[1276]: no server suitable for synchronization found

相关问题

我已经浏览了相关问题,但没有一个能解决我的问题:

我尝试过的事情

我安装了ntp软件包

...并尝试使用ntpd守护程序代替ntpdate实用程序。它也不会同步我的时间;守护程序启动正常,但我的时钟保持关闭状态。我什至尝试使用/etc/ntp.conf后一篇文章中接受的答案中的确切信息,然后重新启动守护程序。不行 无论如何,我不想使用守护程序。我完全知道它ntpdate已被“弃用”,建议改为使用ntpd -q。另请参阅此处:

但是既然ntpd也不适合我,问题就出在其他地方。而且我发现我宁愿不必为了同步时钟而安装任何额外的软件包。ntpdate预先安装了Ubuntu,它应该可以正常工作。因此,我ntp再次卸载了该软件包。

也许123端口被阻塞了?

从这篇文章:

...我的想法是,在工作场所,端口123可能被我的计算机/网络阻止了。确实,

$ sudo nmap -p123 -sU -P0 localhost
...
PORT    STATE  SERVICE
123/udp closed ntp 
...
$ sudo ufw allow 123/udp
Rules updated
Rules updated (v6)
$ sudo nmap -p123 -sU -P0 localhost
...
PORT    STATE SERVICE
123/udp open  ntp
...

但仍然:

$ sudo ntpdate ntp.ubuntu.com
4 Mar 13:06:16 ntpdate[4361]: no server suitable for synchronization found

即使使用该-u选项,该选项也ntpdate可以使用未特权的端口进行同步(而不是port 123),但该端口肯定不受我的工作场所的限制:

$ sudo ntpdate -u ntp.ubuntu.com
4 Mar 13:06:28 ntpdate[4427]: no server suitable for synchronization found

也许地层太高了?

最后,来自serverfault的这篇文章:

...我认为也许来自NTP服务器的层次过高。不过不是。让我们看看更多的调试信息:

$ sudo ntpdate -dv ntp.ubuntu.com
 4 Mar 13:12:24 ntpdate[4523]: ntpdate 4.2.6p5@1.2349-o Wed Oct  9 19:08:07 UTC 2013 (1)
Looking for host ntp.ubuntu.com and service ntp
host found : golem.canonical.com
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
91.189.89.199: Server dropped: no data
91.189.94.4: Server dropped: no data
server 91.189.89.199, port 123
stratum 0, precision 0, leap 00, trust 000
refid [91.189.89.199], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Mon, Jan  1 1900  1:00:00.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  1:00:00.000
transmit timestamp:  d6c041ae.e6166441  Tue, Mar  4 2014 13:12:30.898
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

server 91.189.94.4, port 123
stratum 0, precision 0, leap 00, trust 000
refid [91.189.94.4], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Mon, Jan  1 1900  1:00:00.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  1:00:00.000
transmit timestamp:  d6c041af.1948fc50  Tue, Mar  4 2014 13:12:31.098
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

 4 Mar 13:12:33 ntpdate[4523]: no server suitable for synchronization found

Pfeeewww ...这很长,对此表示歉意。我很沮丧 有什么线索吗?

更新:其他信息

无论NTP服务器HOSTNAME的数字中/etc/ntp.conf,而不管是否ntpd服务运行与否,每当我跑sudo ntpdate -u HOSTNAME,我得到no server suitable for synchronization found。当ntpd服务运行时,同样的事情,我省略了该-u选项。当ntpd服务正在运行,我省略了-u选择,我反而得到the NTP socket is in use, exiting

也:

$ timedatectl status
      Local time: Wed 2014-03-05 13:11:54 CET
  Universal time: Wed 2014-03-05 12:11:54 UTC
        Timezone: Europe/Berlin (CET, +0100)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2013-10-27 02:59:59 CEST
                  Sun 2013-10-27 02:00:00 CET
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2014-03-30 01:59:59 CET
                  Sun 2014-03-30 03:00:00 CEST

但是,此处的UTC时间不正确。现在,UTC时间现在11:11不是12:11

和:

$ sudo hwclock --show
Wed 05 Mar 2014 01:11:56 PM CET  -0.625627 seconds

您说您运行过sudo ntpdate ntp.ubuntu.com,但是在添加ntp.ubuntu.com/etc/ntp.confs服务器字段后是否这样做了 ?如果没有看到以下答案
Stormvirux

尝试`sudo ntpdate 0.ubuntu.pool.ntp.org
Stormvirux 2014年

1
嗨,请看我对您答案的评论。我尝试添加server pool.ntp.org/etc/ntp.conf,但ntpdate -u pool.ntp.org引发了相同的错误。我还尝试了ntp.ubuntu.com(将其添加到/etc/ntp.conf,重新启动ntp服务,ntpdate -u在我刚刚添加到的确切服务器上重新运行/etc/ntp.conf)。总结一下,我要与之同步的服务器是否在中都没有关系/etc/ntp.confno server suitable...在所有情况下,我都会收到错误消息(除非ntp服务正在运行,并且我省略了该-u选项,然后我收到了NTP socket in use错误消息)。
Malte Skoruppa 2014年

好的,我也尝试了sudo ntpdate 0.ubuntu.pool.ntp.org,该/etc/ntp.conf文件中已经存在。没有运气-同样的错误。
Malte Skoruppa 2014年

Answers:


54

您的托管服务提供商正在阻止ntp数据包。某些ISP已针对DDoS攻击实施了这种繁重的方法。您可以看到ntpdate从ntpdate -vd发送数据包:

transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)

我会与您的ISP联系,询问他们是否阻止了外部ntp请求,以及它们是否具有可用于时间同步的本地服务器。

还有更多的可能性,但是很难排除它们,因为您尚未从syslog中发布任何日志。


6
你说得很对。看来我们的大学正在阻止外部NTP请求。它还提供了一些本地NTP服务器作为替代。这些完美地工作。我现在看到的输出ntpdate -dv还应该包括一些消息receive(...),而不仅仅是transmit(...)消息。;) 非常感谢!
Malte Skoruppa 2014年

但是,一个问题是,ntpdate与该-u选项一起使用时,大学如何阻止NTP数据包?由于这使用的是非特权端口而不是端口123,这意味着它们的防火墙规则必须比简单地“阻止端口123上的传入数据包”更为复杂。那么,他们是否进行某种深度数据包检查?
Malte Skoruppa 2014年

1
他们将有一条防火墙规则,上面写着“用目标端口123阻止所有流量”,然后是其ntp主机的一些例外情况
dfc 2014年

我有同样的问题。我可以通过执行traceroute出站来解决该问题,并且在可以同步到该路由的本地服务器上找到了正在运行ntp的本地服务器。其中之一正在阻止它。感谢您的提示!
jonespm 2015年

1
对我来说,ntpdate -vdno servers can be used, exiting
highBandWidth 2015年

47

这不是ntp的答案,但是...

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

这个和curl版本在这里


13
这很糟糕,但是可以。
艾伦·梅

4
将未经消毒的数据馈送到以root身份运行的bash命令?非常感谢您的参与。这个答案应该带有极端的偏见。
DFC

1
与必须处理ISP支持相比,痛苦要小得多。同样,如果出于测试目的而在本地VM中运行,则根本不重要。
Yalok Iy

你能解释一下我在做什么吗?
Suraj Jain'2

1
@SurajJain许多Web服务器返回Date标头。在该命令中,date -s表示设置日期,wget -S表示存储所有标题,2>&1表示在stdout中记录错误,grep表示带有标题Date的选择行,cut表示剥离日期和GMT。结束日期处的Z表示为UTC。准确性将取决于网络速度。
user1516873

10

我遇到了同样的问题,这就是我解决的方法。我从上至下给出了详细的答案。您可能想跳到我的答案的中间,或者只是参考下面的屏幕快照以快速了解它。

首先安装ntpdate(显然您已经完成了此操作)

sudo apt-get install ntpdate

下一步您需要使用服务器配置ntp,如下所示:

您至少应在/etc/ntp.conf配置文件中设置以下参数: server

例如,使用nano文本编辑器打开/etc/ntp.conf文件:

sudo nano /etc/ntp.conf

找到服务器参数,如果为空,则如下设置:

server pool.ntp.org

但是通常在ubuntu中已经预写了一些服务器,这可能是

server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

在此处输入图片说明

然后保存文件并重新启动ntpd服务

sudo /etc/init.d/ntpd start

您可以使用以下命令立即将系统时钟同步到NTP服务器:

sudo ntpdate pool.ntp.org

或仅运行已定义的服务器

sudo ntpdate 0.ubuntu.pool.ntp.org

或使用服务器定义的其他服务器

通常

sudo ntpdate <one of the servername in /etc/ntp.conf>

但是之后有机会出现错误NTP socket in use,如下所示:

在此处输入图片说明

在这种情况下,只需运行

ntpdate -u pool.ntp.org 

在ntp守护进程运行时更新

或者只是停止守护进程,更新并重新启动它,如下所示:

sudo ntpdate pool.ntp.org
sudo service ntp stop
sudo ntpdate pool.ntp.org
sudo service ntp start

你会得到

在此处输入图片说明


嗨,谢谢您的详细回答!不幸的是,它对我没有用。我拥有/etc/ntp.confUbuntu附带的那个,从未对其进行任何更改。我将其粘贴在这里:pastebin.com/bB0sskzv。我尝试了添加server pool.ntp.org到服务器列表的顶部,如您的屏幕快照所示。在这里找到:pastebin.com/YH372Jdi通过这两个设置,我运行了您建议的命令序列:我在原始帖子中添加了屏幕截图。对于未修改的和修改的,结果完全相同/etc/ntp.conf。还有其他想法吗?谢谢!
Malte Skoruppa 2014年

什么会timedatectl status返回
Stormvirux

请参阅timedatectl status我的原始帖子中的命令输出。
Malte Skoruppa 2014年

现在,我尝试使用所有4个预定义的服务器(即{0..3}.ubuntu.pool.ntp.org),同时-u选择是否启用选项。总是相同的错误。
Malte Skoruppa 2014年

你也告诉我 输出的sudo hwclock --show
Stormvirux

8

使用htpdate

如果您的网络中阻止了ntp传输,请安装htpdate。它通过http协议同步时间。根据手册页,准确度将达到0.5秒。

sudo apt-get install htpdate
sudo htpdate -a google.com

htpdate服务将在您安装软件包时启动。如果有互联网连接,时间将立即更新。


请不要仅在找到有关ntp的每个主题中复制并粘贴相同的答案。
sempaiscuba

1
无论是否使用Copypasta,在收到ntpdate[22109]: no server suitable for synchronization found错误时,此解决方案都对我有用。
膝盖

4

与Alex的答案类似,这对我来说可以绕过防火墙的ntp端口:

sudo date -s "$(curl http://s3.amazonaws.com -v 2>&1 | \
  grep "Date: " | awk '{ print $3 " " $5 " " $4 " " $7 " " $6 " GMT"}')"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.