ubuntu 14.04 NTP服务器搭建及某些故障排查

摘要:摘要: 个人搭建ntp服务器,遇到了些问题,参考了部分文章,最终得以解决,算个小笔记,记录一下

安装

apt-get install ntp

配置

/etc/ntp.conf 文件是Linux NTP的主要配置文件


# 时间源服务器 server cn.pool.ntp.org server 0.cn.pool.ntp.org server 1.cn.pool.ntp.org server 2.cn.pool.ntp.org server 3.cn.pool.ntp.org # 连不上其他服务器时与LOCAL对时,使能够把本机时间给其他client提供服务 server 127.127.1.0 fudge 127.127.1.0 stratum 8 # 还要确保localhost有足够权限. restrict 127.0.0.1 restrict ::1 #界定网络从这个服务器接受NTP同步的请求 restrict 10.0.0.0 mask 255.0.0.0 nomodify



然后/etc/init.d/ntp start 启动服务

根据别的文章介绍,启动后大约需要5分钟时间才能提供服务

配置好后要注意本机的网络是否通畅,域名解析是否正常,对时的时间源是否正常(网传的国家授时中心的IP好像失效了)。

排错命令

服务器端执行ntpq -p 出现下图的内容代表服务正常


有问题记得看系统日志:/var/log/syslog

客户端可以用ntpdate -d 排错,如下文的文摘

以下内容为文摘(引自:http://www.blogjava.net/spray/archive/2008/07/10/213964.html)


当用ntpdate -d来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个:

错误1.Server dropped: Strata too high

在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。

在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

这是因为NTP server还没有和其自身或者它的server同步上。

以下的定义是让NTP Server和其自身保持同步,如果在/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 127.127. 1.0
fudge 127.127. 1.0stratum 8


在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

那么如何知道何时ntp server完成了和自身同步的过程呢?

在ntp server上使用命令:

# watchntpq-p


出现画面:

Every 2.0s: ntpq -p Thu Jul 10 02:28:32 2008

remote refid st t when pollreach delay offsetjitter

==============================================================================

192.168.30.22 LOCAL(0) 8 u 22 64 1 2.113179133. 0.001

LOCAL(0) LOCAL(0) 10 l 21 64 1 0.0000.0000.001

注意LOCAL的这个就是与自身同步的ntp server。

注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。

如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。

错误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的版本:

# ntpq-cversion


下面是来自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端口。

可以用命令

# serviceiptablesstop


来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。