Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3161385
  • 博文数量: 797
  • 博客积分: 10134
  • 博客等级: 上将
  • 技术积分: 9335
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 22:57
个人简介

1

文章分类

全部博文(797)

文章存档

2022年(1)

2021年(2)

2017年(2)

2016年(1)

2015年(4)

2014年(1)

2013年(6)

2012年(6)

2011年(10)

2010年(26)

2009年(63)

2008年(61)

2007年(51)

2006年(563)

我的朋友

分类: LINUX

2006-08-05 11:18:57

在linux下,我们可以通过自带的NTP(Network Time Protocol)协议通过网络使自己的系统保持精确的时间。可用的公共时间服务器列表可以从下面的地址获取:

   


什么是NTP


    NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。


    同样,也有很多免费的NTP客户端可供Windows使用,你可以用它们来同步你windows的系统时间。


下载和安装


   本文介绍如何在AS4上安装时间服务器(本文也同样适用于redhat和fedora core的其他版本),如果想获得NTP的最新版本,你可以下载tar包自己编译,这里只介绍RPM方式安装的NTP服务软件。


  AS4带的NTP版本是4.2.0,你可以用下面的命令查看是否已经安装了这个软件包:


  # rpm -qa|grep ntp


   ntp-4.2.0.a.20040617-4.2


    如果发现没有安装,请从光盘上安装这个软件。执行下面命令安装NTP的RPM包:


   # rpm -ivh ntp-4.2.0.a.20040617-4.2.i386.rpm


   /etc/ntp.conf这是NTP的主要配置文件,里面设置了你用来同步时间的时间服务器的域名或者IP地址,下面是到互联网同步时间的最基本的配置:


   首先定义我们喜欢的时间服务器:


    server pool.ntp.org


   接下来,我们设置上面两台服务器的访问权限,在这个例子中我们不允许它们修改或者查询我们配置在Linux上的NTP服务器


   restrict default nomodify notrap noquery (这个默认在配置文件中就存在)


   接下来设置允许访问我们时间服务器的客户机地址,通常这些服务器都应该位于我们自己局域网内。请注意,配置中noquery已经去掉了:


   restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap


   在上例中,掩码地址扩展为255,因此从192.168.0.1-192.168.0.254的服务器都可以使用我们的NTP服务器来同步时间。


   最后,也是最重要的是默认的限制配置要从你配置文件中删除,否则它将覆盖你所有的配置选项,你将发现如果不删除该配置,你的时间服务器将只能和自己通讯。如果ntp.conf中有以下一行,请将它注释(AS4附带的ntp默认没有):


   # restrict default ignore


   保存你的配置文件,然后对每个你在ntp.conf里配置的时间服务器执行2编查询命令:


   # ntpdate pool.ntp.org


    27 Jun 10:12:01 ntpdate[25475]: adjust time server pool.ntp.org offset -0.127154 sec


    # ntpdate ntp.research.gov


    27 Jun 10:12:06 ntpdate[25478]: adjust time server pool.ntp.org offset 0.010008 sec


使NTP进程自启动


   为了使NTP服务可以在系统引导的时候自动启动,执行:


   # chkconfig ntpd on


    启动/关闭/重启NTP的命令是:


    # /etc/init.d/ntpd start


    # /etc/init.d/ntpd stop


    # /etc/init.d/ntpd restart


    默认情况下,我们配置的NTP服务器不会去时间源那里同步时间,所以必须修改/etc/ntp/step-tickers文件,加入我们的时间源,这样每次通过/etc/init.d/ntpd 来启动服务的时候就会自动更新时间了


   切记每次修改了配置文件后都需要重新启动服务来使配置生效。可以使用下面的命令来检查NTP 服务是否启动,你应该可以得到一个进程ID号:


   # pgrep ntpd


检查时间服务器是否正确同步


   使用下面的命令检查时间服务器同步的状态:


    # ntpq -p


    输出:


     remote          refid       st t when poll reach  delay   offset   jitter


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


-jj.cs.umb.edu   gandalf.sigmaso  3 u   95 1024  377  31.681  -18.549    1.572


milo.mcs.anl.go  ntp0.mcs.anl.go  2 u  818 1024  125  41.993  -15.264    1.392


-mailer1.psc.edu ntp1.usno.navy.  2 u  972 1024  377  38.206   19.589   28.028


-dr-zaius.cs.wis ben.cs.wisc.edu  2 u  502 1024  357  55.098    3.979    0.333


+taylor.cs.wisc. ben.cs.wisc.edu  2 u  454 1024  347  54.127    3.379    0.047


-ntp0.cis.strath harris.cc.strat  3 u  507 1024  377 115.274   -5.025    1.642


*clock.via.net   .GPS.            1 u  426 1024  377 107.424   -3.018    2.534


ntp1.conectiv.c  0.0.0.0         16 u    - 1024    0   0.000    0.000  4000.00


   一个可以证明同步问题的证据是所有远程服务器的jitter值是4000并且delayreach的值是0


    remote           refid      st t when poll reach   delay   offset  jitter


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


 LOCAL(0)        LOCAL(0)        10 l    -   64    7    0.000    0.000   0.008


 ntp-cup.externa 0.0.0.0         16 u    -   64    0    0.000    0.000 4000.00


 snvl-smtp1.trim 0.0.0.0         16 u    -   64    0    0.000    0.000 4000.00


 nist1.aol-ca.tr 0.0.0.0         16 u    -   64    0    0.000    0.000 4000.00


可能的原因有


    配置文件中的restrict default ignore没有被注释


    有防火墙阻断了与server之间的通讯


    此外每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接,否则你执行ntpdate ip的时候将返回:


   27 Jun 10:20:17 ntpdate[21920]: no server suitable for synchronization found


配置Linux客户端


       linux客户端上执行ntpdate ntp_server_ip 就可以根据时间服务器统一局域网的时间了,将上面的命令放到cron里每天早上3点定期执行,crontab –e 然后输入


       0 3 * * * /usr/sbin/ntpdate ntp_server_ip

阅读(1159) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~