Linux下时间服务器配置

  在linux下,我们可以通过自带的NTP(Network Time Protocol)协议通过网络使自己的系统保持精确的时间。
    
  什么是NTP
  NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。
  
  同样,也有很多免费的NTP客户端可供Windows使用,你可以用它们来同步你windows的系统时间。
  
  下载和安装
  本文介绍如何在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
  
  /etc/ntp.conf
  这是NTP的主要配置文件,里面设置了你用来同步时间的时间服务器的域名或者IP地址,下面是到互联网同步时间的最基本的配置:
  
  首先定义我们喜欢的时间服务器:
  
   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
  
  掩码255.255.255.255是用来限制远程NTP服务器的掩码地址。
  
  接下来设置允许访问我们时间服务器的客户机地址,通常这些服务器都应该位于我们自己局域网内。请注意,配置中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中有以下一行,请将它注释:
  
  # restrict default ignore
  
  保存你的配置文件,然后对每个你在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
  
  使NTP进程自启动
  为了使NTP服务可以在系统引导的时候自动启动,执行:
  
  # chkconfig ntpd on
  
  启动/关闭/重启NTP的命令是:
  
  # /etc/init.d/ntpd start
  # /etc/init.d/ntpd stop
  # /etc/init.d/ntpd restart
  
  切记每次修改了配置文件后都需要重新启动服务来使配置生效。可以使用下面的命令来检查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.5491.572
  milo.mcs.anl.go ntp0.mcs.anl.go 2 u 818 1024 125 41.993 -15.2641.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.0983.9790.333
  +taylor.cs.wisc. ben.cs.wisc.edu 2 u 454 1024 347 54.1273.3790.047
  -ntp0.cis.strath harris.cc.strat 3 u 507 1024 377 115.274  -5.0251.642
  *clock.via.net  .GPS.1 u 426 1024 377 107.424  -3.0182.534
  ntp1.conectiv.c 0.0.0.0 16 u- 10240  0.0000.000 4000.00
   
  
  一个可以证明同步问题的证据是所有远程服务器的jitter值是4000并且delay和reach的值是0。
  
   remote  refid st t when poll reach  delay  offset jitter
  
    
   LOCAL(0)LOCAL(0)10 l-  6470.0000.000  0.008
  
   ntp-cup.externa 0.0.0.0 16 u-  6400.0000.000 4000.00
  
   snvl-smtp1.trim 0.0.0.0 16 u-  6400.0000.000 4000.00
  
   nist1.aol-ca.tr 0.0.0.0 16 u-  6400.0000.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