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