【Liunx常用操作】利用ntp服务,配置NTP时钟同步

提示:为保证文章的正确性和实用性,文章内容可能会不定时优化改进,若您有建议或者文章存在错误请私信留言或评论指正💖😊💖。下面以CentOS7.1操作系统为例,介绍具体的操作步骤,如果本文对你有帮助,记得关注加收藏哟🤞。


1、文章前言

时间同步是系统运行必不可少的重要因素,尤其是集群类的系统,更是要求集群内节点时间一致,时间差距过大,则会导致服务或进程运行异常。
目前Liunx系统主流的时间同步软件有ntpchrony。ntp在系统中集成比较广泛,chrony则是在rhel7.0、CentOS7.2等版本后才替代ntp的。注意:若系统内同时安装了ntp和chrony服务,那么系统每次启动时会默认关闭ntp服务,即使设置了开机启动,所以请确保系统内只安装所需的时间同步服务。本章节介绍ntp的安装和常用配置方法,若要了解和配置chrony服务,请点此前往

2、服务介绍

NTP(Network Time Protocol)是网络时间协议,它的作用是同步网络中每台计算机的时间,使他们处于相同的时间环境,确保服务或软件在计算机中正常运行。

在ntp时间同步架构中,节点分为服务端(server)和客户端(client),server端配置为ntp时钟源,用来为各个client端提供时间同步功能,client端可通过ntp守护进程ntpd自动跃进式(默认64s)同步server端的时间,也可通过ntpdate服务手动直接同步server端的时间,需要注意的是当ntpd守护进程运行中时,是无法使用ntpdate的,需要先停止ntpd后再执行ntpdate
ntp client端和ntp server端时间同步使用的是UDP123端口,因此在安全防护较为严格的生产场景中,需确保网络中的安全设备允许ntp client端和ntp server端的UDP123端口正常通信。ntp官方手册点击前往。

3、操作步骤

3.1、安装ntp和ntpdate服务

步骤一: 执行以下命令, 检查系统内是否已安装ntp和ntpdate服务,如下图若有回显则表示对应服务已安装。

rpm -qa |grep ntp

1
步骤二: 若没有回显则表示服务未安装,执行以下命令安装ntp和ntpdate服务。如下图表示成功安装ntp和ntpdate服务服务。

yum install -y ntp ntpdate

23
步骤三:步骤二命令执行提示如下图“软件包获取失败”或“没有可用软件包”,则参考利用iso镜像制作并使用本地yum源章节配置本地yum源后,再执行步骤二安装ntp和ntpdate服务。
4
步骤四: ntp服务安装完成后,执行以下命令,设置ntp服务开机自动启动。

systemctl enable ntpd

5

3.2、配置ntp为时钟源

步骤一: 在规划的作为ntp时钟源的服务器操作系统上执行以下命令,编辑ntp配置文件“/etc/ntp.conf”。一般的ntp使用场景下,ntp时钟源端只需根据需求配置restrictserver参数即可。

