Code前端首页关于Code前端联系我们

在 Linux 中配置网络时间协议 (NTP) 同步

terry 2年前 (2023-09-28) 阅读数 58 #未命名

NTP 是网络时间协议的缩写,也称为网络时间协议,是 Linux 中保持准确时间的协议。这与网络上可用的 NTP 服务器保持时钟同步

保持准确的日期和时间在 Linux 中至关重要,因为许多服务(例如 cron 作业和脚本)依赖于准确的时间来产生预期结果

用于同步日期和服务 ntpd 在新的 Linux 发行版(centos8、Ubuntu 20.04)中已被 chrony 取代,优点如下:

1、时间同步的速度比 ntpd 更快

2、chrony 很好的处理了同步延迟以及网络延迟

3、即使出现网络降级,chrony 仍然能正常工作

4、本地机器可以作为时间服务器,其他机器从这台服务器上同步时间

安装

在新的 Linux 发行版() centos8、Ubuntu 20.04、Fedora 30

是默认安装的系统及以上版本的chrony)。之前的版本没有安装。可以使用以下命令安装

yum install chrony

安装完成后,chrony service默认会添加到systemctl中进行管理。下面列出了一些常用的命令

#查询 chronyd 服务状态
systemctl status chronyd     

#启动 chronyd 服务
systemctl start chronyd   

#关闭 chronyd 服务
systemctl stop chronyd   

#重启 chronyd 服务
systemctl restart chronyd   

#设置 chronyd 服务开机自启
systemctl enable chronyd
systemctl daemon-reload

另外,如果启动chronyd服务时出现下图所示的错误,则需要安装或更新libsepol 、policycoreutils-python

Linux 怎么配置 NTP (网络时间协议)同步

具体问题描述请参见https://bugzilla.redhat.com /show_bug.cgi?id=1592775

# 安装 libsepol 和 policycoreutils-python
yum install libsepol policycoreutils-python

chrony组成

chrony由守护进程组成u♺ ♺❀d命令行工具chrony c如下图

Linux 怎么配置 NTP (网络时间协议)同步

chrony d在后台安静运行,定期通过123端口与时间服务器同步时间。默认配置文件为 /❀ /chrony.conf

chrony c 通过端口 323 交互 chrony d 可以监控 各种运行参数变化的性能❀ chrony启动期间。 chrony c 访问:chrony d

1、通过 IPv4 或 IPv6 访问

2、通过 Unix 域 socket, 但只能访问到本地的 chronyd,而且需要 root 用户或者 chrony 用户才能访问

默认 在本例中,chrony c 首先通过 访问域 d en.默认套接字文件为 /var/run/chrony/chrony d.sock 如果失败(通常的原因是使用非 root 用户运行 chrony c),则会尝试通过 127.0.0.1 访问 chrony d

chrony 配置

守护进程 chrony d 的默认配置文件是/etc/chrony.conf,其中有很多可配置项。下面是一些常用的

配置项 说明
服务器 客户端需要找什么服务器来查询当前时间余量 与服务器配置项相同
什么文件是本地时钟和记录的估计服务器时钟漂移
makestep以纠正客户端时间 步骤参数
rtcsync内核是否启用实时时钟同步
enable允许客户端通过内部网络地址同步时钟
logdir日志目录

时间同步设置

守护进程chrony d可以作为客户端,接受并同步其他服务器的时间到本服务器。同步时间

下面以局域网时间服务器配置为例,说明chrony d的客户端和服务器配置。相关参数为:

客户端IP: 192.168.70.22

服务器IP: 192.168.70.21

具体配置步骤如下

1。安装客户端服务器

将分别在客户端和服务器计算机上安装 chrony。安装方法之前已经介绍过,这里不再赘述

2。编辑 /etc/chrony.conf

安装 chrony 后,编辑 /etc/chrony.conf 配置文件

配置文件

