配置时间同步
大约 15 分钟
配置时间同步
来源:官方文档 原始多页入口:配置时间同步 内容规模:约 13,411 字符,19 个章节标题,44 个命令/代码块,5 条提示框
阅读提要
- 副标题:配置时间同步,以保持网络设备的准确计时
- 摘要:您可以配置时间同步,以保持网络的准确时间,确保可靠的通信和系统操作。
- 主要章节:配置时间同步,以保持网络设备的准确计时;对红帽文档提供反馈;第 1 章 chrony 套件介绍;第 2 章 使用 chrony;第 3 章 带有硬件时间戳的 chrony;第 4 章 chrony 中的网络时间安全概述(NTS)
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
配置时间同步,以保持网络设备的准确计时
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 chrony 套件介绍
- 要点:网络时间协议(NTP) 的实现是 chrony。您可以使用 chrony:
- 要点:chrony 在各种条件下表现良好:
- 列表:将系统时钟与 NTP 服务器同步
- 列表:将系统时钟与参考时钟同步,如 GPS 接收器
- 列表:将系统时钟与手动时间输入同步
- 列表:作为 NTPv4(RFC 5905) 服务器或对等服务器,为网络中的其他计算机提供时间服务
- 列表:包括网络连接
- 列表:严重拥堵的网络
第 2 章 使用 chrony
- 要点:了解如何启动和停止 chronyd,检查它是否已同步,并手动调整系统时钟。
2.1. 管理 chrony
- 要点:chrony 在 Red Hat Enterprise Linux 中默认安装。您可以启动、停止和检查 chronyd 的状态。
- 要点:流程
- 列表:可选:作为 root 运行以下命令,检查 chrony 套件是否已安装: # dnf install chrony chrony 守护进程的默认位置为 /usr/sbin/chronyd。命令行工具将安装到 /usr/bin/chronyc。
- 列表:运行以下命令检查 chronyd 的状态: $ systemctl status chronyd chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago
- 列表:要启动 chronyd,使用 root 用户身份运行以下命令: # systemctl start chronyd 要确保 chronyd 在系统启动时自动启动,以 root 身份运行以下命令: # systemctl enable chronyd
- 列表:要停止 chronyd,以 root 身份运行以下命令: # systemctl stop chronyd 要防止 chronyd 在系统启动时自动启动,以 root 身份运行以下命令: # systemctl disable chronyd
- 命令/配置摘录:
# dnf install chrony
$ systemctl status chronyd chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago2.2. 手动调整系统时钟
- 要点:您可以手动调整系统时钟,以便立即同步时间。当您需要通过清理来绕过当前正在进行的逐步时间调整时,这非常有用。
- 要点:流程
- 列表:要立即调整系统时钟,绕过正在进行的任何调整,请输入: # chronyc makestep 重要 如果使用 rtcfile 指令,请不要手动调整实时时钟。随机调整会干扰 chrony 工具需要测量实时时钟偏移的速度。
- 命令/配置摘录:
# chronyc makestep- 注意:重要 如果使用 rtcfile 指令,请不要手动调整实时时钟。随机调整会干扰 chrony 工具需要测量实时时钟偏移的速度。
2.3. 禁用 NetworkManager 分配程序脚本
- 要点:chrony 分配程序脚本管理 NTP 服务器的在线和离线状态。作为系统管理员,您可以禁用分配程序脚本,以使 chronyd 持续轮询服务器。
- 要点:NetworkManager 在接口重新配置停止或启动操作过程中执行 chrony 分配程序脚本。但是,如果您在 NetworkManager 之外配置某些接口或路由,您可能会遇到以下情况:
- 列表:当没有到 NTP 服务器的路由存在时,分配程序脚本可能会运行,从而导致 NTP 服务器切换到离线状态。
- 列表:如果您稍后建立路由,脚本默认不会再次运行,NTP 服务器保持在离线状态。
- 列表:要禁用 chrony 分配程序脚本,请创建一个到 /dev/null 的符号链接: # ln -f -s /dev/null /etc/NetworkManager/dispatcher.d/20-chrony-onoffline 注意 更改后,NTP 服务器一直保持在线状态。
- 命令/配置摘录:
# ln -f -s /dev/null /etc/NetworkManager/dispatcher.d/20-chrony-onoffline- 注意:注意 更改后,NTP 服务器一直保持在线状态。
2.4. 在隔离的网络中配置 chrony
- 要点:要同步网络中永远不会连接到互联网的时间,请将一台计算机配置为主时间服务器,将其他计算机配置为客户端。
- 要点:在主时间服务器上,使用系统时钟的平均偏移率手动设置 drift 文件。如果服务器重启,它会从周围的系统获得时间,并计算设定系统时钟的平均时间。之后,服务器会根据偏移文件恢复应用调整。当您使用 settime 命令时会自动更新 drift 文件。
- 列表:在要选择为服务器的系统上,编辑 /etc/chrony.conf,如下所示: driftfile /var/lib/chrony/drift commandkey 1 keyfile /etc/chrony.keys initstepslew 10 client1 client3 client6 local stratum 8 manual allow <subnet> 其中 <subnet> 是允许客户端连接的网络。使用无类别域间路由(CIDR)表示法指定子网。
- 列表:在选择为服务器的直接客户端的系统上,编辑 /etc/chrony.conf,如下所示: server <server_fqdn> driftfile /var/lib/chrony/drift logdir /var/log/chrony log measurements statistics tracking keyfile /etc/chrony.keys commandkey 24 local stratum 10 initstepslew 20 ntp1.example.net allow <server_ip_address> 其中 <server_fqdn> 是服务器的主机名,<server_ip_address> 是…
- 命令/配置摘录:
driftfile /var/lib/chrony/drift commandkey 1 keyfile /etc/chrony.keys initstepslew 10 client1 client3 client6 local stratum 8 manual allow <subnet>
server <server_fqdn> driftfile /var/lib/chrony/drift logdir /var/log/chrony log measurements statistics tracking keyfile /etc/chrony.keys commandkey 24 local stratum 10 initstepslew 20 ntp1.example.net allow <server_ip_address>2.5. 配置远程监控访问
- 要点:chronyc 工具可以通过 IPv4 或 IPv6 访问 chronyd,或者通过由 root 和 chrony 用户访问本地的 Unix 域套接字。
- 要点:默认情况下,chronyc 工具连接到 Unix 域套接字。默认路径为 /var/run/chrony/chronyd.sock。如果这个连接失败,chronyc 会尝试连接到 127.0.0.1,然后 ::1。
- 列表:activity
- 列表:manual list
- 列表:rtcdata
- 列表:smoothing
- 列表:sources
- 列表:sourcestats
- 命令/配置摘录:
bindcmdaddress 0.0.0.0
bindcmdaddress ::2.6. 检查是否同步 chrony
- 要点:您可以检查 chrony 是否已与 tracking、sources 和 sourcestats 命令的使用同步。
- 要点:流程
- 列表:要检查 chrony 跟踪,请输入: $ chronyc tracking Reference ID : CB00710F (ntp-server.example.net) Stratum : 3 Ref time (UTC) : Fri Jan 27 09:49:17 2017 System time : 0.000006523 seconds slow of NTP time Last offset : -0.000006747 seconds RMS offset : 0.000035822 seconds Frequency : 3.225 ppm slow Residual freq : 0.000 ppm Skew :…
- 列表:chronyc sources 命令显示 chronyd 正在访问的当前时间源的信息。 $ chronyc sources 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* GPS0 0 4 377 11 -479ns[ -621ns] /- 134ns ^? a.b.c 2 6 377 23 -923us[ -924us] +/- 43ms ^ d.…
- 列表:sourcestats 命令显示目前被 chronyd 检查的每个源的偏移率和误差估算过程的信息。要检查 chrony 源统计信息,请输入以下命令: $ chronyc sourcestats 210 Number of sources = 1 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev =============================================================================== abc.def.ghi 11 5 46m -0.001 0.045 1us 25us 可以使用可选参数 -v…
- 命令/配置摘录:
$ chronyc tracking Reference ID : CB00710F (ntp-server.example.net) Stratum : 3 Ref time (UTC) : Fri Jan 27 09:49:17 2017 System time : 0.000006523 seconds slow of NTP time Last offset : -0.000006747 seconds RMS offset : 0.000035822 seconds Frequency : 3.225 ppm slow Residual freq : 0.000 ppm Skew : 0.129 ppm Root delay : 0.013639022 seconds Root dispersion : 0.001100737 seconds Update interval : 64.2 seconds Leap status : Normal
$ chronyc sources 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* GPS0 0 4 377 11 -479ns[ -621ns] /- 134ns ^? a.b.c 2 6 377 23 -923us[ -924us] +/- 43ms ^ d.e.f 1 6 377 21 -2629us[-2619us] +/- 86ms2.7. 监控 NTP 客户端
- 要点:显示访问 chronyd 网络时间协议(NTP)服务器的客户端列表。此信息可用于验证哪些客户端正在主动同步并检查其连接历史记录。
- 要点:先决条件
- 列表:chronyd 服务正在运行。
- 列表:chronyd 被配置为允许 NTP 客户端。例如,将 allow 指令添加到 /etc/chrony.conf。
- 列表:使用 chronyc client 命令显示客户端列表 : # chronyc clients
- 列表:查看命令输出: Hostname NTP Drop Int IntL Last Cmd Drop Int Last ==================================================================================== client1.example.net 10 0 6 - 10s 0 0 6 12s client2.example.net 8 0 6 - 25s 0 0 6 28s desktop-192-0-2-100.example.net 3 6 - 9s 0 0 6 11s 输出字段包括: 主机名 :客户端的主机名或 IP 地址。 NTP :从客户端接收…
- 列表:主机名 :客户端的主机名或 IP 地址。
- 列表:NTP :从客户端接收的 NTP 数据包数。
- 命令/配置摘录:
# chronyc clients
Hostname NTP Drop Int IntL Last Cmd Drop Int Last ==================================================================================== client1.example.net 10 0 6 - 10s 0 0 6 12s client2.example.net 8 0 6 - 25s 0 0 6 28s desktop-192-0-2-100.example.net 3 6 - 9s 0 0 6 11s- 注意:注意 如果您有多个客户端,并且该命令返回缓慢,则可能是因为执行 DNS 查找。使用 -n 选项禁用主机名解析和显示 IP 地址:webserver chronyc -n 客户端
- 注意:重要 默认情况下,chronyd 监控最多 4,096 客户端。如果您有更多的客户端,您可以在 /etc/chrony.conf 文件中使用 clientloglimit 增加内存限值。例如: clientloglimit 10000000。
2.8. 其他资源
- 列表:常见问题解答
第 3 章 带有硬件时间戳的 chrony
- 要点:某些网络接口控制器(NIC)中的硬件(HW)时间戳提供传入和传出数据包的准确的时间戳。NTP 时间戳通常由内核及使用系统时钟的 chronyd 创建。但是,当启用了 HW 时间戳时,NIC 使用自己的时钟在数据包进入或离开链路层或物理层时生成时间戳。与 NTP 一起使用时,硬件时间戳可以显著提高同步的准确性。为了获得最佳准确性,NTP 服务器和 NTP 客户端都需要使用硬件时间戳。在理想的条件下,可能会达到微秒级的准确度。
- 要点:另一个用于使用硬件时间戳进行时间同步的协议是 PTP
3.1. 验证硬件时间戳支持
- 要点:要验证接口是否支持使用 NTP 的硬件时间戳,请使用 ethtool -T 命令。
- 要点:如果命令输出列出了 SOF_TIMESTAMPING_TX_HARDWARE 和 SOF_TIMESTAMPING_TX_SOFTWARE 功能以及 HWTSTAMP_FILTER_ALL 过滤器模式,则接口支持硬件时间戳。
- 列表:显示设备的时间戳功能和关联的 PTP 硬件时钟: # ethtool -T enp1s0
- 命令/配置摘录:
# ethtool -T enp1s03.2. 启用硬件时间戳
- 要点:您可以在 /etc/chrony.conf 文件中使用 hwtimestamp 指令,对一个或多个接口启用硬件时间戳。该指令可指定单一接口,也可以指定通配符字符来启用所有支持接口的硬件时间戳。
- 要点:流程
- 列表:编辑 /etc/chrony.conf 文件,并进行以下更改: 为支持硬件时间戳的接口添加 hwtimestamp 设置。例如: hwtimestamp enp1s0 hwtimestamp eno* 如果没有其他应用程(如 ptp4l )使用硬件时间戳,您可以使用 * 通配符。 通过在服务器设置中附加 minpoll 和 maxpoll 选项来配置简短的客户端轮询间隔,例如: server ntp.example.comlocal minpoll 0 maxpoll 0 对于硬件时间戳,您必须配置一个比默认范围(641024 秒)短的轮询间隔,以尽量减少系统时钟的偏移。 通过在服务器设置中附加 xleave 选项来启用 NTP …
- 列表:为支持硬件时间戳的接口添加 hwtimestamp 设置。例如: hwtimestamp enp1s0 hwtimestamp eno* 如果没有其他应用程(如 ptp4l )使用硬件时间戳,您可以使用 * 通配符。
- 列表:通过在服务器设置中附加 minpoll 和 maxpoll 选项来配置简短的客户端轮询间隔,例如: server ntp.example.comlocal minpoll 0 maxpoll 0 对于硬件时间戳,您必须配置一个比默认范围(641024 秒)短的轮询间隔,以尽量减少系统时钟的偏移。
- 列表:通过在服务器设置中附加 xleave 选项来启用 NTP 交错模式: server ntp.example.comlocal minpoll 0 maxpoll 0 xleave 使用这个设置,chrony 仅在发送数据包后得到硬件传输时间戳。此行为可防止服务器在其响应的数据包中保存时间戳。使用 xleave 选项,chrony 可以接收传输后生成的传输时间戳。
- 列表:可选:为服务器上客户端访问的日志增加分配的最大内存大小,例如: clientloglimit 100000000 默认服务器配置允许数以千计的客户端同时使用交错模式。通过增加 clientloglimit 设置的值,您可以为大量客户端配置服务器。
- 列表:重启 chronyd 服务: # systemctl restart chronyd
- 命令/配置摘录:
hwtimestamp enp1s0 hwtimestamp eno*
server ntp.example.comlocal minpoll 0 maxpoll 03.3. 配置 PTP-NTP 桥接
- 要点:为确保高度准确的网络同步,请将计算机配置为 PTP 客户端和 stratum-1 NTP 服务器。这在具有 PTP 主时间服务器但缺少 PTP 支持的交换机或路由器时很有用。
- 要点:专用于桥接 PTP 和 NTP 的计算机必须具有两个或者多个网络接口。它还必须接近主时间服务器,或者与其有直接连接。
- 列表:从 'linuxptp 软件包中配置 ptp4l 和 phc2sys 程序,以使用 PTP 来同步系统时钟。
- 列表:配置 chronyd ,以使用其他接口来提供系统时间: bindaddress 203.0.113.74 hwtimestamp enp1s0 local stratum 1
- 列表:重启 chronyd 服务: # systemctl restart chronyd
- 命令/配置摘录:
bindaddress 203.0.113.74 hwtimestamp enp1s0 local stratum 1
# systemctl restart chronyd第 4 章 chrony 中的网络时间安全概述(NTS)
- 要点:Network Time Security(NTS)是用于网络时间协议(NTP)的身份验证机制,旨在扩展大量客户端。它验证从服务器接收的数据包是否在传输到客户端中取消处理。
- 要点:Network Time Security(NTS)包含 Key Establishment(NTS-KE)协议,该协议会自动创建在服务器及其客户端中使用的加密密钥。
- 注意:警告 NTS 与 FIPS 和 OSPP 配置文件不兼容。当您启用 FIPS 和 OSPP 配置文件时,使用 NTS 配置的 chronyd 可能中止,并显示一条不可恢复消息。您可以通过在 /etc/sysconfig/chronyd 文件中添加 GNUTLS_FORCE_FIPS_MODE=0 设置添来对 chronyd 服务禁用 OSPP 配置文件和 FIPS 模式。
4.1. 在客户端上启用网络时间安全(NTS)
- 要点:默认情况下不启用 Network Time Security(NTS)。您可以在 /etc/chrony.conf 文件中启用 NTS。
- 要点:先决条件
- 列表:时间服务器支持 NTS。
- 列表:编辑 /etc/crony.conf 文件以进行以下更改:
- 列表:除了 iburst 选项外,使用 nts 选项指定服务器。 For example: server time.example.com iburst nts server nts.netnod.se iburst nts server ptbtime1.ptb.de iburst nts
- 列表:添加以下设置以避免在系统引导过程中重复 Network Time Security-Key Establishment (NTS-KE)会话: ntsdumpdir /var/lib/chrony
- 列表:如果存在,注释掉或删除以下设置,以禁用与 DHCP 提供的网络时间协议(NTP)服务器的同步: sourcedir /run/chrony-dhcp
- 列表:重启 chronyd 服务: systemctl restart chronyd
- 命令/配置摘录:
For example: server time.example.com iburst nts server nts.netnod.se iburst nts server ptbtime1.ptb.de iburst nts
ntsdumpdir /var/lib/chrony4.2. 在时间服务器上启用网络时间安全(NTS)
- 要点:如果您运行自己的网络时间协议(NTP)服务器,您可以启用服务器网络时间协议(NTS)支持来促进其客户端安全地同步。
- 要点:如果 NTP 服务器是其他 NTP 服务器的客户端,也就是说,它不是 Stratum 1 服务器,它应使用 NTS 或对称密钥进行同步。
- 列表:以 PEM 格式的服务器私钥
- 列表:带有 PEM 格式的所需中间证书的服务器证书
- 列表:编辑 /etc/chrony.conf 文件并进行以下更改: ntsserverkey /etc/pki/tls/private/<ntp-server.example.net>.key ntsservercert /etc/pki/tls/certs/<ntp-server.example.net>.crt
- 列表:对允许 chrony 用户读取文件的私钥和证书文件设置权限,例如 # chown root:chrony /etc/pki/tls/private/<ntp-server.example.net>.key /etc/pki/tls/certs/<ntp-server.example.net>.crt # chmod 644 /etc/pki/tls/private/<ntp-server.example.net>.key /etc/pki/tls/certs/<ntp-server.example.net>.crt
- 列表:确保 ntsdumpdir /var/lib/chrony 设置存在。
- 列表:在 firewalld 中开放所需的端口: # firewall-cmd --permanent --add-port={323/udp,4460/tcp} # firewall-cmd --reload
- 命令/配置摘录:
ntsserverkey /etc/pki/tls/private/<ntp-server.example.net>.key ntsservercert /etc/pki/tls/certs/<ntp-server.example.net>.crt
# chown root:chrony /etc/pki/tls/private/<ntp-server.example.net>.key /etc/pki/tls/certs/<ntp-server.example.net>.crt # chmod 644 /etc/pki/tls/private/<ntp-server.example.net>.key /etc/pki/tls/certs/<ntp-server.example.net>.crt完整目录
- 配置时间同步,以保持网络设备的准确计时
- 对红帽文档提供反馈
- 第 1 章 chrony 套件介绍
- 第 2 章 使用 chrony
- 2.1. 管理 chrony
- 2.2. 手动调整系统时钟
- 2.3. 禁用 NetworkManager 分配程序脚本
- 2.4. 在隔离的网络中配置 chrony
- 2.5. 配置远程监控访问
- 2.6. 检查是否同步 chrony
- 2.7. 监控 NTP 客户端
- 2.8. 其他资源
- 第 3 章 带有硬件时间戳的 chrony
- 3.1. 验证硬件时间戳支持
- 3.2. 启用硬件时间戳
- 3.3. 配置 PTP-NTP 桥接
- 第 4 章 chrony 中的网络时间安全概述(NTS)
- 4.1. 在客户端上启用网络时间安全(NTS)
- 4.2. 在时间服务器上启用网络时间安全(NTS)
