Linux 环境下NTP 服务搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 环境下NTP 服务搭建相关的知识,希望对你有一定的参考价值。

##################################################################################

实验环境:Red Hat 6.8

vmware workstation 12.5

NTP Server Name:ocbsap01

NTP client Name: ocbsweb01

实验目的:架设一台ntp服务器,使用internet中的ntp服务器进行网络校时,

         并允许子网192.168.10.0/24中的客户机通过该服务器进行网络校时

实验外网NTP地址: cn.pool.ntp.org  

###################################################################################

   NTP服务器Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。

协议使用的UDP 123端口


#####################Server 端操作#####################################

1、检查ntp软件是否安装,这里安装的是系统自带版本ntp-4.2.6p5-10.el6.x86_64

[[email protected] /]# rpm -qa | grep ntp-
ntp-4.2.6p5-10.el6.x86_64
ntpdate-4.2.6p5-10.el6.x86_64


2、编辑NTP配置文件/etc/ntp.conf,先备份一下,然后echo > /etc/ntp.conf清空文件复制如下配置

restrict 参数解释:

restrict 控制相关权限。

语法为: restrict IP地址 mask 子网掩码 参数

其中IP地址也可以是default ,default 就是指所有的IP、


参数有以下几个:

ignore  :关闭所有的 NTP 联机服务

nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网

noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器

notrap : 不提供trap远端登陆:拒绝为匹配的主机提供模式,控制消息陷阱服务。陷阱服务是ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。

nopeer : 用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟

kod :    访问违规时发送 KoD 包。

restrict -6 表示IPV6地址的权限设置。


注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!


2.1 配置文件内容如下:

driftfile /var/lib/ntp/drift
#默认是拒绝所有的的服务器
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#添加同步ntp clent的网段,这里允许 192.168.10.0 网段的客户机进行时间同步
restrict 192.168.10.0    mask 255.255.255.0 nomodify notrap
restrict 127.0.0.1 
restrict -6 ::1
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
#添加外网同步地址,也就是上一级服务器
server  cn.pool.ntp.org  minpoll 4 maxpoll 4 perfer
#server 127.127.1.0
fudge  127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
#指定日志文件位置
logfile /var/log/ntp
logconfig all
statistics clockstats cryptostats loopstats peerstats


3、启动ntp服务

[[email protected] etc]# service  ntpd start

正在启动 ntpd:                                            [确定]


4、查看ntp Server状态

[[email protected] ~]# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

*time6.aliyun.co 10.137.38.86     2 u    5   16    1   48.348   43.397   0.000


相关参数解释:

remote: 指最先响应这个请求的NTP服务器的名称

refid: 指给本地NTP服务器提供时间同步的上级NTP服务器源。

st: 该值用来表示上级NTP服务器源的层级别。由于NTP是层型结构,有顶端的服务器,多层的NTP服务器源,再到客户端。所以服务器从高到低级别可以设定为1-16。为了减缓负荷和网络堵塞,原则上应该避免直接连接到层级别为1的服务器上。

t: 该值用来表示远程服务器的类型,有如下类型:u代表单播或多播的客户端,b代表广播或组播服务器,l代表本地(参考时钟),s代表同级NTP服务器, A代表多播服务器,B代表广播服务器,M代表组播服务器

when: 该值为自上次接收到数据包的时间距离当前的时间值

poll: 该值为本地NTP服务器和上级NTP服务器源的轮询间隔,即双方每过多久同步一次(单位为秒)。在NTP刚开始运行时,poll值会比较小,此时和上级NTP服务器源同步的频率就会增加,因此可以尽快调整到正确的时间范围内。之后poll值就会逐渐增大,同步的频率也就会相应减小。

reach:这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加

delay:该值为本地NTP服务器和上级NTP服务器源的NTP报文的往返时延。

offset:该值为本地NTP服务器和上级NTP服务器源的时间差值。该值越接近0,我们和上级NTP服务器源的时间就越准确。(日常关注这条)

jitter:该值是用来统计在特定个连续的连接数里面offset(时间差值)的分布情况。该数值的绝对值越小,我们和上级NTP服务器源的时间就越准确。



