ntp时间同步

365bet娱乐平台 📅 2025-08-21 07:32:56 👤 admin 👀 6431 ❤️ 447
ntp时间同步

一、前言

1、NTP简介

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

NTP基于UDP报文进行传输,使用的UDP端口号为123。

2、为什么需要NTP服务器

出于诸多原因,精确的时间对于网络至关重要,比如:

网络管理:从不同网络设备采集来的日志信息进行分析时,需要以时间作为参照依据。如果不同设备上的系统时间不一致,会因先后顺序等问题给故障定位带来障碍。

计费系统:计费业务对于时间尤其敏感,要求所有设备的时间保持一致,否则会引起计费不准确,导致用户质疑、投诉等。

协同处理:多个系统协同处理同一个复杂事件,为保证正确的执行顺序,多个系统必须参考同一时钟。

系统时间:某些应用或服务需要准确的时间来标记用户登录、交易等操作信息,确保可追溯记录。

因此有一个统一的标准时间对于网络而言意义重大。

3、NTP时钟层级

NTP允许客户端从服务器请求和接收时间,而服务器又从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC。

NTP以层级来组织模型结构,层级中的每层被称为Stratum。通常将从权威时钟获得时钟同步的NTP服务器的层数设置为Stratum 1,并将其作为主时间服务器,为网络中其他的设备提供时钟同步。而Stratum 2则从Stratum 1获取时间,Stratum 3从Stratum 2获取时间,以此类推。时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为1~15的时钟处于同步状态;层数为16的时钟被认为是未同步的,不能使用的。

4、NTP同步原理

NTP最典型的授时方式是Client/Server方式,如下图所示。

客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1;

NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;

客户端在接收到响应报文时,记录报文返回的时间戳t4。

客户端用上述4个时间戳参数就能够计算出2个关键参数:

NTP报文从客户端到服务器的往返延迟delay。

客户端与服务端之间的时间差offset。

根据方程组:

可以解得时间差为:

NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。

二、准备工作

1、服务器规划

环境说明:Linux Server CentOS 7.6 NTP 4.2.6

ntp01

10.0.0.11

同步公网的时间

ntp02

10.0.0.12

同步ntp01的时间

ntp03

10.0.0.13

同步ntp02的时间

三、部署过程

1、ntp01上操作:(有公网可以直接yum安装ntp)yum install -y ntp 2、修改ntp配置文件

#在配置中增加以下配置:

/etc/ntp.conf

#允许上层时间服务器主动修改本机时间

restrict ntp.aliyun.com nomodify notrap noquery

#同步服务器

server ntp.aliyun.com

fudge ntp.aliyun.com stratum 10

3、与公共NTP服务器预先同步

为了保证本地NTP服务器能正常与公共NTP服务器进行同步,先跟公共NTP服务器同步一次。

再启动NTP服务

systemctl start ntp.service

查看ntp服务状态

remote:当前远程NTP服务器,+表示可用,-表示不可用,*表示推荐

refid:用于和本地时钟同步的远程服务器的 IP 地址

st:Stratum(阶层),表示经过n=2次NTP同步到当前服务器

t:类型,u表示单播(unicast)。其它值包括本地(local)、多播(multicast)、广播(broadcast)。

when:自从上次和服务器交互后经过的时间(以秒数计)。

poll:和服务器的轮询间隔,以秒数计。

reach:表示和服务器交互是否有任何错误的八进制数。值 337 表示 100% 成功(即十进制的255)。

delay:服务器和远程服务器来回的时间。

offset:我们服务器和远程服务器的时间差异,以毫秒数计。

jitter:两次取样之间平均时差,以毫秒数计。

2、ntp02上操作(没有公网,采用rpm包方式安装ntp服务)

autogen-libopts-5.18-5.el7.x86_64.rpm #不安装这个包会报错,服务起不来

ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

1、安装rpm包

rpm -ivh autogen-libopts-5.18-5.el7.x86_64.rpm

rpm -ivh ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

rpm -ivh ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

2、修改配置文件

vim /etc/ntp.conf

driftfile /var/lib/ntp/drift restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap restrict 127.0.0.1 restrict ::1 server 10.0.0.11 fudge 10.0.0.11 stratum 11 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys disable monitor

3、启动服务

systemctl start ntpd.service && systemctl enable ntpd.service

ntp03

安装ntpdate

同步ntp02时间

ntpdate 10.0.0.12

为什么要预同步?

预同步是指在与公共NTP服务器进行时间同步之前,先进行一次时间校准。这是为了确保本地时钟与公共NTP服务器的时钟之间的时间差距不会太大。

在开始与公共NTP服务器同步之前,本地时钟可能已经与公共NTP服务器相差几秒钟或更多。如果直接启动同步,那么调整过程将会非常漫长,因为系统需要逐渐调整时钟频率来弥补较大的时钟偏差。

通过进行一次预同步,可以将本地时钟与公共NTP服务器的时间差距减小到几毫秒甚至更少的范围内。这样,在启动实际同步之后,系统就只需要进行微调即可达到稳定的同步状态,从而提高同步的效率和精度。

因此,为了确保时间同步的准确性和效率,与公共NTP服务器进行时间同步之前要进行一次预同步。

使用restrict管理权限控制

restrict [address] mask [mask] [parameter]

其中parameter的参数主要有下面这些:

ignore: 拒绝所有类型的NTP联机;

nomodify: 客户端不能使用ntpc与ntpq这两个程序来修改服务器的时间参数,但客户端仍可透过这个主机来进行网络校时;

noquery: 客户端不能使用ntpq,ntpc等指令来查询时间服务器,等于不提供NTP的网络校时;

notrap: 不提供trap这个远程事件登录(remote event logging)的功能;

notrust: 拒绝没有认证的客户端;

如果你没有在 parameter 的地方加上任何参数的话,这表示该IP或网段不受任何限制。

🍵 相关养生推荐

联发科Helio P20解析!性能提升多少?
365bet娱乐平台

联发科Helio P20解析!性能提升多少?

📅 08-18 👀 1227
违章停车处罚多少钱
万博365.1

违章停车处罚多少钱

📅 08-13 👀 9004
威力洗衣机e3故障
万博365.1

威力洗衣机e3故障

📅 08-06 👀 5459
《财神钱庄》审核规则说明介绍
万博365.1

《财神钱庄》审核规则说明介绍

📅 07-27 👀 3031