前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NTP时间服务器简介

NTP时间服务器简介

作者头像
全栈程序员站长
发布2022-07-25 11:50:35
2.6K0
发布2022-07-25 11:50:35
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

NTP(Network Time Protocol) 网络时间协议,工作在UDP的123端口上。是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(局域网上与标准间差小于1毫秒,互联网上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。

NTP服务器

NTP服务器提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。

计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。

NTP校对方式

时间服务器可以利用以下三种方式与其他服务器对时:broadcast/multicast,client/server和Symmetric。

broadcast/multicast:方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。

Symmetric:方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器。此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。

client/server:方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。

上述三种方式,时间信息的传输都使用UDP协议。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时

NTP服务器配置

NTP在Linux主机上默认一般都是安装过的,只是服务没有启用。如果没有安装可直接使用yum install ntp命令即可。

NTP的主配置文件,以下是NTP服务器可选的指令:

代码语言:javascript
复制
# 允许172 .16.*.*的 IP使用该时间服务器;
restrict172 .16.0.0mask255 .255.0.0nomodify

#允许任何人来同步;
restrictdefaultnomodifynotrap

# 屏蔽其他 IP过来更新时间;
restrict0 .0.0.0mask0 .0.0.0nomodifynotrapnoquerynotrust

#ignore:关闭所有的 NTP联机服务;
#nomodify:表示 Client端不能更改 Server端的时间参数;不过 Client端仍然可以透过 Server端来进行网络校时;
#notrust:该 Client除非通过认证否则该 Client来源将被视为不信任网域;
#noquery:不提供 Client端的时间查询;
#notrap:允许任何人来查询;
# 同步的上层服务器(210 .72.145.44国家时间服务器), NTP服务器默认也有同步的时间服务器;
server210 .72.145.44

# 同步本地时间;
server127 .127.1.0prefer

# 本地服务器的 stratum大小不能超过16;
fudge127 .127.1.0stratum8

启动NTP服务器

代码语言:javascript
复制
[root@localhost ~] # chkconfig ntpd on
[root@localhost ~] # service ntpd start

查看NTP信息

代码语言:javascript
复制
[root@localhost ~] # ntpq -p

NTP服务器配置完成启动之后;NTP自身或者与其server的同步需要一个时间段这个过程可能是5-10分钟;在这个时间段内客户端运行ntpdate命令时会产生no serversuitable for synchronization found的错误,上图表示210.72.145.44的reach为0不可用,LOCAL的reach为17可用。

将时间同步到硬件时钟

代码语言:javascript
复制
[root@localhost ~]# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK= yes

客户配置

代码语言:javascript
复制
[root@localhost ~] # ntpdate 172.16.16.1
[root@localhost ~] # crontab -e
*/ 1* * * * ntpdate 172.16.16.1

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127176.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档