#####################Client 端操作#####################################

1、使用ntpdate命令,检查命令是否安装如果没有安装rpm安装一下

[[email protected] ~]# rpm -qa | grep ntpdate
ntpdate-4.2.6p5-10.el6.x86_64


测试修改目前clent端的时间。

[[email protected] ~]# date -s 2014/05/05 

2014年 05月 05日 星期一 00:00:00 CST

[[email protected] ~]# date

2014年 05月 05日 星期一 00:00:01 CST


2、client端从server端同步时间

[[email protected] ~]# ntpdate 192.168.10.128
12 Jan 11:17:37 ntpdate[6694]: adjust time server 192.168.10.128 offset 0.004131 sec

备注:注意防火墙关闭,ntpd启动后客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。


3、client 自动同步时间,编辑/etc/ntp.conf,chkconfig ntpd --level 35 on

注销如下行

#server 0.rhel.pool.ntp.org iburst

#server 1.rhel.pool.ntp.org iburst

#server 2.rhel.pool.ntp.org iburst

#server 3.rhel.pool.ntp.org iburst

添加server 192.168.10.128 minpoll 4 maxpoll 4 perfer 或主机名即可 即可


#########################Client端验证操作#############################

1、查看ntp服务器有无和上层ntp连通,这里能看到NTP Server的IP,如下显示说明clent和ntp server之前通讯没有问题

[[email protected] ~]# ntpstat 
synchronised to NTP server (192.168.10.128) at stratum 4 
   time correct to within 333 ms
   polling server every 16 s


2、使用ntpdate -d 192.168.10.128 进行时间服务验证,并查看同步详细信息

[[email protected] ~]# ntpdate -d 192.168.10.128
12 Jan 11:27:51 ntpdate[6722]: ntpdate [email protected] Tue Jan 26 13:50:53 UTC 2016 (1)
Looking for host 192.168.10.128 and service ntp
host found : ocbsap01
transmit(192.168.10.128)
receive(192.168.10.128)
transmit(192.168.10.128)
receive(192.168.10.128)
transmit(192.168.10.128)
receive(192.168.10.128)
transmit(192.168.10.128)
receive(192.168.10.128)
server 192.168.10.128, port 123
stratum 3, precision -24, leap 00, trust 000
refid [192.168.10.128], delay 0.02585, dispersion 0.00017
transmitted 4, in filter 4
reference time:    de02a7b8.6b274a2a  Fri, Jan 12 2018 11:19:20.418
originate timestamp: de02a9b7.417bb6cb  Fri, Jan 12 2018 11:27:51.255
transmit timestamp:  de02a9b7.40d639fc  Fri, Jan 12 2018 11:27:51.253
filter delay:  0.02629  0.02661  0.02585  0.02655 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.001500 0.001742 0.001690 0.001996
         0.000000 0.000000 0.000000 0.000000
delay 0.02585, dispersion 0.00017
offset 0.001690
12 Jan 11:27:51 ntpdate[6722]: adjust time server 192.168.10.128 offset 0.001690 sec


####################################常见报错#####################################################

1、当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 

错误1.Server dropped: Strata too high

在ntp客户端运行ntpdate serverIP,出现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.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 127.127.1.0

fudge  127.127.1.0 stratum 8


在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,

这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

那么如何知道何时ntp server完成了和自身同步的过程呢?



错误2.Server dropped: no data

从客户端执行netdate -d时有错误信息如下:

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

192.168.30.22: Server dropped: no data

server 192.168.30.22, port 123

.....

28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found


出现这个问题的原因可能是:


检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。


使用以下命令检查ntp的版本:

# ntpq -c version

下面是来自ntp官方网站的说明:

The behavior of notrust changed between versions 4.1 and 4.2.

In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".

In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd


解决:

把notrust去掉。


以上是关于Linux 环境下NTP 服务搭建的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7之ntp服务搭建

手把手教你在centos 7.4上搭建NTP服务器

手把手教你在centos 7.4上搭建NTP服务器

Linux下NTP服务器搭建

linux ntp服务搭建

linux 搭建 NTP 时间服务器