栏目头部广告

NTP时间服务器部署

一、NTP时间服务器

1.1 NTP服务介绍

随着网络拓扑的日益复杂,整个网络内设备的时钟同步将变得十分重要。如果依靠管理员手工修改系统时钟,不仅工作量巨大,而且时钟的准确性也无法得到保证。网络时间协议( NetworkTime Protocol,NTP)的出现就是为了解决网络内设备系统时钟的同步问题。NTP是 TCP/IP协议簇里的一个应用层协议。NTP报文通过UDP传输,端口号是123。

1.2 公共NTP服务器

(1)阿里NTP地址:https://help.aliyun.com/document_detail/92704.html

ntp.aliyun.com
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com

(2)腾讯NTP地址:https://cloud.tencent.com/document/product/213/30392

time1.cloud.tencent.com 
time2.cloud.tencent.com
time3.cloud.tencent.com
time4.cloud.tencent.com
time5.cloud.tencent.com

(3)google NTP地址:https://developers.google.com/time

time1.google.com
time2.google.com
time3.google.com
time4.google.com
注:海外业务推荐使用,国内不一定能访问。

(4)国家授时中心:http://www.ntsc.ac.cn/

ntp.ntsc.ac.cn

(5)ntp.org:https://www.ntp.org/

中国公共NTP服务器,https://www.pool.ntp.org/zone/cn
全球公共NTP服务器,https://www.ntppool.org/zone/@
0.cn.pool.ntp.org
1.cn.pool.ntp.org
2.cn.pool.ntp.org
3.cn.pool.ntp.org

(6)微软Windows公共NTP

time.windows.com
注:国内不建议使用。

(7)美国标准技术研究院 NTP:https://tf.nist.gov/tf-cgi/servers.cgi

time.nist.gov

二、NTP服务部署

2.1 NTP服务之ntpd

(1)NTP服务安装

[root@10-27-0-224 ~]# yum install ntp -y

(2)修改NTP配置

[root@10-27-0-224 ~]# vim /etc/ntp.conf
driftfile /var/lib/ntp/drift

logfile /var/log/ntpd.log  # 新增日志目录
pidfile  /var/run/ntp.pid  # 定义pid路径

# restrict default nomodify notrap nopeer noquery       # 拒绝所有IPv4的client连接此NTP服务器

restrict 10.27.0.0 mask 255.255.252.0 nomodify notrap   # 授权10.27.0.0网段上的所有机器可以从这台机器上查询和同步时间

# 允许上游NTP时间服务器主动修改本机时间
restrict ntp1.aliyun.com nomodify
restrict ntp2.aliyun.com nomodify
restrict ntp3.aliyun.com nomodify
restrict ntp4.aliyun.com nomodify

# 定义使用的上游NTP服务器
server ntp1.aliyun.com iburst prefer                     # prefer表示为优先,表示本机优先同步该服务器时间
server ntp2.aliyun.com
server ntp3.aliyun.com
server ntp4.aliyun.com

# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10

tinker dispersion 100
tinker step 1800
tinker stepout 3600

restrict格式:restrict [IP地址] mask [IP掩码] [参数]
参数:
◆ ignore        # 关闭所有NTP联机服务
◆ nomodify   # 客户端不能使用ntpc和ntpq这两个程序来更改服务器的时间参数,但客户端可以通过此主机来进行网络校时
◆ notrust       # 客户端除非通过认证,否则客户端来源将视为不信任子网
◆ noquery     # 客户端不能使用ntpc和ntpq等命令来查询时间服务器,等于不提供网络校时服务
◆ notrap        # 不提供trap远程登录功能,trap服务是一种远程时间日志服务
◆ nopeer       # 提供时间服务,但不作为对等体
◆ kod           # 向不安全的访问者发送Kiss-Of-Death报文

server host  [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]
◆ host        # 是上层NTP服务器的IP地址或域名
◆ key         # 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号
◆ version   # 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2
◆ prefer     # 如果有多个server选项,具有该参数的服务器有限使用
◆ mode      # 指定数据报文mode字段的值
◆ minpoll   # 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14
◆ maxpoll  # 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14
◆  iburst     # 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒

(3)查看NTP服务

[root@10-27-0-224 ~]# systemctl status ntpd.service 
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-09-29 01:04:40 EST; 9min ago
  Process: 70469 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 70470 (ntpd)
   CGroup: /system.slice/ntpd.service
           └─70470 /usr/sbin/ntpd -u ntp:ntp -g

