之前一直想在单位的网络中架设一台时间服务器,用于所有服务器和其它硬件设备的时间同步,以前用了一个小软件在Windows服务器上提供校时服务,但感觉不是很稳定。所以痛下决心要架一台稳定的NTP时间服务器,最近查阅了不少资料,发现Windows自带的时间服务有很多局限性,因此选择了在Linux上架设标准NTP服务。

  我在单位的VMware vSphere集群中建了一个CentOS 6.5的虚拟机,CentOS在安装时选择了最小化安装(大家也可以选择桌面服务器选项进行安装)。

  安装完CentOS系统后,先将网络配置好(如何配置Linux的网络,在这就不详述了,不会的可以问度娘),我的IP设置为192.168.3.18。

  首先,我们要确认CentOS系统中是否已安装有NTP软件(选择桌面服务器安装的,已默认安装该软件):

[root@ntp ~]rpm –qa|grep ntp
fontpackages-filesystem-1.41-1.1.e16.noarch
ntp-4.2.6p5-1.e16.centos.x86_64
ntpdate-4.2.6p5-1.e16.centos.x86_64

  如果出现上述结果中的第二和第三个软件,就说明NTP软件已经安装。如果没有,可以用 yum install ntp 命令进行安装,在此就不细述了。

  接下来的主要工作就是要编辑NTP软件的配置文件:

[root@ntp ~] vi /etc/ntp.conf

  修改后的配置文件如下(中文注释的地方自己理解一下,然后根据自己的实际情况修改。以前我写的博文里有些地方引用了我单位内部网络里使用的域名,结果有人问我为啥他们连接不到那个域名指向的服务器或服务,为啥?那是我单位的网,不在互联网上,当然连不上啦,看文章也不能只会照抄啊):

# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

# Permit time synchronization with out time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of 
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1

# Hosts on local network are less restricted.
# 这里是设置本地网络段的客户端可以访问此NTP服务器(默认为不设置)。
restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 这里是配置上级NTP服务器的,如果没有上级NTP时间源服务器,可以不用配置。
# 原配置文件默认在下面有三个互联网的公共NTP时间源服务器,如果你的服务器互联网,可以不用修改。
# 由于我的网络是个局域网(不连互联网),有一台192.168.1.5的上级NTP服务器,
# 因此,我将原默认的互联网公共服务器指定给注释掉,更改成我的上级NTP服务器指向。
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server 192.168.1.5 perfer     # perfer这个参数是指在有多个上级服务器指定的时候,以此服务器为主

# 为了防止上级服务器发生故障或无法连接的情况下,本服务器不提供NTP校时服务,
# 需要将本机的时间为做为时间服务(如果上面不设置上级服务器,就永久将本机时间作为时间源)
server 127.127.1.0    #local clock
fudge 127.127.1.0 stratum 8  #设置本服务器在整个时间服务器链中的层级,这里设置为第8级

# 后面的内容一般就不需要修改了,除非要使用广播等功能
# broadcast 192.168.1.255 autokey    # broadcast server
# ........



  修改完配置文件后就保存退出。

  在启动NTP服务之前,我们需要先将本机与上级服务器进行一次时间校对,尽可能的将本机的时间与上级服务器同步(无上级服务器的可以跳过此步):

[root@ntp ~]ntpdate 192.168.1.5

  同步之后,就可以启动NTP服务了:

[root@ntp ~]service ntpd start

  服务启动用,我们可以监视一下本机与上级服务器的同步情况(按 Ctrl+Z 退出):

[root@ntp ~]watch ntpq -p

  如果有上级服务器,会显示两行结果,如果没有上级服务器,就只会显示LOCAL(0)一条结果。哪条结果的前面有*号,就说明该服务器在向本机提供时间服务器;如果每条结果前都是X,说明连接都失败了;如果每条前面都没有任何标记,说明还没有服务器向本机提供时间服务。

Every 2.0s ntpq -p                                Fri Feb 00:40:27 2016
   remote        refid   st  t  when poll reach  delay  offset  jitter
======================================================================
*192.168.1.5     .GPS.    1  u   28  256   377   2.115  32.523   7.305
 LOCAL(0)        .LOCL.   8  1  164   64     0   0.000   0.000   0.000

  NTP服务刚启动的时候,一般*号都会在LOCAL(0)的前面,大约5-10分钟后,*号会移到之前设置为perfer的上级服务器前。

 

  到此,我们的NTP服务器就架设基本成功了,下面还要做两件事:关闭防火墙和将NTP服务设置成随系统自动启动。

  (一)关闭防火墙。很多人在按照本文架设好NTP服务器后,会发现客户端无法连接上本服务器,主要的原因就是没有本机的关闭防火墙,导致客户端无法访问本机。

  1、关闭防火墙服务:

[root@ntp ~]service iptables stop

  2、禁止防火墙服务随系统自动启动:

[root@ntp ~]chkconfig --level 2345 iptables off

  (二)设置NTP服务随系统自动启动:

[root@ntp ~]chkconfig --level 2345 ntpd on



参与资料:

1、http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=20551990&id=4308732

2、http://www.2cto.com/os/201407/322032.html

3、http://linux.vbird.org/linux_server/0440ntp.php


CentOS下NTP时间服务器的架设和Windows客户端的配置(一)Linux服务器配置

CentOS下NTP时间服务器的架设和Windows客户端的配置(二)Linux客户端配置

CentOS下NTP时间服务器的架设和Windows客户端的配置(三)Windows客户端配置