Locations of visitors to this page

Thursday, October 16, 2008

time sync with NTP - 配置NTP(网络时间协议)同步时间

---------- Forwarded message ----------
From: XIE WEN-MFK346 <wenxie at motorola.com>
Date: 2008/10/16
Subject: ntp同步时间
To: xiewenxiewen at gmail.com

网络时间协议NTP(Network Time Protocol)是用于校正网络上服务器的时间的协议
客户端通过UDP的123端口接连提供NTP时间服务的服务器,同步时间,保证客户端的时间是准确的
NTP采用客户机-服务器的分层结构
最高一级是第0级(stratum 0),比如美国海军天文台的铯原子钟(cesium clock)或全球定位系统(GPS)时钟,也叫参考时钟(reference clocks)
往下一级是第1级(stratum 1),从第0级的参考时钟同步时间,是在因特网上提供时间服务的顶级时间服务器
再往下一级是第2级(stratum 2),从第1级同步时间,这一级服务器在因特网上有很多,所以一般就从这级同步时间
以此类推,下一级从上一级同步时间。最低一级是16级(stratum 16),表示服务不可访问

ntp.org上有个项目叫pool.ntp.org,是按大洲国家划分建立起一系列虚拟的NTP服务器集群,用来分散单个服务器上的压力
选用了pool做时间服务器,它会按一定规则分配一个真实的服务器地址返回给客户机
pool.ntp.org是最高一级,包括了全部服务器
往下按洲划分为europe,north-america,oceania,asia,south-america,africa
比如, europe.pool.ntp.org, africa.pool.ntp.org
再往下按国家分,比如cn.pool.ntp.org
每级域名下又分3个下级域名,从0到2
比如0.pool.ntp.org,1.asia.pool.ntp.org,0.cn.pool.ntp.org,2.us.pool.ntp.org

NTP的工作方式有下面三种:
客户端-服务器(client-server):客户机从服务器同步时间
点对点(peer-to-peer):互相参考校正时间,用于配置多个时间服务器给客户使用,保证可靠性
广播/多播(broadcast/multicast):用于局域网内服务器向客户机定时广播时间,精度不高

举例

图1

 ---------------------   ----------------------------   ---------------------
| 0.asia.pool.ntp.org | | north-america.pool.ntp.org | | 1.asia.pool.ntp.org |
 ---------------------   ----------------------------   ---------------------
  ^                           ^                               ^
  |                           |                               |
  | 
   --------------------- 
|
|
| 
|
| |
---------------------------------------------------

| | |
| |
| 
-----------------
| |
| 
| cn.pool.ntp.org
|
| |
| 
-----------------
| |
| 
^
| | | 
--------------------- | 
----------------------
| |
| | europe.pool.ntp.org
| | | oceania.pool.ntp.org
|
| | | 
--------------------- | 
----------------------
| |
| 
^ 
| 
^
| | | 
| 
| 
|
| | | 
--------------- | -----------

| | | 
| | |
| |
| 
| | |
| |
| 
| | |
| |
| 
| | | 
Internet
----------------------------------------------------------------------------------------------

| | | 
| | | 
Intranet
| |
| 
| | |
| |
| 
| | |

--------------- 
----------------
| time1 
| peer 
| time2 |

| 192.168.11.16
|<----------------->| 192.168.12.100
|
--------------- 
----------------
^ ^ 
^ 
^ ^ ^
|
| | 
| | |
| 
-------- --------------------|--- 
|
| 
| | | 
| |
|
--------------------------------- 
|
| | |
| | 
|
| | 
---|--|---------- --------------

| | |
| | |

| | |
| | |

------- ------- 
-------
| srv 1 | | srv 2 | .... | srv n |

------- ------- 
-------




内网上有两台机器time1,time2,从公网上时间服务器上同步时间,用的是服务器/客户机模式
time1,time2采用点对点对等的模式,互相同步
time1,time2向内网上其它机器提供时间同步服务,用的也是服务器/客户机模式
本来想在内网内用广播模式的,但路由器好像阻止了广播,所以没成功

在time2上配置/etc/ntp.conf

restrict是安全访问控制用的
restrict default ignore 默认阻止使用NTP服务
restrict 127.0.0.1 允许本地127.0.0.1访问NTP服务。后面什么都不加,表示有全部的权限
restrict 192.168.11.0 mask 255.255.255.0 nomodify notrp 允许192.168.11.0子网访问服务,但不能修改服务器上时间(nomodify)或查看事件日志(notrap),可以查询
server 指定了时间服务器地址
后面的restrict指定时间服务器的访问控制权限。我不知道应该用什么权限好,所以全部开放了

server 127.127.1.0
fudge 127.127.1.0 stratum 10
在本地建立一个假的时间服务器

broadcast 是广播地址,暂时没用
broadcastdelay 广播延迟
driftfile 保存了系统时钟频率偏差。用于补偿时钟漂移,保证精确度
keys 口令文件,服务器之间认证才用到,暂时没用

配置/etc/ntp/step-tickers
脚本/etc/init.d/ntpd中,在每次ntpd启动前,首先调用ntpdate从这些服务器同步时间
配置成跟/etc/ntp.conf的server一样就行
awk '/^server/{print $2}' /etc/ntp.conf |grep -v '127.127.1.0' />/etc/ntp/step-tickers


配置/etc/ntp/ntpservers
不知道干什么的,redhat说的:
#This file contains a list of ntp servers to show in the system-config-date user
interface.
#It is not recommended that you modify this file by hand.
配成跟step-tickers一样
awk '/^server/{print $2}' /etc/ntp.conf |grep -v '127.127.1.0' />/etc/ntp/ntpservers


启动ntpd服务
service ntpd start


这时时间还没有同步,要等几分钟后NTP才能正常工作
ntpstat


ntpq -p查看


第1列remote 是上级服务器地址, 前三行是pool.ntp.org上的,LOCAL(0)是本地的, MGT是点对点的那个
第2列refid, 表示上上级服务器的地址, INIT表示正在初始化, BCST表示是广播地址, RSRT表示不可访问
第3列st,表示服务器的级别(stratum), 16说明当前不可访问
其它略

10分钟后,


一般在reach值30多以后,看到同步时间服务正常了

配置time1,方法一样





配置客户机 time1,time2作时间服务器




其它时间同步方式:
ntpdate 前台命令方式,放在crontab定时调用,也是NTP协议的,没ntpd好用,不建议使用
sntp 简单的NTP协议,精度秒级
rdate 不同于NTP协议,精度只有秒级


参考:
Introduction to NTP
The NTP FAQ and HOWTO
A complex NTP configuration scenario
NTP 時間伺服器

ntp.org www.ntp.org
ntp作者 http://www.eecis.udel.edu/~mills/ntp/
RFC1305 http://www.ietf.org/rfc/rfc1305.txt




Xie Wen (谢文)
Network & Operations,
Multimedia Applications & Services (MDB)
MOTOROLA Inc.
NO.104 mail box, 8th floor, Motorola Tower,
No. 1 Wang Jing East Road, Chao Yang District,
Beijing 100102 P. R. China
e-mail wenxie at motorola.com




--fin-

No comments:

Website Analytics

Followers