Sep 29 01:04:40 10-27-0-224 ntpd[70470]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: Listen and drop on 1 v6wildcard :: UDP 123
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: Listen normally on 2 lo 127.0.0.1 UDP 123
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: Listen normally on 3 eth0 10.27.0.224 UDP 123
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: Listening on routing socket on fd #20 for interface updates
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: inappropriate address 127.0.0.1 for the fudge command, line ignored
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: 0.0.0.0 c016 06 restart
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
Sep 29 01:04:40 10-27-0-224 ntpd[70470]: 0.0.0.0 c011 01 freq_not_set
Sep 29 01:07:54 10-27-0-224 ntpd[70470]: 0.0.0.0 c614 04 freq_mode

(4)NTP同步状态

说明

remote

当前远程NTP服务器,+表示可用,-表示不可用,*表示推荐

refid

用于和本地时钟同步的远程服务器的 IP 地址

st

Stratum(阶层),表示经过n=2次NTP同步到当前服务器

t

类型,u表示单播(unicast)。其它值包括本地(local)、多播(multicast)、广播(broadcast)。

when

自从上次和服务器交互后经过的时间(以秒数计)。

poll

和服务器的轮询间隔,以秒数计。

reach

表示和服务器交互是否有任何错误的八进制数。值 337 表示 100% 成功(即十进制的255)。

delay

服务器和远程服务器来回的时间。

offset

我们服务器和远程服务器的时间差异,以毫秒数计。

jitter

两次取样之间平均时差,以毫秒数计。


# 上层 NTP 的状态
[root@10-27-0-224 ~]# ntpq  -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 120.25.115.20   10.137.53.7      2 u   11   64    3  242.748   33.893   0.807
 203.107.6.88    10.137.38.86     2 u   12   64    1  239.911   20.332   0.000
 localhost       .INIT.          16 l    -   64    0    0.000    0.000   0.000

[root@10-27-0-224 ~]# watch ntpq  -p   # 实时查看

# NTP同步状态
[root@10-27-0-224 ~]# ntpstat                           # 确认本地NTP与上层NTP服务器是否联通
synchronised to NTP server (120.25.115.20) at stratum 3 # 本NTP服务器层次为3,已向120.25.115.20 NTP同步过
   time correct to within 133 ms                        # 时间校正到相差133ms之内
   polling server every 64 s                            # 每64秒会向上级NTP轮询更新一次时间

# NTP同步状态
[root@10-27-0-224 ~]# timedatectl status
      Local time: Wed 2021-09-29 02:30:20 EST
  Universal time: Wed 2021-09-29 07:30:20 UTC
        RTC time: Wed 2021-09-29 07:30:20
       Time zone: EST (EST, -0500)
     NTP enabled: no
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

[root@10-27-0-224 ~]# timedatectl list-timezones              # 查看时区列表
[root@10-27-0-224 ~]# timedatectl set-timezone Asia/Shanghai  # 设置本地时区

# 设置日期与时间
timedatectl set-time "YYYY-MM-DD HH:MM:SS"
timedatectl set-time "YYYY-MM-DD"
timedatectl set-time "HH:MM:SS"
timedatectl set-ntp no                    # 关闭同步
timedatectl set-ntp yes                   # 开启同步

(5)客户端时间同步测试

[root@ansible ~]# ntpdate 107.155.48.73

2.2 NTP服务之chronyd

Chrony是网络时间协议(NTP)的另一种实现,与ntpd相比,它能够更快地同步系统时钟并具有更好的准确性。Chrony还可以对时钟频率的快速变化提供更好的响应,这对于时钟不稳定或无法保持时钟频率恒定的节能技术的虚拟机很有用。

◆ Chrony 是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步。
◆ 它由两个程序组成,分别是 chronyd 和 chronyc。
◆ Chronyd 是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步,它确定计算机增减时间的比率,并对此进行补偿。
◆ Chronyc 提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在 chronyd 实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

服务端

(1)关闭老版本NTP服务,并禁用

[root@10-27-0-224 ~]# yum search ntp
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
================================================ N/S matched: ntp ================================================
nagios-plugins-ntp.x86_64 : Nagios Plugin - check_ntp
nagios-plugins-ntp-perl.x86_64 : Nagios Plugin - check_ntp.pl
nodejs-sntp.noarch : SNTP v4 client (RFC4330) for Node.js
ntp.x86_64 : The NTP daemon and utilities
ntp-doc.noarch : NTP documentation
ntp-perl.noarch : NTP utilities written in Perl
ntpdate.x86_64 : Utility to set the date and time via NTP
[root@10-27-0-224 ~]# yum remove ntp -y    # 卸载老版NTP
[root@10-27-0-224 ~]#  systemctl mask ntpd # 关闭NTP服务

