当前位置: > Linux服务器 >

CentOS下部署NTP服务器

时间:2014-09-14 23:53来源:linux.it.net.cn 作者:it
http://www.ntp.org/downloads.html

安装NTP
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p3.tar.gz
tar ntp-4.2.6p3.tar.gz
cd  ntp-4.2.6p3
./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make 
make install
cp /usr/local/ntp/bin/* /usr/bin/
 
修改ntp.conf配置文件

首先先了解一下ntp.conf里面涉及到参数说明
关于权限设定部分; 权限的设定主要以 restrict 这个参数来设定
格式如下:
restrict IP地址 mask 子网掩码 参数; 其中 IP 可以是IP地址,也可以是 default ,default
就是指所有的IP参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时
notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网
 
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制
 
用server这个参数设定上级时间服务器
格式如下: server IP地址或域名 [prefer]
IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP
服务器主要以该部主机时间进行校准
driftfile格式如下:driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内 注意: driftfile
后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。

vi /etc/ntp.conf
1.允许任何IP的客户机都可以进行时间同步
将“restrict default kod nomodify notrap nopeer noquery”这行修改成:
restrict default nomodify

2.只允许192.168.0.0网段的客户机进行时间同步
restrict 192.168.0.0 mask 255.255.0.0 nomodify

源文件安装是没有ntp.conf (闲麻烦的话,大家可以选择yum -y install ntp) 手动添加,touch /etc/ntp.conf,复制以下
======================================================================
restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.0.0 nomodify
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10 #调整为8,表示将使用local时间作为ntp服务提供给ntp客户端
driftfile /var/lib/ntp/drift
broadcastdelay  0.008
keys            /etc/ntp/keys 
=====================================================================

让本服务器时间与time.nist.gov时间同步,使服务器为标准时间
使用ntpd同步时间(注意:使用ntpd时,本机与上源的时间相差不能太大,否则不运行,所以应
该先用ntpdate取得时间初值后在启动ntpd) 

[root@localhost ~]# ntpdate time.nist.gov

以守护进程启动ntpd
[root@localhost ~]#/usr/local/ntp/bin/ntpd -c /etc/ntp.conf -p /tmp/ntpd.pid
如果是yum安装ntp  使用 chkconfig --level 35 ntpd on
[root@localhost ~]#netstat -nul |grep 123
udp        0      0 192.168.50.91:123           0.0.0.0:*                               
udp        0      0 127.0.0.1:123               0.0.0.0:*                               
udp        0      0 0.0.0.0:123                 0.0.0.0:*
 
[root@localhost ~]# ntpq -p
     remote           refid                     st t when   poll  reach   delay     offset         jitter
==============================================================================
 114.80.81.1     204.152.184.72     2 u    5      64    1       13.142  -287655   0.001
 218.75.4.130    216.218.192.202  2 u    4      64    1       15.109  -287655   0.001
*LOCAL(0)        .LOCL.               10 l    3      64    1       0.000    0.000       0.001
 
    remote:响应这个请求的NTP服务器的名称。
 
  refid:NTP服务器使用的上一级ntp服务器。
 
  st :remote远程服务器的级别.由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端.所以服              务器从高到低级别可以设定为1-16.为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器
 
  when: 上一次成功请求之后到现在的秒数。
 
  poll : 本地机和远程服务器多少时间进行一次同步(单位为秒).在一开始运行NTP的时候这个poll值会比较小,那                  样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率               也就会相应减小
 
  reach:这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
 
  delay:从本地机发送同步要求到ntp服务器的round trip time
 
  offset:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。offset越接近于0,主机和                     ntp服务器的时间越接近
 
  jitter:这是一个用来做统计的值.它统计了在特定个连续的连接数里offset的分布情况.简单地说这个数值的绝对                  值越小,主机的时间就越精确
    两个问题:
第一 设置ntp连接的是 server 0.pool.ntp.org ,为什么和remote server不一样
因为NTP提供给我们的是一个cluster server所以每次连接的得到的服务器都有可能是不一样.同样这也告诉我们了在指定NTP Server的时候应该使用hostname而不是IP 
第二 最前面的+和*都是什么意思
和第一个相关,既然有这么多的服务器就是为了在发生问题的时候其他的服务器还可以正常地给我们提供服务.那么如何知道这些服务器的状态呢? 这就是第一个记号会告诉我们的信息 

它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供 

它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管 

远程服务器被clustering algorithm认为是不合格的NTP Server 

远程服务器不可用
==========================================================================
如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断)
[root@localhost ~]# ntpdate -d
 
iptables设置:

安全设置,开放192.168.0.0访问本机123端口
/sbin/iptables -A INPUT -p UDP -i eth0 -s 192.168.0.0/24  --dport 123 -j ACCEPT
 

linux客户端设置NTP
目前 Linux 系统上面有两个时间,一个是 Linux 系统,另一个则是 BIOS 时间(真正的硬件记录的时间)
可以使用 date 这个指令来手动修正目前主机的时间,date 这个指令仅修正 Linux 时间而已,所以需要以 hwclock 这个指令来将 BIOS 时间也更新才行
[root@test root]# date MMDDhhmmYYYY 
MM:月份 
DD:日期 
hh:小时 
mm:分钟 
YYYY:公元年
  
[root@test root]# hwclock [-rw]
-r:检视目前的 BIOS 时间 
-w:将目前 Linux 的时间写入 BIOS 当中!
[root@localhost ~]# date ; hwclock -r 
2011年 03月 23日 星期三 01:03:59 CST
2011年03月23日 星期三 03时05分00秒  -0.914570 seconds
#  date 与 hwclock -r 所显示的时间是『不一致的』! 
# 因为 Linux 时间与 BIOS 时间不一致所导致的一个问题! 
# 需要以 hwclock -w 来将 Linux 时间写入 BIOS
[root@localhost ~]# hwclock -w 
[root@localhost ~]# date ; hwclock -r 
2011年 03月 23日 星期三 01:03:59 CST
2011年03月23日 星期三 01时04分00秒  -0.814770 seconds

#自动同步服务器时钟
[root@localhost ~]# crontab -e
# 加入这一行: 

10 5 * * * root /usr/sbin/ntpdate 192.168.50.91;/sbin/hwclock -w
[root@localhost ~]# service crond restart

windows客户端设置NTP
直接在控制面板--日期和时间  修改
也可以下载以下软件修改
http://www.stdtime.gov.tw/chinese/exe/NTPClock.exe
(责任编辑:IT)
------分隔线----------------------------