错误1.Server dropped: Strata too high
在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误,如下所示
zhj@test:~$ sudo ntpdate weblbserver-1 28 Dec 15:22:33 ntpdate[4444]: no server suitable forsynchronization found zhj@test:~$
在ntp客户端用ntpdate –d serverIP查看,参数是-d是指debug模式,它会将ntpdate同步时的一些信息打印出来,而且即使从ntp server那里获取到了国际
原子时,也不会写入客户端的osclock。可以看到,错误信息中有“stratum 16”。stratum是ntp服务器层级,正常情况下stratum的值为“0~15”。而
stratum=16是因为NTP server还没有和它的上层NTP server同步上。
zhj@appserver-1:~$ sudo ntpdate -d weblbserver-1 28 Dec 15:22:06 ntpdate[4434]: ntpdate 4.2.6p5@1.2349-o Wed Oct 9 19:08:07 UTC 2013 (1) Looking for host weblbserver-1and service ntp host found : 192.168.0.7 transmit(192.168.0.7) receive(192.168.0.7) transmit(192.168.0.7) receive(192.168.0.7) transmit(192.168.0.7) receive(192.168.0.7) transmit(192.168.0.7) receive(192.168.0.7) 192.168.0.7: Server dropped: strata too high server 192.168.0.7, port 123 stratum 16, precision -18, leap 11, trust 000 refid [192.168.0.7], delay 0.02667, dispersion 0.00003 transmitted 4, in filter 4 reference time: 00000000.00000000 Mon, Jan 1 1900 0:00:00.000 originate timestamp: d84a9ea5.06da4607 Sun, Dec 28 2014 15:22:13.026 transmit timestamp: d84a9ea5.07d57eae Sun, Dec 28 2014 15:22:13.030 filter delay: 0.02667 0.02675 0.02678 0.02696 0.00000 0.00000 0.00000 0.00000 filter offset: -0.00457 -0.00453 -0.00467 -0.00468 0.000000 0.000000 0.000000 0.000000 delay 0.02667, dispersion 0.00003 offset -0.004574 28 Dec 15:22:13 ntpdate[4434]: no server suitable forsynchronization found zhj@appserver-1:~$
那我们怎样知道weblbserver-1这个NTP server是否与它的上层NTP server是否同步上了呢?用ntpq -p命令(注:ntpq即ntp query,参数-p是print),
如下在weblbserver执行ntpq -p
zhj@weblbserver-1:~$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== dns1.synet.edu. 202.118.1.46 2 u 915 1024 1 43.464 -134.79 0.004 golem.canonical 192.93.2.20 2 u 914 1024 1 433.083 -198.90 0.004 zhj@weblbserver-1:~$
这里简单说一下when,poll,reach几个参数,
when —— 上次同步时间到现在的距离,单位是秒。当然,如果ntp服务是刚启动,还没同步过,那这个参数就是ntp服务启动后到现在的距离
poll —— 同步周期,单位为秒
reach —— 它是八进制数,正常情况下值为[0, 1, 3, 7, 17, 37, 77, 177, 377],对应的二进制为[0, 1, 11, 111, 1111, 11111, 111111, 1111111, 11111111],
ntp服务启动后,reach就以poll值为周期与ntp server通信,为了方便理解,我们可以简单的认为每次ping一下上层ntp server,如果成功,那
reach就向左移一位,右边补1,如果失败,则右边补0,所以如果reach不是上面给出的枚举值,那就是在通信过程中出错了。当reach 达到17时
(对应1111,即最近的四次通信都成功了),那才开始同步时间,这时,remote项对应的域名或IP列表有,其中一个前面会有*号,表示该IP就是
NTP server。而在开始同步时间之前,当客户端访问weblbserver-1这个NTP server时,都会出现stratum 16,no server suitable for
nchronizationfound这样的错误。也就是说如果你在NTP server主机上重启了ntp服务,那要等4*poll秒(在前四次通信都是成功的前提下),
该NTP server才与上层NTPserver开始同步时间,而且只有当开始同步时,该NTP server才能为其它客户端提供NTP服务。因此,你在/etc/ntp.conf
中设置的同步周期minpoll maxpoll不能太大,因为每次ntp服务重启后,要等4倍长的时间才能开始同步。
错误2.Server dropped:no data
从客户端执行netdate –d时有错误信息如下:
transmit(192.168.30.22) transmit(192.168.30.22) transmit(192.168.30.22) transmit(192.168.30.22) transmit(192.168.30.22) 192.168.30.22: Server dropped: no data server 192.168.30.22, port 123 ..... 28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出现这个问题的原因可能有2:
1. 检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。
使用以下命令检查ntp的版本:
下面是来自ntp官方网站的说明:
The behavior ofnotrustchanged between versions 4.1 and 4.2.
In 4.1 (and earlier)notrustmeant "Don't trust this host/subnet for time".
In 4.2 (and later)notrustmeans "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to
authenticate themselves to your (client)ntpd
解决办法:把notrust去掉。
2. 检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。
可以用命令来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。