vim /etc/ntp.conf
参数描述
driftfile一个绝对路径,默认为:“/var/lib/ntp/drift”指定存储系统时钟漂移值的文件路径,记录系统时钟与 ntp时钟源时钟之间的差异,以便在系统重新启动后快速同步时间
restrict具体的IP地址/网段(后面可加具体选项)restrict参数用于限制具体的IP或网段对本时钟源的具体操作。其选项包括:nomodify(禁止对本ntp时钟源进行修改操作,包括更改时间、更改配置等);notrap(禁止使用trap服务,trap服务是一种用于远程管理的NTP服务,禁止使用可以增加安全性);nopeer(禁止作为对等服务器,即禁止其他ntp时钟源与本时钟源进行对等通信);noquery(禁止查询操作,即禁止其他客户端向本ntp时钟源发送时间查询请求)。举例1:restrict default nomodify notrap nopeer noquery(允许所有人同步本时钟源时间,但遵守nomodify、notrap、nopeer、noquery动作);举例2:restrict 192.168.100.6(允许192.168.100.6同步本时钟源时间);举例3:restrict 192.168.1.0 mask 255.255.255.0 notrap(允许192.168.1.0/24这个网段内的主机同步本时钟源时间,但遵守notrap动作)
server具体的IP地址(后面可加具体选项)server参数用于指定上级时钟源,当本节点需要同步其他时钟源的时间时,可以通过该参数指定上级时钟源IP。其选项包括:iburst(在与上级时钟源建立连接时,使用更快的初始轮询间隔来加快同步速度);prefer(当存在多个上级时钟源时,该选项将指定的上级时钟源作为首选上级时钟源,即优先选择该时钟源进行时间同步);stratum X(指定该时钟源的层级,X的值为1~15,数字越小,层级越高,表示可靠性越高,该选项仅适用于ntp时钟源之间的时间同步,对于客户端与ntp时钟源之间的时间同步,该选项不起作用);minpoll X(表示设置最小轮询间隔为2X秒,X默认为6,在使用公网时钟源时,建议X不小于6即最小轮询间隔不小于64秒 );maxpoll X(表示设置最大轮询间隔为2X秒,X默认为10)。 举例1:server 192.168.100.10(指定上级时钟源为192.168.100.10);举例2:server 192.168.100.20 prefer(指定上级时钟源为192.168.100.20,并设置为首选时钟源);举例3:server 192.168.100.30 stratum 10(指定上级时钟源为192.168.100.30,并设置层级为10);举例4:server 192.168.100.40 iburst minpoll 7 maxpoll 11(指定上级时钟源为192.168.100.40,并设置了iburst探测,指定了最小轮询间隔为128秒,最大轮询间隔为2048秒)
broadcast广播IP地址(后面可加具体选项)用于配置ntp服务器向本地网络广播时间信息,作为广播服务端,它可以通过广播将时间信息发送给网络中的其他设备,以实现时间同步。其选项包括:ttl(指定广播数据包的生存时间,即数据包在网络中传播的最大跳数);key(指定用于加密广播数据包的密钥编号);auth(指定用于鉴权的类型,可选的鉴权类型包括:none、autokey、ntp、control、crypto)。 举例1:broadcast 192.168.100.255 ttl 6(以广播方式向192.168.100.255地址发送时间信息,并设置广播数据包的生存时间为6跳)
broadcastclient空/具体选项当配置文件中存在此参数时,表示当前节点为ntp服务的广播客户端,会接受来自广播服务端发出的时间信息完成时间同步。其选项包括:ttl(指定接收广播数据包的生存时间,即数据包在网络中传播的最大跳数);key(指定用于解密广播数据包的密钥编号)。举例1:broadcastclient(启用broadcastclient参数);举例2:broadcastclient ttl 6(启用broadcastclient参数,并设置接收广播数据包的生存时间为6跳)
crypto空/具体选项当配置文件中存在此参数时,表示时间同步启用公钥加密,使用加密算法对NTP通信进行加密和身份验证,该参数一般不用,此处不做具体介绍
includefile一个绝对路径,默认为:“/etc/ntp/crypto/pw”用于指定一个文件,该文件包含其他NTP配置信息。通过使用includefile参数,可以将配置信息分散到多个文件中,使配置文件更加模块化和易于管理,该参数一般不用,此处不做具体用法介绍
keys一个绝对路径,默认为:“/etc/ntp/keys”指定用于认证和加密NTP通信的密钥文件路径,通过使用keys参数,可以配置ntp时钟源和ntp客户端使用的密钥,以确保通信的安全性和身份验证,该参数一般不用,此处不做具体用法介绍
disable monitor用于禁用本ntp时钟源的监视功能。通过使用disable monitor参数,可以阻止本ntp时钟源接受和响应监视查询,禁用监视功能并不会影响ntp时钟源的正常时间同步功能。ntp时钟源仍然可以继续提供时间同步服务,但不会响应监视查询

更多参数说明详见ntp官方手册对应版本ntp的ntp.conf配置文件选项说明章节

步骤二: 如下图所示举例配置,移动光标到需要修改配置的地方,按“i”进入vim文本编辑器插入模式,注释掉红框中的默认参数“restrict default nomodify notrap nopeer noquery”(不注释则表示本节点为所有ntp客户端提供时间同步服务),并设置本节点仅为自己以及192.168.1.0/24网段和192.168.100.6提供时间同步功能,且指定本节点的上级时钟源为国家授时中心时钟源“ntp.ntsc.ac.cn” 和阿里云时钟源“ntp.aliyun.com”,并选择国家授时中心时钟源为首选时钟源。(注意:若是在局域网环境中规划本节点为时钟源,那么需要注释掉所有server参数的配置,只添加“server 127.127.1.0 stratum 3”,将本节点的上级时钟源设置为节点本身即可)。“ntp.conf”配置文件修改完成后,按“Esc”键退出vim文本编辑器插入模式,按住“Shift”+“:”键进入vim文本编辑器命令行模式,输入“wq”保存修改并退出。
6
步骤三: 执行以下命令,重启ntp服务。

