linux设置时间服务器

  
对多个linux服务器,时间保持一致是很必要的。根据精确度要求,应该有相应的时间间隔进行时间同步。如果不进行时间同步,时间久了就会差别很大,遇到问题时定位就很困难。因为多台设备的配合,log之间可能有前因后果,时间是同步事件的先后的重要依据。

 

一般来说,对一个机房内的设备,可以设置一台时间服务器,由它定期从一个标准的时间服务器上获取时间。其他的服务器可以通过内网的连接从这台服务器进行同步。这样不仅时间会一致,而且照顾到一些没有公网的设备。

 

本文测试系统:

[root@test ~]# cat /etc/*release
CentOS release 5.6(Final)

 

[root@test ~]# rpm -qf /usr/sbin/ntpd
ntp-4.2.2p1-9.el5.centos.2.1

在安装时应该确定ntp包已经安装。

 

启动服务器

如果ntpd已经安装,则可以直接启动:

[root@test ~]# service ntpd start
Starting ntpd:                                             [  OK  ]

 

查看ntpd运行状态

# /etc/init.d/ntpd status

ntpd (pid  10428) is running...

 

同时,也需要检查一下配置文件,centos缺省都配置好了。

[root@test ~]# vi /etc/ntp.conf

server 0.centos.pool.ntp.org

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

 

另外推荐几个同步源 ntp.fudan.edu.cn us.pool.ntp.org timekeeper.isi.edu ntp0.fau.de 相对来说还快点.

 

检查一下时间服务器是否可用:

[root@test ~]# ping 0.centos.pool.ntp.org
PING 0.centos.pool.ntp.org (74.88.39.232) 56(84) bytes of data.
64 bytes from ool-4a5827e8.dyn.optonline.net (74.88.39.232): icmp_seq=1 ttl=54 time=251 ms
如果不可用,则确定一下网络是否能连接到外网。检查一下域名解析是否配置。

[root@test ~]# cat /etc/resolv.conf
nameserver 8.8.8.8

 

设置ntpd自启动
[root@test ~]# find  /etc/rc.d/ -name "*ntpd"
/etc/rc.d/rc6.d/K74ntpd
/etc/rc.d/init.d/ntpd
/etc/rc.d/rc3.d/K74ntpd
/etc/rc.d/rc4.d/K74ntpd
/etc/rc.d/rc5.d/K74ntpd
/etc/rc.d/rc2.d/K74ntpd
/etc/rc.d/rc1.d/K74ntpd
/etc/rc.d/rc0.d/K74ntpd
[root@test ~]# /sbin/chkconfig --level 345 ntpd on
[root@test ~]# !find
find  /etc/rc.d/ -name "*ntpd"
/etc/rc.d/rc6.d/K74ntpd
/etc/rc.d/init.d/ntpd
/etc/rc.d/rc3.d/S58ntpd
/etc/rc.d/rc4.d/S58ntpd
/etc/rc.d/rc5.d/S58ntpd
/etc/rc.d/rc2.d/K74ntpd
/etc/rc.d/rc1.d/K74ntpd
/etc/rc.d/rc0.d/K74ntpd
说明在3,4,5三个级别已经可以自启动。

 

检查防火墙
[root@test ~]# iptables -L

对比较严格的防火墙,应该对ntp端口123进行配置:

[root@test ~]# iptables -A INPUT -p udp --dport 123 -j ACCEPT
[root@test ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ntp

 

客户端配置

客户端采用ntpdate来更新,配置在crontab中。根据需要决定频率。在每一台需要同步时间的设备上设置crontab

[root@test1 ~]# crontab -e

 

00 00 * * * /usr/sbin/ntpdate 192.168.30.13

 

192.168.30..13是test服务器的内网地址。

crontab 设置的是每天0点同步时间。

为了保证时间服务器可用,将命令先在命令行下执行一下。

[root@test1 ~]# ntpdate 192.168.30.13
26 Jun 18:00:99 ntpdate[16895]: step time server 192.168.30.13 offset 0.694312 sec
[root@test1 ~]# date
Tue Jul 26 18:00:01 UTC 2011

说明同步时间成功。

 

解决ntp的错误 no server suitable for synchronization found
当用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.0 stratum 8
 

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

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

在ntp server上使用命令:


# watch ntpq -p

出现画面:

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

     remote           refid      st t when poll reach   delay   offset jitter

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

 192.168.30.13   LOCAL(0)         8 u   22   64    1    2.113 179133.   0.001

 LOCAL(0)        LOCAL(0)        10 l   21   64    1    0.000   0.000  0.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

从客户端执行/usr/sbin/ntpdate -d时有错误信息如下:

transmit(192.168.30.13)
transmit(192.168.30.13)

192.168.30.13: Server dropped: no data

server 192.168.30.13, port 123

 

.....
26 Jul 16:14:36 ntpdate[3960]: no server suitable for synchronization found

 

出现这个问题的原因可能有2:

1。检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。


使用以下命令检查ntp的版本:

# ntpq -c version
下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.

In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".

In 4.2 (and later) notrust means "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端口。

可以用命令

#service iptables stop


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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值