sxyzy 发表于 2018-5-22 07:50:16

NTP for LINUX

  用NTP来同步服务器时间
  本文介绍了在Linux下使用NTP协议通过网络来同步系统时钟。
  二、NTP简介
  Network Time Protocol(NTP)是一种网络协议,用来使你的计算机系统时间与准确的时间源同步。Internet上有一组“1级”(使用原子钟时间)和“2级”(可接受的可靠性和准确性)服务器可以允许其它计算机与它们同步时间。这些服务器的列表可以在以下地址找到:
  http://www.eecis.udel.edu/~mills/ntp/servers.html
  一般局域网中使用一台服务器同“1级”或“2级”服务器同步时间,局域网中的其它设备再同这台服务器同步时间。对于一些需要协同操作的应用,使用NTP是很好的选择。
  三、安装NTP软件
  1、获取NTP软件
  ntp-4.1.1.tar.gz
  http://www.ntp.org/downloads.html
  2、编译安装
  解压缩软件包
  tar xzvf ntp-4.1.1.tar.gz
  配置编译选项
  cd ntp-4.1.1/
  ./configure
  编译安装
  make
  make check
  make install
  缺省执行程序被安装在/usr/local/bin目录下。
  四、配置NTP服务
  1、编辑配置文件
  缺省使用/etc/ntp.conf文件作为配置文件,这里给出一个例子:
  server 127.127.1.0   # local clock
  fudge127.127.1.0 stratum 10
  server otherntp.server.org    # A stratum1 server at server.org
  server ntp.research.gov       # A stratum2 server at research.gov
  driftfile /etc/ntp/drift
  broadcastdelay0.008
  authenticate no
  keys /etc/ntp/keys
  restrict 192.168.1.0 mask 255.255.255.0notrust nomodify notrap
  restrict 127.0.0.1
  #restrict default ignore
  在这个配置文件中,我们指定了两个同步时间源:otherntp.server.org和ntp.research.gov。并指定了192.168.1.0/24这个局域网中的客户端都可以与我们的服务器同步时间,当然本地127.0.0.1也可以。
  注意,“#restrictdefault ignore”这一句是被注释的,否则它会覆盖其它restrict语句,我们的服务器就不能与其它计算机通信了。
  实际使用时最好指定3到4个同步时间源,这样就可以避免因某个时间源无法访问而不能同步时间。
  更多的配置选项请参考http://www.ntp.org/documentation.html中的文档。
  2、启动NTP服务
  执行下面的命令启动NTP服务:
  /usr/local/bin/ntpd -c /etc/ntp.conf -l/var/log/ntpd.log -p /var/run/ntpd.pid
  ntpd启动后,日志文件在/var/log/ntpd.log,进程号文件在/var/run/ntpd.pid。如果有什么问题可以查看日志文件的内容。
  3、确认服务器时间正确同步
  ntpd启动后过一段时间后就可以查看你的服务器是否正确与时间源同步,使用/usr/local/bin/ntpq -p
  显示例子如下:
  remote         refid      st t when poll reach   delayoffsetjitter
  ==============================================================================
  *LOCAL(0)      LOCAL(0)      10 l   5664377    0.000   0.000   0.008
  dan.drydog.com tick.ucla.edu    2 u12864    4640.988 -85.179   0.008
  下面的例子说明不能正确同步:
  remote         refid      st t when poll reach   delayoffsetjitter
  ==============================================================================
  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
  这是就要考虑是配置的问题还是网络的问题了。
  五、其他问题
  1、网络中其他计算机
  在局域网中的其它设备只要支持NTP都可以与刚配好的服务器同步时间。例如有一台Cisco的路由器,配置如下:
  ciscorouter(config)# ntp server192.168.1.100
  ciscorouter(config)# clock timezone CN 8
  这里假定我们的服务器地址是192.168.1.100,我们中国的时区是+8。在Cisco路由器中就可以用show clock命令来查看时间是否同步。
  2、防火墙问题
  NTP协议使用UDP协议的123端口来通信,注意源端口和目的端口都是123。所以如果你使用防火墙,需要允许UDP的123端口。
  3、不能同步
  如果你的计算机的系统时间与时间源的时间相差太大,就不能正确同步。这时可以先手动调整你的计算机的时间以接近时间源的准确时间,再使用NTP来同步时间。
  手动调整时间可以使用date命令,如:
  date -s "05/20/2003 14:11:20"
  时间格式为:月/日/年时:分:秒
  六、参考资料
  http://www.siliconvalleyccie.com/ntp.htm
  http://www.ntp.org/documentation.html
  
页: [1]
查看完整版本: NTP for LINUX