Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
中国大概能用的NTP服务器地址 http://www.pool.ntp.org是NTP的官方网站,在这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server
133.100.11.8 prefer
210.72.145.44
203.117.180.36
131.107.1.10
time.asia.apple.com
64.236.96.53
130.149.17.21
66.92.68.246
www.freebsd.org
18.145.0.30
clock.via.net
137.92.140.80
133.100.9.2
128.118.46.3
ntp.nasa.gov
129.7.1.66ntp-sop.inria.frserver 210.72.145.44(中国国家授时中心服务器IP地址)
ntp.sjtu.edu.cn (上海交通大学网络中心NTP服务器地址)202.120.2.101 (上海交通大学网络中心NTP服务器地址)
1.确认是否安装NTP软件包如果没有请使用yum -y install ntp来安装。
[root@localhost ~]# rpm -qa|grep ntp
ntpdate-4.2.4p8-3.el6.centos.i686
ntp-4.2.4p8-3.el6.centos.i686
2.NTP配置文件
运行一个NTP Server不需要占用很多的系统资源,所以也不用专门配置独立的服务器,就可以给许多client提供时间同步服务, 但是一些基本的安全设置还是很有必要的
那么这里一个很简单的思路就是第一我们只允许局域网内一部分的用户连接到我们的服务器. 第二个就是这些client不能修改我们服务器上的时间
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求
[root@localhost ~]# cat /etc/ntp.conf //查看ntp.conf配置文件如下:
restrict default kod nomodify notrap nopeer noquery //首先我们对于默认的client拒绝所有的操作
restrict default ignore //设置默认策略为允许任何主机进行时间同步
restrict 127.0.0.1 //然后允许本机地址一切的操作
restrict 192.168.200.0 mask 255.255.255.0 //最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap //允许任何主机跟进行时间同步
restrict 202.120.2.101 //允许202.120.2.101主机跟进行时间同步
server cn.pool.ntp.org prefer //设置此服务器同上层服务器做时间同步的IP地址,prefer意味着首选IP地址
server 202.120.2.101 //设置上层服务器做同步ip地址
#server 127.127.1.0 //local地址
fudge 127.127.1.1 stratum 10 //这行是时间服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0
driftfile /etc/ntp/drift //记录上次的NTP server与上层NTP server联接所花费的时间
statsdir /var/log/ntp/ //设置ntp日志的path
logfile /var/log/ntp/ntp.log //设置ntp日志文件
系统默认去掉#号配置/etc/ntp.conf如下:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 202.120.2.101 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
3.NTP server的维护
----添加为服务
chkconfig --level 345 ntpd on
----启动
service ntpd start
或
/etc/rc.d/init.d/ntpd start
----停止
service ntpd stop
或
/etc/rc.d/init.d/ntpd stop
----管理命令
ntpq –p #查看本机和上层服务器的时间同步结果
ntptrace #可以用來追踪某台时间服务器的时间对应关系
ntpdate IP #客户端要和NTP server进行时钟同步。
/var/log/ntp/ntp.log #查看ntp日志
ntpstat # 也可以查看一些同步状态
watch ntpq -p #监测服务器的运行查NTP源
[root@localhost ~]# watch ntpq -p //监测服务器的运行查NTP源
Every 2.0s: ntpq -p Sun Dec 2 00:05:31 2012
remote refid st t when poll reach delay offset jitter
==============================================================================
dns.sjtu.edu.cn 202.112.31.197 3 u 4 64 77 14.668 1907019 8528448
dns2.synet.edu. .INIT. 16 u - 64 0 0.000 0.000 0.000
现在我就来解释一下其中的含义
remote: 它指的就是本地机器所连接的远程NTP服务器
refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
t: 这个.....我也不知道啥意思^_^
when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay: 从本地机发送同步要求到服务器的round trip time
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确
4.配置客户端
1.LINUX客户端: (局域网内对时间有要求的机器)
echo “00 */1 * * * root /usr/sbin/ntpdate 192.168.200.240;/sbin/hwclock -w”>>/etc/crontab
每小时同NTP server进行一次时钟同步,并写入本机BIOS
本文转自zh888 51CTO博客,原文链接:http://blog.51cto.com/zh888/1244772,如需转载请自行联系原作者