问题描述
我的时钟关闭了,所以我想用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
相关问题
我查看了相关的问题,但没有解决我的问题:
-
Unable to synchronize time using NTP – 这个人得到的不是我的错误;他的问题是与
ntpd
守护进程冲突。我没有安装ntp
软件包(其中包括ntpd
守护进程)。 -
如何使用ntp强制更新时钟? – 这个人的问题是
ntpdate
命令在启动时不能正常工作,当他将它放入/etc/rc.local
时,问题与运行的ntpd
守护进程有冲突。我也没有试图在启动时运行ntpdate
,也没有(再次)安装ntpd
守护进程。 -
Unable to sync time using `ntpdate`, error: “no server suitable for synchronization found” – 这是我的错误,但接受的答案基本上是“使用
ntpd
而不是ntpdate
”。 Aaarggh …
我尝试过的东西
我安装了ntp软件包
…并尝试使用ntpd
守护进程而不是ntpdate
实用程序。它也不会同步我的时间;守护进程开始正常,但我的时钟仍然关闭。我甚至在后一篇文章中从接受的答案中尝试使用确切的/etc/ntp.conf
,然后重新启动守护进程。不行。无论如何,我不想使用守护进程。我完全知道ntpdate
被认为是”deprecated”,建议使用ntpd -q
。另见这里:
但由于ntpd
也不适合我,所以问题在于别处。而且我发现我宁愿不必为了同步时钟而安装任何额外的软件包。 ntpdate
带有pre-installed与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
使用非特权端口进行同步(而不是端口123
),但是这些端口当然不会从我的工作位置被阻止:
$ sudo ntpdate -u ntp.ubuntu.com
4 Mar 13:06:28 ntpdate[4427]: no server suitable for synchronization found
也许地层太高了?
最后,从服务器故障的这篇文章:
…我认为也许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 ……这是一个很长的一个,很抱歉。我很难过。任何线索?
更新:其他信息
无论/etc/ntp.conf
中是否有NTP服务器HOSTNAME
,无论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
最佳解决思路
您的托管服务提供商正在阻止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发布任何日志。
次佳解决思路
这不是一个ntp答案,但是…
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
这和curl版本here。
第三种解决思路
我有同样的问题,这就是我解决它的方法。我从上到下给出了详细的答案。您可能想跳到我的答案中间,或者只是参考下面的屏幕快照来一目了然地了解它。
首先安装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 deamon运行时更新
或者只是停止deamon,更新并重新启动它,如下所示:
sudo ntpdate pool.ntp.org
sudo service ntp stop
sudo ntpdate pool.ntp.org
sudo service ntp start
你会得到
第四种思路
使用htpdate
如果您的网络中阻止了ntp传输,请安装htpdate。它通过http协议同步时间。根据man page,准确度将持续0.5秒。
sudo apt-get install htpdate
安装软件包时将启动htpdate服务。如果有互联网连接,时间将立即更新。
参考资料