当前位置:首页 » 《休闲阅读》 » 正文

Linux部署NTP时间服务器实现内外网时间同步

19 人参与  2024年04月26日 18:25  分类 : 《休闲阅读》  评论

点击全文阅读


一、前言

        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

总结:

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/100792.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1