NTP summary

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

I.下载和安装
     在RedHat9.0上安装时间服务器,如果想获得NTP的最新版本,你可以下载tar包自己编译,这里只介绍RPM方式安装的NTP服务软件。

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

    # rpm -qa|grep ntp
    chkfontpath-1.9.7-1
    ntp-4.1.2-0.rc1.2

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

    # rpm -ivh ntp-4.1.2-0.rc1.2.i386.rpm

II. 配置文件 /etc/ntp.conf

    1)定义外部服务器

     server ntp.research.gov
     server otherntp.research.gov
     接下来,我们设置上面两台服务器的访问权限,在这个例子中我们不允许它们修改或者查询我们配置在Linux上的NTP服务器
 
    restrict ntp.research.gov mask 255.255.255.255 nomodify notrap noquery
    restrict otherntp.research.gov mask 255.255.255.255 nomodify notrap noquery
  
  
    2)设置可以访问的客户机地址,通常这些服务器都应该位于我们自己局域网内。

    restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap (主要没有noquery)
   

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

    # restrict default ignore

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

    # ntpdate ntp.research.gov
    27 Jun 10:12:01 ntpdate[25475]: adjust time server ntp.research.gov offset -0.127154 sec
    # ntpdate ntp.research.gov
    27 Jun 10:12:06 ntpdate[25478]: adjust time server ntp.research.gov offset 0.010008 sec

III 使用工具来启动服务和检查时间服务器是否正确同步

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

    # chkconfig ntpd on

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

    # /etc/init.d/ntpd start
    # /etc/init.d/ntpd stop
    # /etc/init.d/ntpd restart

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

    # pgrep ntpd

 

    2) 用“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并且delay和reach的值是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的时候将返回:


上述一些字段的含义:
  refid:参考的上一层 NTP 主机的地址
  st:stratum 阶层
  when:几秒钟前曾经做过时间同步化更新的动作;
  poll:下一次更新在几秒钟之后;
  reach:已经向上层 NTP 服务器要求更新的次数
  delay:网络传输过程当中延迟的时间,单位为 10^(-6) 秒
  offset:时间补偿的结果,单位与 10^(-6) 秒
  jitter:Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒。


也可以检查一下BIOS时间与Linux系统时间的差异,就是/var/lib/ntp/drift的内容,就能了解到Linux系统时间与BIOS硬件时钟到底差多久?单位为 10^(-6) 秒


   3)ntptrace

IV Linux客户端配置
1) 类似 II.1,在客户端的ntp.conf配置文件里,增加局域网内的server ip.
 
2) 用ntpdate server-name 手工同步时间
   或者用crontab -e配置自动同步
  
   Example: #echo "40 7 * * * root /etc/init.d/ntpd restart; /sbin/hwclock -w" >>/etc/crontab

V Window客户端配置

1.
修改注册表如下第过12个小时同步一次)
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpClient]
"SpecialPollInterval"=dword:00015180

2.
cmd下运行如下命令:
net time /setsntp:192.168.X.X
net stop w32time
net start w32time

V 遇到的一个问题
为测试客户端设置NTP server功能,把一台linux机器配置成服务器。在客户端用ntpdate命令,可以连接,但是客户端的时间就是不变。仔细检查,服务器端设置没有问题。后来在google搜索,看到一篇介绍linux时间设置的文章,有了一个灵感是不是时区不一致。检查服务器时区,它是美国芝加哥时区,而其他的机器都是中国上海。改变服务器时区,同步没有问题了。
  设定时区步骤:
    1)运行tzselect来设置时区。假设设置的时区是$timezone(比如Asia/Shanghai)
    2)保存时区: cp /usr/share/zoneinfo/$timezone /etc/localtime

VI.References
http://blog.csdn.net/zlhg/archive/2010/02/22/5316284.aspx
http://blog.csdn.net/wind_sky/archive/2009/09/10/4537807.aspx
http://blog.tianya.cn/blogger/post_show.asp?BlogID=576400&PostID=10607829
......

发布了36 篇原创文章 · 获赞 3 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章