systemctl restart ntpd

步骤四: 执行以下命令,查看ntp服务状态。

systemctl status ntpd

7
步骤五: 执行以下命令,查看上级时钟源的状态和时间同步相关信息。

ntpq -p

8

字段描述
remotentp时钟源的IP地址或DNS名称,其前面会带有状态标识符,如:“*”表示该时钟源是当前节点正在使用的主要时钟源;“.”表示该时钟源是可用的,但不是当前节点正在使用的主要时钟源;“+”表示该时钟源是可用的,并且在节点的候选时间源列表中;“-”表示该时钟源是可用的,但在节点的候选时钟源列表中优先级较低;“o”表示该时钟源是可用的,但在节点的候选时钟源列表中优先级最低;“#”表示该时钟源被临时禁用,通常是由于出现了一些问题而导致暂时无法使用;“x”表示该时钟源被标记为不可用,无法与之进行时间同步;“?”表示无法获取该时钟源的状态信息
refidntp时钟源所同步的时间源的标识符,也可理解为该上级时钟源的时间获取来源
stntp时钟源的时钟层级(stratum)
tntp时钟源的时钟类型,如:“l”本地时钟源(Local);“u”未确定的时钟源(Unicast);“m”多播时钟源(Multicast);“b”广播时钟源(Broadcast);“s”对称性时钟源(Symmetric);“a”主动时钟源(Active);“r”参考时钟源(Reference);“o”PPS时钟源(Pulse Per Second);“f”外部时钟源(External);“k”内核时钟源(Kernel);“x”自动选择时钟源(Auto Select);“.”无效时钟源(Invalid)
when从上次成功同步到现在所经过的时间,单位秒(s)
pollntp客户端向ntp时钟源发送同步请求的时间间隔,单位秒(s)
reach表示时间同步请求的响应情况,用八进制表示,一般Reach值为377,转换成二进制就是11111111,表示最近8次时间同步请求收到了有效应答
delay表示从ntp客户端向ntp时钟源发送请求到收到响应的时间延迟,单位毫秒(ms)
offset表示ntp客户端与ntp时钟源之间的时间偏差,单位毫秒(ms)
jitter表示ntp客户端与ntp时钟源之间的时间抖动,单位毫秒(ms)

3.3、配置ntp为客户端

步骤一: 在规划的ntp客户端节点上执行以下命令,编辑ntp配置文件“/etc/ntp.conf”。一般ntp使用场景下,ntp客户端只需注释掉如下图红框中的默认参数,并根据需求配置server参数即可(server参数的值即ntp时钟源的域名或者IP地址)。

vim /etc/ntp.conf

9

参数描述
server具体的IP地址(后面可加具体选项)server参数用于指定上级时钟源,当本节点需要同步其他时钟源的时间时,可以通过该参数指定上级时钟源IP。其选项包括:iburst(在与上级时钟源建立连接时,使用更快的初始轮询间隔来加快同步速度);prefer(当存在多个上级时钟源时,该选项将指定的上级时钟源作为首选上级时钟源,即优先选择该时钟源进行时间同步);stratum X(指定该时钟源的层级,X的值为1~15,数字越小,层级越高,表示可靠性越高,该选项仅适用于ntp时钟源之间的时间同步,对于客户端与ntp时钟源之间的时间同步,该选项不起作用);minpoll X(表示设置最小轮询间隔为2X秒,X默认为6,在使用公网时钟源时,建议X不小于6即最小轮询间隔不小于64秒 );maxpoll X(表示设置最大轮询间隔为2X秒,X默认为10)。 举例1:server 192.168.100.10(指定上级时钟源为192.168.100.10);举例2:server 192.168.100.20 prefer(指定上级时钟源为192.168.100.20,并设置为首选时钟源);举例3:server 192.168.100.30 stratum 10(指定上级时钟源为192.168.100.30,并设置层级为10);举例4:server 192.168.100.40 iburst minpoll 7 maxpoll 11(指定上级时钟源为192.168.100.40,并设置了iburst探测,指定了最小轮询间隔为128秒,最大轮询间隔为2048秒)