配置文件 config 客户端之后安装chrony时,默认配置是客户端启动配置。如果要将其作为时间服务器运行,则必须在设置中添加配置元素 allow,这意味着允许客户端通过此地址

与服务器同步时间,时间服务器时间还必须从其他网络时间服务器同步,这里只使用默认设置。具体配置如下


# 同步时间的服务器 IP 或 域名
pool 0.centos.pool.ntp.org iburst
pool 1.centos.pool.ntp.org iburst
pool 2.centos.pool.ntp.org iburst
pool 3.centos.pool.ntp.org iburst

# 为了在下次启动时稳定的同步,系统时钟的预估漂移需要保存到指定的文件中
driftfile /var/lib/chrony/drift

# 如果系统时钟由于某种原因与启动后的服务器时间相差甚远,允许 chronyd 
# 通过步进而不是回转来快速纠正它,这个过程将花费很长时间
makestep 1 3

# 为了使客户端实时时钟接近服务器的时钟,以便下次时钟启动时更接近真实的时间
# 增加了一种 rtcsync 模式,该模式下,系统时间会定期的拷贝到实时时钟里
rtcsync

# 允许客户端通过该地址和服务器同步时间,其实这里配置的就是时间服务器的地址
allow 192.168.70.21

pool 配置元素

客户端要获取时间,必须去时间服务器。配置文件中 serverpool 配置项代表时间服务器地址,支持域名或 IP

建议配置多个服务器地址。 ,优先选择同步性好、网络稳定、距离客户端较近的地址进行时间同步。作为服务器,它的机器时间也必须与其他时间服务器同步。此时服务器作为客户端从网络获取服务器上的时间

,而字段allow表示作为服务器允许客户端从该地址获取时间。该地址实际上是服务器的内网地址

3. 处理防火墙

如果时间服务器上启用了防火墙,则必须打开 UDP 协议端口 123,以便客户端可以向时间服务器发送时间请求。服务器

[root@cghost22 ~]# firewall-cmd --permanent --add-port=123/udp
success
[root@cghost22 ~]# firewall-cmd --reload
success

如果要关闭防火墙 123 端口,请在服务器机器上运行以下命令

[root@cghost22 ~]# firewall-cmd --permanent --remove-port=123/udp
success
[root@cghost22 ~]# firewall-cmd --reload
success
4. 重启 chrony

配置好客户端和服务器后,配置才能生效,需要重启服务器chrony d服务

 systemctl restart chronyd   
5.请求信息

在服务器端输入命令chrony c客户端查看同步客户端信息的命令

Linux 怎么配置 NTP (网络时间协议)同步

要查看时间服务器信息,请输入命令 输入命令 Linux 怎么配置 NTP (网络时间协议)同步

问题问题

配置时间时,可能会出现各种问题。下面列出了一些常见问题和解决方案

客户端无法同步时间

首先想到的是服务器上有防火墙。目前客户端向服务器询问时间是没有问题的。作为响应,在客户端设备上输入命令 chrony c 来源。可以看到字段Reach的值为0,这意味着客户端没有收到服务器的响应。请看下图 1 服务器时间相差太大,如何快速修复

通常,chrony会逐渐修正与服务器的时差,根据需要加快或减慢时钟,如果客户端和服务器时间相差太大。 ,这个过程需要很长的时间

这种情况下,可以使用命令chrony c maketep快速修复客户端时间,makestep不带参数。意思是chronyd取消时间调整操作,将当前客户端时间直接更改为服务器时间

但是需要注意的是,这种方法直接跳过系统时间段,可能会给应用带来问题。问题严重,所以建议按照chronyd逐步修复方法

总结

本文介绍了常见时间同步问题的配置方法和解决方案Linux。或计划,有关chrony的更多信息,请参阅下面的网站

https://chrony.tuxfamily.org/documentation.html


作者 |枫叶

制作 | Linux 开发事物(ID:LinuxThings)

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门