NTP 网络时间同步服务器

一、时间时区概念

UTC(Universal Time Coordinated)

世界协调时间;经严谨计算得到的时间,精确到秒,误差在0.9s以内, 是比GMT更为精确的世界时间。

GMT(Greenwich Mean Time)

格林威治标准时间 ; 英国伦敦格林威治定为0°经线开始的地方,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区,GMT时间比北京时间慢8小时。

CST:

CST同时可以代表如下 4 个不同的时区
Central Standard Time (USA) UT-6:00 美国标准时间
Central Standard Time (Australia) UT+9:30 澳大利亚标准时间
China Standard Time UT+8:00 中国标准时间
Cuba Standard Time UT-4:00 古巴标准时间

DST(Daylight Saving Time)

夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时;

二、ntp seerver搭建

1. 时区设置

[root@localhost ~]# timedatectl
[root@localhost ~]# timedatectl list-timezones
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai

2. ntp server搭建

查看是否安装
[root@localhost ~]# rpm -q ntp

安装
[root@localhost ~]# yum install ntp -y

手动同步时间
[root@localhost ~]# ntpdate -u cn.pool.ntp.org

3. 修改ntp配置

[root@localhost ~]# vim /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

# 新增:日志目录
logfile /var/log/ntpd.log

# 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

# 新增:授权172.16.128.0 网段上的所有机器可以从这台机器上查询和同步时间
restrict 172.16.128.0 mask 255.255.255.0 nomodify notrap

# 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.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst

# 新增:当外部时间不可用时,使用本地时间
server 172.16.128.171 iburst
fudge 127.0.0.1 stratum 10

#broadcast 192.168.1.255 autokey	# broadcast server
#broadcastclient			# broadcast client
#broadcast 224.0.1.1 autokey		# multicast server
#multicastclient 224.0.1.1		# multicast client
#manycastserver 239.255.254.254		# manycast server
#manycastclient 239.255.254.254 autokey # manycast client

# 新增:允许上层时间服务器主动修改本机时间
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 1.cn.pool.ntp.org nomodify notrap noquery
restrict 2.cn.pool.ntp.org nomodify notrap noquery

# Enable public key cryptography.
#crypto

includefile /etc/ntp/crypto/pw

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats

# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor

4. 启动服务

[root@localhost ~]# systemctl enable ntpd
[root@localhost ~]# systemctl start ntpd

5. 查看同步状态

[root@localhost ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*114.118.7.161   123.139.33.3     2 u   36   64   77   23.196    6.770   1.028
+120.25.115.20   10.137.53.7      2 u   24   64   77   20.913    6.897   1.506
-139.199.215.251 100.122.36.196   2 u   22   64   77   21.854    8.122   1.458
-119.28.183.184  100.122.36.196   2 u   19   64   77   33.594    4.266   2.011
+ntp6.flashdance 194.58.202.148   2 u   91   64   72  268.044    6.483   1.516
+119.28.206.193  100.122.36.4     2 u   20   64   77   32.332    7.080   1.344
[root@localhost ~]# ntpstat 
synchronised to NTP server (114.118.7.161) at stratum 3
   time correct to within 996 ms
   polling server every 64 s
ntpq -p详解
  • remote:响应这个请求的 NTP 服务器的名称。
  • refid:NTP 服务器使用的上一级 NTP 服务器。
  • st:remote 远程服务器的级别。服务器从高到低级别设定为1 - 16,为了减缓负荷和网络堵塞,原则上建议避免直接连接到级别为1的服务器。
  • t :u: unicast(单播), b: broadcast(广播), l: local(本地时钟)
  • when:上一次成功请求之后到现在的秒数。
  • poll:本地机和远程服务器多少时间进行一次同步(单位为秒)。初始运行 NTP 时,poll 值会比较小,和服务器同步的频率增加,建议尽快调整到正确的时间范围。调整之后,poll 值会逐渐增大,同步的频率也将会相应减小。
  • reach:八进制值,用来测试能否和服务器连接。每成功连接一次,reach 的值将会增加。
  • delay:从本地机发送同步要求到 NTP 服务器的 round trip time。
  • offset:主机通过 NTP 时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。offset 越接近于0,主机和 NTP 服务器的时间越接近。
  • jitter:用来做统计的值。统计在特定连续的连接数里 offset 的分布情况。即 jitter 数值的绝对值越小,主机的时间就越精确。
remote状态标识详解
  • 空:表示没有远程通信的主机
  • x:已不再使用
  • -:已不再使用
  • #:良好的远程节点或服务器但是未被使用
  • +:良好的且优先使用的远程节点或服务器
  • *****:当前作为优先主同步对象的远程节点或服务器
  • o:PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,PPS),可能通过PPS 时钟驱动或者通过内核接口

三、客户端同步——ntpd方式

1. centos7

[root@centos7 ~]# vim /etc/ntp.conf
#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 ntpserver iburst

[root@centos7 ~]# vim /etc/hosts
172.27.9.131    ntpserver

[root@centos7 ~]# systemctl enable ntpd
[root@centos7 ~]# systemctl start ntpd

[root@centos7 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntpserver       114.118.7.161    3 u    1   64    3    0.221   12.641   0.495

[root@centos7 ~]# ntpstat 
synchronised to NTP server (172.27.9.131) at stratum 4
   time correct to within 1049 ms
   polling server every 64 s

2. ubuntu1604

root@ubuntu1604:~# view /etc/hosts
172.27.9.131    ntpserver

root@ubuntu1604:~# apt install -y ntp

root@ubuntu1604:~# view /etc/ntp.conf
server ntpserver iburst

root@ubuntu1604:~# systemctl enable ntp
ntp.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install enable ntp
root@ubuntu1604:~# systemctl start ntp

root@ubuntu1604:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntpserver       114.118.7.161    3 u   51   64  377    0.254   -4.194   1.090

四、客户端同步——ntpdate服务方式

[root@centos ~]# sed -i.bak '/centos.pool.ntp.org/s/^/#/' /etc/ntp.conf
[root@centos ~]# sed -i.bak '/driftfile/i server ntpserver iburst' /etc/ntp.conf
[root@centos ~]# sed -i.bak '$a 172.27.9.131    ntpserver' /etc/hosts

[root@centos ~]# systemctl enable ntpdate
[root@centos ~]# systemctl start ntpdate

五、客户端同步——ntpdate命令方式

[root@centos7 ~]# systemctl stop ntpd

[root@centos7 ~]# ntpdate ntpserver
7 Nov 16:33:02 ntpdate[2618]: adjust time server 172.27.9.131 offset -0.002048 sec

[root@centos7 ~]# crontab -l
0 1 * * * /usr/sbin/ntpdate ntpserver


上一篇:JDK异步回调


下一篇:池化层