linux--NTP配置

一世执手 提交于 2020-02-18 05:19:57

1、什么是NTP

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

2、为什么使用NTP

         为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在网络中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。

3、NTP原理简介

NTP的基本工作原理如图1所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:

l              在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。

l              Device B作为NTP时间服务器,即Device A将使自己的时钟与Device B的时钟同步。

l              NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。

                                                  

                                                                                 图1 NTP基本原理图

系统时钟同步的工作过程如下:

l              Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。

l              当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。

l              当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。

l              当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。

至此,Device A已经拥有足够的信息来计算两个重要的参数:

l              NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。

l              Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。

这样,Device A就能够根据这些信息来设定自己的时钟,使之与Device B的时钟同步。

4、NTP常用命令

ntpdate:直接同步,使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务,当前服务器时间是13点,但标准时间时11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。

ntpd:平滑同步,使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。

ntpq:ntpq 指令使用NTP模式6数据包与NTP服务器通信,能够在允许的网络上查询的兼容的服务器。它以交互模式运行,或者通过命令行参数运行。NTP服务端重启后,客户机要等5分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。等待的时间可以通过命令 watch ntpq -p来监控。

ntpstat:ntpstat将报告在本地计算机上运行的NTP守护程序(ntpd)的同步状态,如果发现本地系统与参考时间源同步,则ntpstat将报告大致的时间精度。

5、NTP实验

环境

[root@VM_0_11_centos etc]# cat centos-release
CentOS Linux release 7.7.1908 (Core)
[root@VM_0_11_centos etc]#

1)安装NTP

[root@VM_0_11_centos etc]# yum -y install ntp
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors

2)查看NTP服务状态

[root@VM_0_11_centos ~]# systemctl status ntpd
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-02-15 04:39:34 MST; 1 day 20h ago
 Main PID: 643 (ntpd)
   Memory: 2.4M
   CGroup: /system.slice/ntpd.service
           └─643 /usr/sbin/ntpd -u ntp:ntp -g

3)修改配置文件

[root@VM_0_11_centos ~]# vim /etc/ntp.conf
# 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
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#
server 127.127.1.0     # 如果公网NTP不可用时,将使用Local时间作为NTP服务提供给NTP Client。

#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client

4)修改配置后重启

[root@VM_0_11_centos ~]# systemctl restart ntpd
[root@VM_0_11_centos ~]# systemctl status ntpd
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-02-17 01:09:21 MST; 16s ago
  Process: 17031 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 17032 (ntpd)
   Memory: 660.0K
   CGroup: /system.slice/ntpd.service
           └─17032 /usr/sbin/ntpd -u ntp:ntp -g

Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: Listen normally on 0 lo 127.0.0.1 UDP 123
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: Listen normally on 1 eth0 172.17.0.11 UDP 123
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: Listen normally on 2 lo ::1 UDP 123
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: Listen normally on 3 eth0 fe80::5054:ff:feef:d006 UDP 123
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: Listening on routing socket on fd #20 for interface updates
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: 0.0.0.0 c016 06 restart
Feb 17 01:09:21 VM_0_11_centos ntpd[17032]: 0.0.0.0 c012 02 freq_set kernel 2.797 PPM
Feb 17 01:09:22 VM_0_11_centos ntpd[17032]: 0.0.0.0 c515 05 clock_sync
[root@VM_0_11_centos ~]#

5)测试

[root@VM_0_11_centos ~]# ntpdate 127.0.0.1
17 Feb 01:13:12 ntpdate[17595]: the NTP socket is in use, exiting
[root@VM_0_11_centos ~]# ps -ef | grep ntp
root     17175     1  0 01:10 ?        00:00:00 ntpd
root     17222     1  0 01:10 ?        00:00:00 ntpd
ntp      17409     1  0 01:12 ?        00:00:00 /usr/sbin/ntpd                                                                                        -u ntp:ntp -g
root     17770 13846  0 01:14 pts/0    00:00:00 grep --color=a                                                                                       uto ntp
[root@VM_0_11_centos ~]# lsod -i:123
-bash: lsod: command not found
[root@VM_0_11_centos ~]# lsof -i:123
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ntpd    17409  ntp   16u  IPv4 4001632      0t0  UDP VM_0_11_c                                                                                       entos:ntp
ntpd    17409  ntp   17u  IPv4 4001633      0t0  UDP VM_0_11_c                                                                                       entos:ntp
ntpd    17409  ntp   18u  IPv6 4001634      0t0  UDP VM_0_11_c                                                                                       entos:ntp
ntpd    17409  ntp   19u  IPv6 4001637      0t0  UDP VM_0_11_c                                                                                       entos:ntp
[root@VM_0_11_centos ~]# kill -9 17409

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!