步骤二: 执行以下命令,重启ntp服务。

systemctl restart ntpd

步骤三: 执行以下命令,查看ntp服务状态是否为运行中“active (running)”。

systemctl status ntpd

10
步骤四: 执行以下命令,查看ntp时钟源的状态和时间同步相关信息。

ntpq -p

11

字段描述
remotentp时钟源的IP地址或DNS名称,其前面会带有状态标识符,如:“*”表示该时钟源是当前节点正在使用的主要时钟源;“.”表示该时钟源是可用的,但不是当前节点正在使用的主要时钟源;“+”表示该时钟源是可用的,并且在节点的候选时间源列表中;“-”表示该时钟源是可用的,但在节点的候选时钟源列表中优先级较低;“o”表示该时钟源是可用的,但在节点的候选时钟源列表中优先级最低;“#”表示该时钟源被临时禁用,通常是由于出现了一些问题而导致暂时无法使用;“x”表示该时钟源被标记为不可用,无法与之进行时间同步;“?”表示无法获取该时钟源的状态信息
refidntp时钟源所同步的时间源的标识符,也可理解为该上级时钟源的时间获取来源
stntp时钟源的时钟层级(stratum)
tntp时钟源的时钟类型,如:“l”本地时钟源(Local);“u”未确定的时钟源(Unicast);“m”多播时钟源(Multicast);“b”广播时钟源(Broadcast);“s”对称性时钟源(Symmetric);“a”主动时钟源(Active);“r”参考时钟源(Reference);“o”PPS时钟源(Pulse Per Second);“f”外部时钟源(External);“k”内核时钟源(Kernel);“x”自动选择时钟源(Auto Select);“.”无效时钟源(Invalid)
when从上次成功同步到现在所经过的时间,单位秒(s)
pollntp客户端向ntp时钟源发送同步请求的时间间隔,单位秒(s)
reach表示时间同步请求的响应情况,用八进制表示,一般Reach值为377,转换成二进制就是11111111,表示最近8次时间同步请求收到了有效应答
delay表示从ntp客户端向ntp时钟源发送请求到收到响应的时间延迟,单位毫秒(ms)
offset表示ntp客户端与ntp时钟源之间的时间偏差,单位毫秒(ms)
jitter表示ntp客户端与ntp时钟源之间的时间抖动,单位毫秒(ms)

3.4、客户端通过ntpdate直接同步ntp时钟源的时间

ntpdate是一个简单的命令行工具,用于一次性地将系统时间同步至ntp时钟源的时间。它通过向ntp时钟源发送时间请求,并将本地系统时间直接设置为ntp时钟源答复的时间,实现时间的快速同步。
ntpdate使用简单,可以快速将系统时间同步到准确的时间。它优点是不需要运行持续的守护进程,对系统资源的占用较小。但正因ntpdate不具备ntpd的自适应性和稳定性,且由于没有时钟漂移的调整机制,所以它只能进行一次性的时间同步,不会持续地进行时间校准,无法提供持续准确的时间同步。

步骤一: 在ntp客户端服务器上执行以下命令,确认ntp服务是否在运行中“active (running)”。

systemctl status ntpd

12
步骤二: 若ntp服务正在运行,则需要执行以下命令,先停止ntp服务(因为ntpdate工具和ntp守护进程冲突,因此执行ntpdate命令时需要保证ntpd进程未运行)。

systemctl stop ntpd

步骤三: 执行以下命令,手动同步ntp时钟源的时间(192.168.100.1为时钟源IP)。

ntpdate 192.168.100.1

13

4、总结

ntp服务是一个被广泛支持和使用的时间同步服务,具有较长的发展历史,奠定了其稳定性。ntp服务可以通过和多个时间源进行时间同步,包括GPS、原子钟等高精度时钟源。具有较高的精度和可靠性,可以实现毫秒甚至微秒级的时间同步。
但需要注意的是每次ntp服务启动时,默认会直接同步ntp时钟源的时间,类似于执行了一次ntpdate动作,因此对于时间差距过大的客户端来说,时间变动会很大,对应用程序和日志时间戳会有一定的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JueShiYingJun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值