一、前言
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官方手册:https://www.ntp.org/documentation/
参考链接:https://blog.csdn.net/qq_42557240/article/details/129315190?spm=1001.2014.3001.5506
二、环境
背景:公司有100台服务器,只有一个可以上网,其他99台均不允许连接互联网,利用可以上网的服务器搭建NTP时间服务器来同步外网正确,其他99台服务器从此服务器同步时间。
系统:centos7.6
ntp-server时间服务器地址:192.168.160.177(虚拟测试地址,可以上网)
ntp-client客服端网段:192.168.160.0/24
三、安装配置NTP服务端
3.1安装NTP服务
[root@ntp_server ~]# yum -y install ntp ntpdate
[root@ntp_server ~]# rpm -qa | grep ntp
3.2 修改配置NTP时钟源
[root@ntp_server ~]# vim /etc/ntp.conf
修改如下:
一般的ntp使用场景下,ntp时钟源端只需根据需求配置restrict、server参数即可。
参数解释如下:
参数 |
值 |
描述 |
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时钟源仍然可以继续提供时间同步服务,但不会响应监视查询 |
3.3 启动ntp服务端
[root@ntp_server ~]# systemctl start ntpd
[root@ntp_server ~]# systemctl enable ntpd
[root@ntp_server ~]# systemctl status ntpd
#查看上级时钟源状态和时间同步信息
[root@ntp_server ~]# ntpq -p
ntpq -p字段含义如下:
#查看时间设置及状态
[root@ntp_server ~]# timedatectl status
提示:NTP enabled 和 NTP synchronized必须为yes说明服务正确的,synchronized往往比较慢 大概半个小时左右才可以。
四、安装配置NTP客户端
#客户端安装ntp
[root@yum ~]# yum -y install ntp ntpdate
#修改配置
[root@yum ~]# vim /etc/ntp.conf
添加时钟源为ntp-server服务器地址
server字段直接设置成"server 192.168.160.177 iburst"也是可以的。
#启动ntp客户端
[root@yum ~]# systemctl start ntpd
[root@yum ~]# systemctl enable ntpd
[root@yum ~]# systemctl status ntpd
#查看同步状态
[root@yum ~]# timedatectl status
#查看时间
[root@yum ~]# timedatectl status
至此时间同步设置完成
五、客户端利用ntpdate同步时间
ntpdate是一个简单的命令行工具,用于一次性地将系统时间同步至ntp时钟源的时间。它通过向ntp时钟源发送时间请求,并将本地系统时间直接设置为ntp时钟源答复的时间,实现时间的快速同步。
ntpdate使用简单,可以快速将系统时间同步到准确的时间。它优点是不需要运行持续的守护进程,对系统资源的占用较小。但正因ntpdate不具备ntpd的自适应性和稳定性,且由于没有时钟漂移的调整机制,所以它只能进行一次性的时间同步,不会持续地进行时间校准,无法提供持续准确的时间同步。
提示,使用ntpdate手动同步时间,需要关闭客户端ntpd服务。
#关闭ntpd
[root@yum ~]# systemctl stop ntpd
#手动同步时间
[root@yum ~]# ntpdate 192.168.160.177
#设置定时任务自动同步
[root@yum ~]# crontab -e
总结:文章来源:https://www.toymoban.com/news/detail-852875.html
ntp服务是一个被广泛支持和使用的时间同步服务,具有较长的发展历史,奠定了其稳定性。ntp服务可以通过和多个时间源进行时间同步,包括GPS、原子钟等高精度时钟源。具有较高的精度和可靠性,可以实现毫秒甚至微秒级的时间同步。但需要注意的是每次ntp服务启动时,默认会直接同步ntp时钟源的时间,类似于执行了一次ntpdate动作,因此对于时间差距过大的客户端来说,时间变动会很大,对应用程序和日志时间戳会有一定的影响。文章来源地址https://www.toymoban.com/news/detail-852875.html
到了这里,关于Linux部署NTP时间服务器实现内外网时间同步的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!