目标环境,6台linux centos7.0, 一台作为NTPD服务与外部公共NTP服务同步时间,同时作为内网的NTPD服务器,其他机器与这台服务做时间同步。

 服务器IP角色  说明同步方式
 192.168.0.202  NTPD服务

 1、负责与外部公共NTPD服务同步标准时间

 2、作为内外网络的NTPD服务

NTPD服务平滑同步

 192.168.0.xxx 内外NTP客户端 内网设备与192.168.0.202同步时间NTPD服务平滑同步
 ……  内外NTP客户端  内网设备与192.168.0.202同步时间NTPD服务平滑同步

  

安装配置

CentOS 7.0系统已经自带了NTPD服务,一般默认是安装了的,如果没有安装,先检查下,然后配置好yum仓库,yum方式安装下就OK,具体如下:

# rpm -q ntp

ntp-4.2.4p8-2.el6.x86_64    // 这表示已安装了,如果没有安装,这是空白。

如果没有安装,我们安装下

# yum install ntp

......

按上面的安装方式在内网每台服务器上都安装好NTP软件包。

完成后,都需要配置NTP服务为自启动

# chkconfig ntpd on


在配置前,先使用ntpdate手动同步下时间,免得本机与外部时间服务器时间差距太大,让ntpd不能正常同步。


[root@localhost ~]# ntpdate -u 202.112.10.36


13 Apr 09:49:29 ntpdate[9809]: step time server 202.112.10.36 offset 130.466640 sec

配置内网NTP-Server(192.168.0.202)

下面主要是配置内网的NPTD服务器(192.168.0.202), NTPD服务配置核心就在/etc/ntp.conf文件,配置好了就OK。

# 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 our time source, but do not
# permit the source to query or modify the service on this system.
restrict default 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 ::1
# Hosts on local network are less restricted.
restrict 192.168.0.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).
# 中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn
server 210.72.145.44 perfer   # 中国国家受时中心
server 202.112.10.36             # 1.cn.pool.ntp.org
server 59.124.196.83             # 0.asia.pool.ntp.org
#broadcast 192.168.1.255 autokey    # broadcast server
#broadcastclient            # broadcast client
#broadcast 224.0.1.1 autokey        # multicast server
#multicastclient 224.0.1.1        # multicast client
#manycastserver 239.255.254.254        # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# allow update time by the upper server 
# 允许上层时间服务器主动修改本机时间
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor

配置参数和命令简单说明请参考:http://linux.vbird.org/linux_server/0440ntp.php#server_ntp.conf

 

配置文件修改完成,保存退出,启动服务。

systemctl start  ntpd.service

启动后,一般需要5-10分钟左右的时候才能与外部时间服务器开始同步时间。可以通过命令查询NTPD服务情况。

 

查看服务连接和监听

# netstat -tlunp | grep ntp      


[root@localhost etc]# netstat -tlunp | grep ntp
udp        0      0 192.168.0.202:123       0.0.0.0:*                           10243/ntpd              
udp        0      0 127.0.0.1:123           0.0.0.0:*                           10243/ntpd          
udp        0      0 0.0.0.0:123             0.0.0.0:*                           10243/ntpd          
udp6       0      0 2001:da8:22d:e003:2:123 :::*                                10243/ntpd          
udp6       0      0 fe80::250:56ff:febe:123 :::*                                10243/ntpd          
udp6       0      0 ::1:123                 :::*                                10243/ntpd          
udp6       0      0 :::123                  :::*                                10243/ntpd     

看加粗的地方,表示连接和监听已正确,采用UDP方式


ntpq -p 查看网络中的NTP服务器,同时显示客户端和每个服务器的关系

[root@localhost etc]# ntpq -p


     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 210.72.145.44   .INIT.          16 u    -  256    0    0.000    0.000   0.000
*gus.buptnet.edu 10.3.9.9         3 u   48   64  377    1.220    4.114   0.680
 59-124-196-83.H .INIT.          16 u    -  256    0    0.000    0.000   0.000
 LOCAL(0)        .LOCL.          10 l    -   64    0    0.000    0.000   0.000

 

位置标志含义
符号*响应的NTP服务器和最精确的服务器
+响应这个查询请求的NTP服务器
blank(空格)没有响应的NTP服务器
标题remote响应这个请求的NTP服务器的名称
refidNTP服务器使用的更高一级服务器的名称
st正在响应请求的NTP服务器的级别
when上一次成功请求之后到现在的秒数
poll本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小
reach用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加
delay从本地机发送同步要求到ntp服务器的往返时间
offset主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近
jitter统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确

 

ntpstat 命令查看时间同步状态,这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。

刚启动的时候,一般是:

[root@localhost etc]# ntpstat
synchronised to NTP server (202.112.10.36) at stratum 4 
   time correct to within 89 ms
   polling server every 64 s

OK,内网的NTPD服务已经配置完成,如果所有正常后,开始配置内网的其他设备与这台服务器作为时间同步服务。


注意:需要需要开放防火墙123端口
[root@localhost etc]# firewall-cmd --zone=public --add-port=123/udp --permanent
success
[root@localhost etc]# firewall-cmd --reload
success

配置内网NTP-Clients

内网其他设备作为NTP的客户端配置,相对就比较简单,而且所有设备的配置都相同。

首先需要安装NTPD服务,然后配置为自启动(与NTP-Server完全一样)。然后找其中一台配置/etc/ntp.conf文件,配置完成验证通过后,拷贝到其他客户端机器,直接使用即可。

# yum install ntp

...

# chkconfig ntp on

# vim /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 our time source, but do not
# permit the source to query or modify the service on this system.
restrict default 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 ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# 配置时间服务器为本地的时间服务器
server 192.168.0.202
restrict 192.168.0.202 nomodify notrap noquery
#broadcast 192.168.1.255 autokey    # broadcast server
#broadcastclient            # broadcast client
#broadcast 224.0.1.1 autokey        # multicast server
#multicastclient 224.0.1.1        # multicast client
#manycastserver 239.255.254.254        # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# Enable public key cryptography.
#crypto
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor


OK,保存退出,请求服务器前,请先使用ntpdate手动同步下时间

[root@localhost ~]# ntpdate -u 192.168.0.202


13 Apr 10:26:29 ntpdate[32168]: step time server 192.168.0.202 offset 180.718323 sec

这里有可能出现同步失败,一般情况下原因都是本地的NTPD服务器还没有正常启动起来,一般需要几分钟时间后才能开始同步。

错误判断请参考后面的错误处理。

 

# systemctl start  ntpd.service

....

启动后,查看同步情况

# ntpq -p

# ntpstat

.....

因为是内网,一般ntpstat很快就可以同步上,几分钟需要等下.

OK,本机客户端配置完成后,使用SCP拷贝/etc/ntp.conf到其他需要同步的客户端机器,启动NTPD服务即可。

其他客户端机器上操作配置如下:

[root@localhost ~]# ntpdate -u 192.168.0.202
13 Apr 10:26:29 ntpdate[32168]: step time server 192.168.0.202 offset 180.718323 sec
# systemctl start  ntpd.service

错误问题处理

用于收集安装,配置和应用中出现的问题

 

错误1:ntpdate -u ip ->  no server suitable for synchronization found


判断:在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

原因:NTP server还没有和其自身或者它的server同步上。在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

处理:等待几分钟后,重试一般解决。

也可以使用命令 ntpq -p查看情况

参考:http://blog.csdn.net/weidan1121/article/details/3953021