用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
fudge 127.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
broadcastdelay 0.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 delay offset jitter
==============================================================================
*LOCAL(0) LOCAL(0) 10 l 56 64 377 0.000 0.000 0.008
dan.drydog.com tick.ucla.edu 2 u 128 64 4 640.988 -85.179 0.008
下面的例子说明不能正确同步:
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
这是就要考虑是配置的问题还是网络的问题了。
五、其他问题
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