基础 - NTP时间同步服务器

noteId: 36A96963FAF0412E848368B472567507 · 原始路径:/ALL/Linux - A模块/服务配置/NTP、chrony 时间同步服务器-123端口UDP/基础 - NTP时间同步服务器.note

网络时间协议(Network Time Protocol,NTP)是在数据网络计算机系统之间通过分组交换进行时钟同步的一个网络协议,位于OSI模型的应用层。

NTP通常可以在公共互联网保持几十毫秒的误差,并且在理想的局域网环境中可以实现超过 1 毫秒的精度。

该协议通常描述一种主从架构,但它也可以用在点对点网络中,对等体双方可将另一端认为潜在的时间源。

发送和接收时间都采用 UDP监听123端口 实现。这也可以使用广播或多播,其中客户端在最初得往返校准交换后被动地监听时间更新。

时钟层:

NTP使用一个分层、半分层的时间源系统。该层次的每个级别被称为“stratum”,顶层分配为数字0.一个通过阶层 n 同步的服务器将运行在阶层 n + 1。数字表示与参考时钟的距离,用于防止层次结构中的循环依赖性。

阶层并不总是指示质量或可靠性;在阶层 3 的时间源得到比阶层 2 时间源更高的时间质量也很常见。电信系统对时钟层使用不同的定义:

NTP最多可支持层次结构中的15层。Stratum 16被认为不同步、无法使用。

1、阶层 0(Stratun 0):

这些是高精度计时设备,如原子钟、GPS时钟或其它无线电时钟。它们生成非常精确的脉冲秒信号,触发所连接计算机上的中断时间和时间戳。阶层 0 设备也称为参考(基准)时钟。

2、阶层 1:

这些与阶层 0 设备相连、在几微妙误差内同步系统时钟的计算机。阶层 1 服务器可能与其他阶层 1

服务器对等相连,以进行完整性检查和备份。它们也被称为主要(primary)时间服务器

3、阶层 2:

这些计算机通过网络与阶层 1 服务器同步。提供阶层 2 的计算机将查询多个阶层 1 服务器。阶层 2 计算机也可能与其他阶层 2 计算机对等相连,为对等组中的所有设备提供更健全稳定的时间。

4、阶层 3 :

这些计算机与阶层 2 的服务器同步。它们使用与阶层 2 相同的算法进行对等和数据采样,并可以自己作为服务器担任阶层 4 计算机,以此类推。

阶层的上限为 15 ,阶层16 被用于表示设备未同步。每台计算机上的NTP算法相互构造已给贝尔曼--福特算法最短路径生成树,以最小化所有客户端到阶层 1 服务器的累积往返延迟

使用 ntpdate 命令从网络同步时间:

(1)查看当前的时间和时区:

date -R

(2)安装 ntpdate 客户端软件:

apt install -y ntpdate

(3)同步时间:

ntpdate cn.ntp.org.cn在中国境内,通过 http://www.ntp.org.cn/pool.php 获取ntp服务器的地址

(4)同步时间(方法二):

apt install -y systemd-timesyncdvim /etc/systemd/timesyncd.confNTP=0.cn.pool.ntp.orgsystemctl restart systemd-timesyncdtimedatectl timesync-status

搭建 NTP 服务器

(1)安装 NTP 服务器(同时作为客户端)软件:

apt install -y ntp

(2)配置 ntp 服务器,修改上游时间服务器地址为本地时间源,并允许内部网络计算机与其同步时间:

vim /etc/ntp.confserver ntp.aliyun.com iburstserver ntp1.aliyun.com iburstserver ntp2.aliyun.com iburst

(3)添加允许从客户端接收时间同步请求的网络范围:

restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

(4)重启 NTP 服务:

systemctl restart ntp

(5)查询本机与上游时间同步状态:

ntpq -p

配置 systemd 时间同步:

(1)在客户端安装 systemd 时间同步组件软件:

apt install systemd-timesyncd

(2)设置 ntp 时间服务器IP地址为本机的时间同步源:

vim /etc/systemd/timesyncd.confNTP=192.168.1.113

(3)查询时间同步状态:

timedatectl timesync-status

无外网连接的情况下使用 NTP 同步时间:

(1)在无外网连接的情况下使用ntpq工具查询无连接状态返回:

ntpq -p

(2)配置 ntp 软件设置,将NTP服务器上的上游时间指向本机:

vim /etc/ntp.confserver 127.127.1.0fudge 127.127.1.0 strautm 10

(3)使用 ntpq 工具查询时间同步状态:

ntpq -p

总结:

NTP网络协议十分重要,因为在计算机网络上的设备,即使是几分之一秒的时间准确性差异也可能导致问题。例如在以下场景中:

· 分布式程序依赖于协调的时间,以确保遵循正确的顺序

· 安全机制依赖于整个网络的一致计时

· 跨多台计算机执行的文件系统更新取决于同步的时钟时间

· 网络加速和网络管理系统依靠时间戳的准确性来衡量性能并解决问题