linux下NTP服务器实战(chrony软件)

2024-09-06 15:44

本文主要是介绍linux下NTP服务器实战(chrony软件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux下NTP服务器实战(chrony软件)

记录linux下NTP服务器搭建及相关管理操作,使用chrony软件包安装部署。相比ntp服务,Chrony服务适用于更高精度、更高稳定性、自动化等场景。

1. 安装 chrony

在大多数Linux发行版上,chrony可以通过包管理器直接安装。

  • CentOS/RHEL:

    sudo yum install chrony   # CentOS 7 及之前的版本
    sudo dnf install chrony   # CentOS 8 和 Fedora
    
  • Ubuntu/Debian:

    sudo apt install chrony
    

chrony 守护进程的默认位置为 /usr/sbin/chronyd。命令行工具将安装到 /usr/bin/chronyc

2. 配置chrony

chrony的配置文件通常位于/etc/chrony.conf。要将机器配置为NTP服务器,需进行如下修改:

编辑 /etc/chrony.conf 文件:

sudo vim /etc/chrony.conf
  1. 允许网络客户端访问:
    找到并修改或添加以下配置,允许特定网段或所有网络客户端访问:

    allow 192.168.0.0/24   # 允许指定网段访问
    allow all              # 允许所有客户端访问
    
  2. 选择上游时间源:
    可以设置NTP服务器来同步本地时间。以下是一些常用的NTP服务器:

    server 0.centos.pool.ntp.org iburst
    server 1.centos.pool.ntp.org iburst
    server 2.centos.pool.ntp.org iburst
    
  3. 设置NTP服务器为本地时间主机:
    如果此NTP服务器在不与外界同步的情况下应保持提供时间服务,可以启用本地时间作为时间源:

    local stratum 10
    

    这里设置的stratum值较高,以避免本地时间被优先用于其他时间服务器。

配置文件示例:

[root@ntp ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.210.10.220 iburst
# 指定了一个 NTP 服务器的地址(10.210.10.220)。iburst 选项使得当客户端第一次与服务器进行通信时,如果无法立即建立连接,客户端会发送一组加速的请求(通常为 4 个包),以加快与时间服务器的同步速度。# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# driftfile 参数指定了存储系统时钟漂移数据的文件。系统定期测量其内部时钟的漂移(增快或减慢的速率)并记录到该文件中,这可以帮助 chrony 更好地调整系统时钟。# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# 允许在前 3 次时间更新时,如果系统时钟的偏差超过 1 秒,chrony 可以直接调整系统时钟,而不是渐进调整。这在系统启动后可以快速纠正较大的时间偏差。# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# 启用内核的 RTC(实时时钟)同步。当系统时钟与 NTP 服务器同步时,内核会自动同步硬件时钟(通常是 BIOS 中的时钟)与系统时钟,以确保即使系统关机,硬件时钟也能保持准确。# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# 这一行被注释掉了。如果启用,将会在所有支持硬件时间戳的网络接口上启用硬件时间戳。硬件时间戳可以提高网络延迟的精确度,尤其是在处理非常精确的时间同步时。# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# 如果启用,将设置系统调整时钟时所需的最少可用时间源数目为 2。这有助于确保同步的时间更为可靠。# Allow NTP client access from local network.
# allow 192.168.0.0/16	# 允许特定的网络范围(如 192.168.0.0/16)内的客户端访问本地 NTP 服务。
# 默认情况下,远程的 NTP 客户端是无法与该 chrony 服务器进行时间同步的。需要通过 allow 指令明确地允许特定的网络范围或 IP 地址进行时间同步。
allow all  # 允许所有客户端同步时间。
# Serve time even if not synchronized to a time source.
#local stratum 10
# 如果启用,即使本机没有与外部时间源同步,也会向网络上的其他设备提供时间服务,并将本地服务器的 stratum 设置为 10(即优先级较低的时间源)。# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys
# 如果启用,它会指定一个包含 NTP 身份验证密钥的文件。这用于在服务器和客户端之间进行身份验证,确保同步时间的安全性。# Specify directory for log files.
logdir /var/log/chrony
# logdir 参数指定了 chrony 写日志的目录路径。在这里,日志文件将存储在 /var/log/chrony 目录下。 	# Select which information is logged.
#log measurements statistics tracking
# 如果启用,chrony 会记录测量值、统计信息以及时间跟踪等详细日志信息。

3. 启动chrony服务

保存配置文件后,启动并启用chrony服务:

sudo systemctl start chronyd
sudo systemctl enable chronyd

4. 检查NTP服务状态

确认chrony正在运行并同步时间:

chronyc tracking

此命令会显示本地系统与NTP服务器的同步状态。

5. 客户端配置

在客户端机器上,确保chronyntpd安装完成并且配置好指向你的NTP服务器:

编辑客户端的/etc/chrony.conf/etc/ntp.conf,添加你的NTP服务器IP地址:

server <NTP服务器的IP地址> iburst

保存后,重启客户端的chronydntpd服务:

sudo systemctl restart chronyd  # 或 ntpd

6. 验证同步

在客户端上,可以通过以下命令检查是否与服务器同步:

chronyc sources

这会列出当前的时间源,确保NTP服务器显示为活动时间源。

示例输出:

210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- time1.google.com              1   6    377    48   -176us[ -199us] +/-  15ms
^* time2.google.com              1   6    377    47   +245us[ +220us] +/-  13ms
^- time3.google.com              1   6    377    47   -310us[ -332us] +/-  16ms
^+ time4.google.com              1   6    377    48   +129us[ +105us] +/-  14ms
[root@dns ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.210.10.45                  5   6    37    15    +18us[+1062us] +/-   11ms

字段解释:

  • MS: 这列表示当前时间源的状态标记。

    • ^ 表示该时间源是NTP服务器。
    • * 表示当前使用的时间源(同步的主源)。
    • + 表示备用时间源,可能被选为候选同步源。
    • - 表示被排除的时间源,当前不会同步该时间源。
    • = 表示该时间源是peer节点。
    • ?:表示该服务器的状态未知,可能无法到达或正在等待响应。
    • x:表示该时间源的时间可能有错误,因此不能被信任。
    • ~:表示该时间源的时间变化太大,波动性过高,无法稳定同步。
  • Name/IP address:

    这是时间源的主机名或IP地址。它显示的是你系统上配置的时间源。

  • Stratum:

    NTP层级值,表示时间源的层次。stratum越低,时间源越靠近参考时钟(例如原子钟)。本地时钟通常会被设置为较高的stratum值(如15),表示优先级较低。

  • Poll:

    表示轮询间隔,单位是秒的对数(2^Poll)。在这个示例中,值6表示当前的轮询间隔是2^6 = 64秒。

  • Reach:

    这是一个八位的二进制数值,表示最近的查询是否成功。377的十六进制表示是11111111,表示最近8次查询全部成功。

  • LastRx:

    上次接收到NTP服务器响应的时间,单位是秒。

  • Last sample:

    该列表示时间偏差(时间源与本地时钟的差异)和误差范围:

    • +245us[ +220us]:表示偏差为+245微秒,括号内表示的是过滤后的估计值+220微秒
    • +/- 13ms:这是该时间源的误差范围。

7. chronyc相关命令

  1. chronyc tracking

    • chronyc 跟踪,查看本地系统的时间同步状态,包括与时间源的偏差、同步源的 stratum 层级、本地时钟漂移等信息。
    • 输出示例:
      Reference ID    : 203.0.113.1 (ntp.example.com)
      Stratum         : 3
      Ref time (UTC)  : Tue Aug 29 12:00:00 2024
      System time     : 0.000000001 seconds fast of NTP time
      Last offset     : -0.000000002 seconds
      RMS offset      : 0.000000003 seconds
      Frequency       : 12.345 ppm slow
      Residual freq   : -0.001 ppm
      Skew            : 0.005 ppm
      
  2. chronyc sources

    • 显示当前配置的所有时间源的信息,包括其状态、stratum 层级、延迟、偏差等。
    • 输出示例:
      MS Name/IP address         Stratum Poll Reach LastRx Last sample
      ===============================================================================
      ^* ntp.example.com              2   6    377    30   -240us[ -310us] +/-  16ms
      ^+ ntp2.example.com             2   6    377    31   -124us[ -154us] +/-  12ms
      

    可以指定可选的 -v 参数来打印更详细的信息。在这种情况下,会输出额外的标头行显示字段含义的信息。

  3. chronyc sourcestats

    • 显示时间源的统计信息,包括标准偏差、延迟等。
    • 输出示例:
      Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
      ===============================================================================
      ntp.example.com            12   6   198    +0.000     0.005  +12ns    16us
      

    可以使用可选参数 -v 来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。

  4. chronyc ntpdata

    • 查看与某个特定时间源的NTP数据,包括该源的stratum、延迟、偏差、抖动等详细信息。
    • 用法:
      chronyc ntpdata ntp.example.com
      
  5. chronyc sources -v

    • 以详细模式显示时间源的信息。
    • 输出示例:
      210 Number of sources = 2
      MS Name/IP address            Stratum Poll Reach LastRx Last sample
      ===============================================================================
      ^* ntp.example.com                 2   6   377   30    -240us[ -310us] +/-  16ms
      ^+ ntp2.example.com                2   6   377   31    -124us[ -154us] +/-  12ms
      
  6. chronyc activity

    • 显示当前chrony服务的活动状态,如使用的时间源数量、已处理的请求数量等。
    • 命令:
      chronyc activity
      
  7. chronyc makestep

    • 强制进行时间跳步校正。适用于时间偏差较大(通常大于 1 秒)的情况。
    • 命令:
      chronyc -a makestep
      
  8. chronyc waitsync

    • 等待本地系统与NTP源同步完成,通常用于系统启动时确保时间已同步。
    • 命令:
      chronyc waitsync
      
  9. chronyc clients

    • 显示已连接到此 NTP 服务器的客户端信息。
    • 命令:
      chronyc clients
      
  10. chronyc serverstats

    • 显示当前NTP服务器的统计信息,包括已处理的NTP请求数量、拒绝的请求数量等。
    • 命令:
      chronyc serverstats
      
  11. chronyc add server <server_ip>

    • 动态添加一个新的NTP服务器作为时间源。
    • 命令:
      chronyc add server ntp.example.com iburst
      
  12. chronyc delete server <server_ip>

    • 动态删除一个时间源。
    • 命令:
      chronyc delete server ntp.example.com
      

说明:

动态修改不会永久保存,重启 Chrony 后会丢失。要永久更改,请编辑配置文件。

8. ntp服务与chrony服务对比

Chrony服务和NTP服务对比:

时间同步服务使用场景时间同步精度稳定性简介
Chrony服务适用于高精度、高稳定性、自动化等场景。较高能够更好地适应高延迟和不稳定的网络环境。Chrony是一个实现网络时间协议(NTP)的软件包,用于同步计算机的系统时间与世界各地的NTP服务器。Chrony特别适合在变化的网络环境中运行,能够以快速和高效的方式调整系统时间。更多信息,请参见Chrony。
NTP服务适用于大多数无需太高精度要求的普通场景。正常仅能适应一定程度的网络不稳定。NTP是一种经典的时间同步服务,是NTP协议的一个实现。NTP适用于长期运行的服务器,特别是在网络条件比较稳定的环境下。更多信息,请参见NTP。

ntp服务文件和chrony服务文件对比:

ntp namechrony name
/etc/ntp.conf/etc/chrony.conf
/etc/ntp/keys/etc/chrony.keys
ntpdchronyd
ntpqchronyc
ntpd.servicechronyd.service
ntp-wait.servicechrony-wait.service

将ntp服务器迁移到chrony服务器:

在chrony包(/usr/share/doc/chrony)的文档中,包含了一个名为ntp2chrony.py的Python脚本。该脚本用于自动将现有的NTP配置转换为chrony配置。详情参考下面链接:

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/configuring-time-synchronization_configuring-basic-system-settings#proc_migrating-to-chrony_using-chrony-to-configure-ntp

9. 相关资料

  1. Chapter 18. Configuring NTP Using the chrony Suite | Red Hat Product Documentation

这篇关于linux下NTP服务器实战(chrony软件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142425

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta