NTP(The Network Time Protocol) 是网络时间协议,用以同步网络内计算机的时间。
它通过udp包交换,用特定算法进行协商,从而把计算机上的时间与时间服务器上的
时间保持一致。通过互联网它支持的误差是10毫秒,局域网则可以达到200微秒。
NTP时间服务器分为多层,从0层到4层,每层依次与上一次服务器同步,最高层的服务器
则直接连接一个高精度的时钟设备,比如原子钟、GPS或者电波时等。
自己搭建时间服务器需要指定一个上层的时间服务器,然后它可以向局域网内的其它机器
提供同步服务。
详细信息可以见:
http://en.wikipedia.org/wiki/Network_Time_Protocol
安装NTP Server
Linux系统内核提供了对NTP的支持,因此只需要再安装一个NTP Server的守护进程即可。
常用的ntpd由ntp.org提供。
下载安装ntpd的稳定版本。目前是ntp-4.2.6p3.
http://www.ntp.org/downloads.html
示范脚本::
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p3.tar.gz
tar zxf ntp-4.2.6p3.tar.gz
mkdir /app/ntp
cd ntp-4.2.6p3
./configure --prefix=/app/ntp --enable-all-clocks --enable-parse-clocks
make clean && make check && make && make intall
注意:/app/ntp为ntpd的安装后文件路径
配置
1. 配置文件位置为::
/etc/ntp.conf
2. 修改配置允许局域网内机器与该服务器进行时间同步。
将下面语句::
restrict default kod nomodify notrap nopeer noquery
修改为::
restrict default nomodify
3. 修改上一层的时间服务器。
ntp.org现在提供NTP POOL PROJECT,即ntp 服务器池项目。在中国区域,配置如下即可::
server 0.cn.pool.ntp.org
server 0.asia.pool.ntp.org
server 2.asia.pool.ntp.org
其中0.cn 是中国服务器池,后面两个是亚洲的服务器池。
最新列表见:
http://www.pool.ntp.org/zone/cn
启动 NTP 服务器
进入ntpd安装后的路径,如/app/ntd, 启动参数如下::
./ntpd -c /etc/ntp.conf -p /tmp/ntpd.pid -l /app/ntp/log/ntp.log
注意启动后需要等几分钟,否则其它机器来同步时会得到
no server suitable for synchronization found
的错误。
Linux客户端机器配置
客户端机器使用ntpdate 程序来执行同步。 格式如下::
ntpdate ntp-server-ip
如果需要配置计划任务,命令如下::
# 查看是否已经添加时间同步的计划任务
cat /etc/crontab
# 如果没有则添加下列行,每30分钟同步一次:
echo '*/30 * * * * root /usr/sbin/ntpdate 10.20.219.43' >> /etc/crontab
# 将计划任务设为自动,默认是启动的【可选】
chkconfig crond on
# 启动计划任务服务
service crond restart
# 有些机器需要设置时区为中国
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Windows客户端机器配置
微软从Windows 2000后支持NTP,由Win32 Time服务提供。
配置的命令行代码如下::
rem : 将时间同步服务设为自动,默认被禁用 :
sc config W32Time start= AUTO
rem : 启动时间同步服务 :
net start W32Time
rem : 设置同步选项 , 10.20.222.2 为时间服务器ip
w32tm /config /syncfromflags:manual /manualpeerlist:10.20.222.2
rem : 更新同步选项 :
w32tm /config /update
rem : 执行同步 :
w32tm /resync