在 Linux 中配置网络时间协议 (NTP) 同步
NTP 是网络时间协议的缩写,也称为网络时间协议,是 Linux 中保持准确时间的协议。这与网络上可用的 NTP 服务器保持时钟同步
保持准确的日期和时间在 Linux 中至关重要,因为许多服务(例如 cron 作业和脚本)依赖于准确的时间来产生预期结果
用于同步日期和服务 在新的 Linux 发行版() centos8、Ubuntu 20.04、Fedora 30ntpd 在新的 Linux 发行版(centos8、Ubuntu 20.04)中已被 chrony 取代,优点如下: 是默认安装的系统及以上版本的chrony)。之前的版本没有安装。可以使用以下命令安装1、时间同步的速度比 ntpd 更快
2、chrony 很好的处理了同步延迟以及网络延迟
3、即使出现网络降级,chrony 仍然能正常工作
4、本地机器可以作为时间服务器,其他机器从这台服务器上同步时间
安装
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
![]()
具体问题描述请参见https://bugzilla.redhat.com /show_bug.cgi?id=1592775
# 安装 libsepol 和 policycoreutils-python
yum install libsepol policycoreutils-python
chrony组成
chrony由守护进程组成u♺ ♺❀d命令行工具chrony c如下图
![]()
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 配置元素
客户端要获取时间,必须去时间服务器。配置文件中 server 和 pool 配置项代表时间服务器地址,支持域名或 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客户端查看同步客户端信息的命令
![]()
要查看时间服务器信息,请输入命令 输入命令 ![]()
问题问题
配置时间时,可能会出现各种问题。下面列出了一些常见问题和解决方案
客户端无法同步时间
首先想到的是服务器上有防火墙。目前客户端向服务器询问时间是没有问题的。作为响应,在客户端设备上输入命令 chrony c 来源。可以看到字段Reach的值为0,这意味着客户端没有收到服务器的响应。请看下图 1 服务器时间相差太大,如何快速修复
通常,chrony会逐渐修正与服务器的时差,根据需要加快或减慢时钟,如果客户端和服务器时间相差太大。 ,这个过程需要很长的时间
这种情况下,可以使用命令 但是需要注意的是,这种方法直接跳过系统时间段,可能会给应用带来问题。问题严重,所以建议按照 本文介绍了常见时间同步问题的配置方法和解决方案Linux。或计划,有关 作者 |枫叶 制作 | Linux 开发事物(ID:LinuxThings)chrony c maketep快速修复客户端时间,makestep不带参数。意思是chronyd取消时间调整操作,将当前客户端时间直接更改为服务器时间chronyd逐步修复方法总结
chrony的更多信息,请参阅下面的网站https://chrony.tuxfamily.org/documentation.html
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网