Linux 时间同步 04 ntp时间同步

Linux 时间同步 04 ntp时间同步

注意:

ntpd服务在不同时区或者时间相差太大无法同步,所以在配置ntp服务器之前需要先使用ntpdate手动同步。

ntpd服务监听UDP:123,注意防火墙放行。

ntpd服务启动后,不能手动运行ntpdate更新时间(会报端口被占用),无法使用 timedatectl set-time HH:MM:SS 设置时间(想要使用除了关闭ntpd服务,还要禁用NTP时间同步timedatectl set-ntp false)。

将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms。

项目官网:http://www.ntp.org

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

ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.

安装ntp

yum -y install ntp

配置与外部时间服务器进行时间同步的客户端主机

添加服务器端的IP地址,进行时间同步(注意:此客户端的IP地址是172.16.1.41)

1、修改chronyd配置文件 /etc/ntp.conf

# restrict default nomodify notrap nopeer noquery   # 注释掉此行,允许其他客户端主机同步此time server主机

# server 1.centos.pool.ntp.org iburst        # 注释掉此行
# server 1.centos.pool.ntp.org iburst        # 注释掉此行
# server 1.centos.pool.ntp.org iburst        # 注释掉此行

restrict 172.16.1.0 mask 255.255.255.0 nomodify noztrap  # 允许集群所在网段同步此time server主机

server 210.72.145.44 prefer                              # 这是中国国家授时中心的IP
server ntp1.aliyun.com iburst                            # iburst 加快时间同步
server ntp2.aliyun.com iburst 

server 127.0.0.1                                         # local clock
fudge 127.0.0.0 stratum 10

img

2、启动ntpd服务,并设置为开机启动

systemctl start ntpd
systemctl enable ntpd

配置其他客户端与以上客户端主机时间同步

其他客户端只需要与代表的客户端(即与服务器端时间同步的客户端主机)进行同步即可(即使用上面客户端IP地址:172.16.1.41进行时间同步)。

1、修改chronyd配置文件 /etc/ntp.conf

server 172.16.1.41 iburst        # 删掉其他的,添加要同步时间的客户端主机ip

2、启动ntpd服务,并设置为开机启动

systemctl start ntpd
systemctl enable ntpd

验证查看

[root@linux ~]# ntpstat          # 查看时间同步状态,查看ntp服务器有无和上层ntp连通
synchronized to NTP server(127.127.1.0) at stratum 11
time correct to within 950ms
polling server every 64 s
# 时间校正约为950*10(-6)秒。且每隔64秒会主动更新时间。

常见的错误:

25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found # 等待几分钟就可以了。

ntp服务器配置完毕后,需要等待5-10分钟才能与/etc/ntp.conf中配置的标准时间进行同步。

[root@linux ~]# ntptrace –n 127.0.0.1  # 列出目前NTP服务器(第一层)与上层NTP服务器(第二层)彼此之间的关系
127.0.0.1:stratum 11, offset 0.000000,synch distance 0.950951
222.73.214.125:stratum 2,offset –0.000787,synch distance 0.108575
209.81.9.7:stratum 1,offset 0.000028,synch distance 0.00436,refid ‘GPS’
ntpq -p  查看网络中的NTP服务器,查看ntp服务器与上层ntp的状态
         remote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
         refid:参考上一层ntp主机地址
         st:stratum阶层
         when:上次更新在多少秒前,指出从轮询源开始已过去的时间(秒)。
         poll:下次更新在多少秒后,指出轮询间隔时间。该值会根据本地时钟的精度相应增加。
         reach:是一个八进制数字,指出源的可存取性。已经向上层ntp服务器要求更新的次数
         delay:网络延迟
         offset:时间补偿,是源时钟与本地时钟的时间差(毫秒)。
         jitter:系统时间与bios时间差

设置/etc/sysconfig/ntpd文件

让ntp服务同时同步硬件时间,默认只会同步系统时间。

echo "SYNC_HWCLOCK=yes" >> /etc/sysconfig/ntpd

/etc/ntp.conf 配置详解

# 1. 先处理权限方面的问题,包括放行上层服务器以及开放局域网用户来源:
restrict default kod nomodify notrap nopeer noquery     # 拒绝所有 IPv4 的用户
restrict -6 default kod nomodify notrap nopeer noquery  # 拒绝所有 IPv6 的用户
restrict 220.130.158.71   # 放行 tock.stdtime.gov.tw 进入本 NTP 的服务器
restrict 59.124.196.83    # 放行 tick.stdtime.gov.tw 进入本 NTP 的服务器
restrict 59.124.196.84    # 放行 time.stdtime.gov.tw 进入本 NTP 的服务器
restrict 127.0.0.1        # 默认,放行本机来源
restrict -6 ::1           # 默认,放行本机来源 IPv6
restrict 192.168.100.0 mask 255.255.255.0 nomodify      # 放行局域网用户来源,或者列出单独IP

# 2. 设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉:
server 220.130.158.71 prefer  # 以这部主机为最优先的server
server 59.124.196.83
server 59.124.196.84

# 3.默认的一个内部时钟数据,用在没有外部 NTP 服务器时,使用它为局域网用户提供服务:
# server 127.127.1.0             # local clock
# fudge  127.127.1.0 stratum 10

# 4.预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:
driftfile /var/lib/ntp/drift  #系统时间与BIOS事件的偏差记录
keys      /etc/ntp/keys

=restrict选项格式=

restrict [ 客户端IP ] mask [ IP掩码 ] [参数]

“客户端IP” 和 “IP掩码” 指定了对网络中哪些范围的计算机进行控制,如果使用default关键字,则表示对所有的计算机进行控制,参数指定了具体的限制内容,没有参数表示该 IP (或网域)"没有任何限制",常见的参数如下:

◆ ignore:拒绝连接到NTP服务器

◆ nomodiy: 客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

◆ noquery: 不提供客户端的时间查询

◆ notrap: 不提供trap远程登录功能,trap服务是一种远程时间日志服务。

◆ notrust: 客户端除非通过认证,否则该客户端来源将被视为不信任子网 。

◆ nopeer: 提供时间服务,但不作为对等体。

◆ kod: 向不安全的访问者发送Kiss-Of-Death报文。

restrict -6 表示IPV6地址的权限设置。

=server选项格式=

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秒。

=层次(stratum)=

stratum根据上层server的层次而设定(+1)。

对于提供network time service provider的主机来说,stratum的设定要尽可能准确。

而作为局域网的time service provider,通常将stratum设置为10

0层的服务器采用的是原子钟、GPS钟等物理设备,stratum 1与stratum 0 是直接相连的,

往后的stratum与上一层stratum通过网络相连,同一层的server也可以交互。

ntpd对下层client来说是service server,对于上层server来说它是client。

ntpd根据配置文件的参数决定是要为其他服务器提供时钟服务或者是从其他服务器同步时钟。所有的配置都在/etc/ntp.conf文件中。

这里写图片描述

posted @ 2021-01-02 17:16  原因与结果  阅读(1364)  评论(0编辑  收藏  举报