(2)安装新版NTP服务chrony

[root@10-27-0-224 ~]# yum install chrony -y
[root@10-27-0-224 ~]# systemctl restart chronyd.service 
[root@10-27-0-224 ~]# systemctl enable chronyd.service

(3)修改主配置文件

[root@10-27-0-224 ~]# vim /etc/chrony.conf 
server 10.27.0.224 iburst            # 上游NTP服务器
driftfile /var/lib/chrony/drift      # 记录系统时钟获得/丢失时间的速率至drift文件中
allow 0.0.0.0/0                      # 允许所有客户端主机/IP地址[掩码]
local stratum 10                     # 开启自我对时功能
makestep 10 3                        # 如果系统时钟的偏移量大于10秒,则允许在前三次更新中步进调整系统时钟
rtcsync                              # 启用RTC(实时时钟)的内核同步
keyfile /etc/chrony.keys             # 指定包含NTP验证密钥的文件
logdir /var/log/chrony               # 指定存放日志文件的目录
noclientlog                          # 禁用客户端访问的日志记录
logchange 0.5                        # 如果时钟调整大于0.5秒,则向系统日志发送消息

# 修改NTP服务器时间
[root@10-27-0-224 ~]# timedatectl set-ntp no
[root@10-27-0-224 ~]# timedatectl set-time "2021-01-01 01:01:01"
[root@10-27-0-224 ~]# date
Fri Jan  1 01:01:17 EST 2021
[root@10-27-0-224 ~]# timedatectl set-ntp yes

(4)查看时间同步情况

[root@10-27-0-224 ~]#  chronyc sources -v
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 10-27-0-224                  10   6   377   152    -96ns[-5505ns] +/-   11us

注:最后一行的*代表同步成功,?代表未同步

[root@10-27-0-224 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 10-27-0-224                  10   6   377   178    -96ns[-5505ns] +/-   11us

[root@10-27-0-224 ~]# chronyc sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
10-27-0-224                 3   3     4     +0.398    205.110    -96ns   674ns

(5)命令交互式

[root@10-27-0-224 ~]# chronyc
chrony version 3.4
Copyright (C) 1997-2003, 2007, 2009-2018 Richard P. Curnow and others
chrony comes with ABSOLUTELY NO WARRANTY.  This is free software, and
you are welcome to redistribute it under certain conditions.  See the
GNU General Public License version 2 for details.

chronyc> sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
10-27-0-224                 3   3     4     +0.398    205.110    -96ns   674ns

(6)查看时间同步情况

[root@10-27-0-224 ~]# timedatectl 
      Local time: Fri 2021-01-01 01:17:26 EST
  Universal time: Fri 2021-01-01 06:17:26 UTC   # 世界统一时间
        RTC time: Fri 2021-01-01 06:17:26       # 硬件时钟的时间
       Time zone: EST (EST, -0500)              # 当前时区
     NTP enabled: yes                           # 开启自动同步时间服务器功能
NTP synchronized: yes                           # 查看时间已经同步
 RTC in local TZ: no                            # 将时区设置为本地时区
      DST active: n/a

[root@10-27-0-224 ~]# chronyc tracking
Reference ID    : 0A1B00E0 (10-27-0-224)
Stratum         : 11
Ref time (UTC)  : Fri Jan 01 06:12:59 2021
System time     : 0.000000002 seconds slow of NTP time
Last offset     : -0.000005409 seconds
RMS offset      : 0.000005409 seconds
Frequency       : 11.928 ppm slow
Residual freq   : +0.398 ppm
Skew            : 0.361 ppm
Root delay      : 0.000022110 seconds
Root dispersion : 0.000557802 seconds
Update interval : 0.0 seconds
Leap status     : Normal

客户端

(1)安装chrony

[root@10-27-0-132 ~]# yum install chrony -y

(2)修改时间同步服务器

[root@10-27-0-132 ~]# vim /etc/chrony.conf 
server 10.27.0.224 iburst

(4)客户端进行时间同步

[root@10-27-0-132 ~]# ntpdate 10.27.0.224
 1 Jan 01:13:26 ntpdate[10471]: step time server 10.27.0.224 offset -23515943.870334 sec
[root@10-27-0-132 ~]# date
Fri Jan  1 01:13:31 EST 2021

作者:UStarGao
链接:https://www.starcto.com/application_of_operational/246.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`