NTP服务概述:

1、NTP【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。时间按NTP服务器的等级传播。按照离外部UTC源的远近把所有服务器归入不同的Stratum(层)中,最多16层。

搭建和配置NTP服务器_服务器

 

 

 

2、端口

[root@localhost ~]# vim /etc/services

ntp              123/tcp

ntp              123/tcp                                             #Network Time Protocol

3、检查ntp服务的安装情况

[root@localhost ~]# rpm -qa |grep ntp
ntpdate-4.2.6p5-25.el7.centos.2.x86_64                        #客户端
ntp-4.2.6p5-25.el7.centos.2.x86_64                               #服务端

 

4、配置ntp

[root@localhost mnt]# 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 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

restrict 192.168.11.0 mask 255.255.255.0       #允许192.168.11.0网段中的服务,访问本ntp服务器来同步时间。

restrict 192.168.10.25                                       #允许单个IP地址访问本ntp服务器来同步时间

# Hosts on local network are less restricted.
#restrict 192.168.1.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).
server 0.centos.pool.ntp.org iburst                        #默认配置提供了四个时钟同步服务器。

server 1.centos.pool.ntp.org iburst                        #指定为本NTP服务器的上游ntp服务器。
server 2.centos.pool.ntp.org iburst                        #同步时间为从上到下,写的越靠前优先级越高。第一个服务器同步
server 3.centos.pool.ntp.org iburst                        #不了时间,则往下寻找另一个NTP服务器来同步时间。

server 127.127.1.0                                                #local clock  如果上面的服务器都无法同步时间,就和本地系统时间同步。

fudge 127.127.1.0 stratum 10                               #指定127.127.1.0 为第10层。ntp和127.127.1.0同步完后,就变成了11层。ntp是层次阶级的。

                       #同步上层服务器的stratum大小不能超过或等于16。

 

5、NTP服务的启动与观察

先同步一下本ntp服务器的时间

[root@localhost ~]# ntpdate 0.centos.pool.ntp.org
30 Oct 19:27:16 ntpdate[137647]: adjust time server 86.108.190.23 offset 0.000980 sec

或手动同步

[root@localhost ~]# date -s "2021-10-30 19:27:16"
Sat Oct 30 19:27:16 CST 2021

 

 

然后启动ntp服务

[root@localhost ~]# service ntpd start 

 

设置ntp服务开机自启

[root@localhost ~]# chkconfig ntpd on

查看123端口是否监听

[root@localhost ~]# netstat -nap |grep 123

 

查看本ntp服务器与上层服务器的连接状态

[root@localhost ~]# ntpstat
synchronised to NTP server (192.36.143.130) at stratum 2
time correct to within 235 ms
polling server every 64 s

 

列出我们的ntp服务器与上游ntp服务器之间的连接状态

[root@localhost ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
localhost.pgw .INIT. 16 u - 64 0 0.000 0.000 0.000
*time100.stupi.s .PPS. 1 u 61 64 77 84.571 1.309 0.604
+tor.nocabal.de 131.188.3.222 2 u 58 64 77 69.126 -3.367 0.444
2001:440:1880:5 .INIT. 16 u - 64 0 0.000 0.000 0.000
+time.cloudflare 10.80.8.4 3 u 64 64 77 19.632 -0.309 0.667
time-b-g.nist.g .NIST. 1 u 8 64 177 149.759 1.451 0.281
LOCAL(0) .LOCL. 10 l 398 64 100 0.000 0.000 0.000

remote:本机与上层ntp的ip或主机名,“+”表示优先,“*”表示次优先。

refid:参考的上一层ntp主机地址

st:stratum阶层

poll:每几秒更新一次

offset:时间补偿的结果

 

     拓展:

1、客户端在手动测试同步时间时遇到如下情况

[root@localhost ~]# ntpdate 192.168.11.23

30 Oct 19:55:43 ntpdate[450405]: the NTP socket is in use, exiting

 

需要先停掉客户端的ntp服务,再进行同步

[root@localhost ~]# service ntpd stop

 

再尝试手动测试同步

[root@localhost ~]# ntpdate 192.168.11.23
30 Oct 19:57:55 ntpdate[445112]: adjust time server 192.168.11.23 offset 0.000074 sec

 

测试好后再启动ntp服务

[root@localhost ~]# service ntpd start

 

可能还会遇到另一种情况

[root@localhost ~]# ntpdate 192.168.11.23

30 Oct 19:59:55 ntpdate[11520]: no server suitable for synchronization found

这是由于每次重启ntp服务之后大约需要3-5分钟客户端才能与server建立正常的通讯连接。一般等待几分钟就可以了。

 

2、客户端的自动同步时间除了通过启用ntp服务,还可以配合cron命令,来进行定期同步。

[root@localhost ~]# crontab -e

0 12 * * * /usr/sbin/ntpdate 192.168.11.23