【Chrony】一个多功能的NTP实现

在现代的计算机系统中,准确的时间同步对于许多关键应用和系统的正常运行至关重要。Linux操作系统提供了多种时间同步工具,其中Chrony是一款备受推崇的工具,为Linux系统提供了更准确、更稳定的时间同步功能。本文将介绍Chrony的工作原理、优点以及如何使用它来提升时间同步的精确性和可靠性。

Chrony 是一个多功能的 NTP (Network Time Protocol) 实现,类 Unix 系统上 NTP 客户端和服务器的替代品。它可以通过 NTP 服务或者类似 GPS 时钟接收器的硬件级参考时钟来同步系统时钟,具有更好的时钟准确度,并且对于那些间歇性互联网连接的系统很有帮助。Chrony 是免费开源的,并且支持 GNU/Linux 和 BSD 衍生版(比如:FreeBSD、NetBSD)、macOS 和 Solaris 等。

一、Chrony的工作原理

Chrony通过使用NTP协议与远程时间服务器进行通信,获取准确的时间信息,并根据网络延迟和时钟偏移进行时间校正。与传统的NTP工具相比,Chrony采用了一种称为渐进线性补偿(PLC)的算法,能够更准确地估算系统时钟的偏移和漂移,从而提供更精确的时间同步。

二、Chrony的优点

高准确性:Chrony通过综合考虑网络延迟和时钟偏移等因素,能够提供比传统NTP更高的时间同步准确性。尤其在移动设备或不稳定网络环境下,Chrony的表现更加出色。

快速时间同步:由于采用了先进的算法和优化技术,Chrony能够在短时间内快速将系统时钟调整到正确的时间,减少时间调整的延迟。

稳定性:Chrony能够有效应对网络延迟、时钟漂移和临时网络中断等问题,保持时间同步的稳定性和可靠性。通过自动选择和切换时间服务器,Chrony能够在不同网络环境下灵活适应,并保持时间同步的持续性。

三、如何使用Chrony (Ubuntu 22.04)

安装Chrony

在Linux系统中,可以使用适用于对应发行版的软件包管理工具安装Chrony,并确保启动服务。

apt install chrony

root@knight:/home/knight# chronyc activity
200 OK
0 sources online
0 sources offline
6 sources doing burst (return to online)
0 sources doing burst (return to offline)
1 sources with unknown address
root@knight:/home/knight# chronyc -v
chronyc (chrony) version 4.2 (+READLINE +SECHASH +IPV6 -DEBUG)

配置Chrony

打开Chrony的配置文件(通常位于/etc/chrony.conf),根据自己的需求进行配置。可以指定时间服务器、网络限制、时钟调整策略等参数,以满足特定的时间同步要求。

...
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
...
# Use public NTP servers
server ntp.ntsc.ac.cn iburst
server cn.ntp.org.cn iburst
server time.edu.cn iburst
server time.cloud.tencent.com iburst
server ntp.tencent.com iburst
server ntp.aliyun.com iburst
server ntp.sjtu.edu.cn iburst

# Use local hardware clock as backup if no response from NTP servers
local stratum 10

# Allow NTP client access from local network
#allow 192.168.0.0/16

# Allow NTP clients to synchronize with this server
allow all

# Ignore NTP packets from outside the local network
#deny all

重启Chrony服务

使用相应的命令启动Chrony服务,并将其设置为系统启动时自动运行。可以通过命令行或系统管理工具来进行操作。

systemctl restart chrony

设置为开机启动:systemctl enable chronyd

查看服务状态

root@knight:/home/knight# netstat -nulp | grep chronyd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           649840/chronyd
udp        0      0 127.0.0.1:323           0.0.0.0:*                           649840/chronyd
udp6       0      0 :::123                  :::*                                649840/chronyd
udp6       0      0 ::1:323                 :::*                                649840/chronyd

常用命令

显示系统时钟性能的参数
root@knight:/home/knight#  chronyc tracking
Reference ID    : 11FD74FD (twtpe2-ntp-002.aaplimg.com)
Stratum         : 2
Ref time (UTC)  : Mon Nov 20 09:42:40 2023
System time     : 0.000089889 seconds slow of NTP time
Last offset     : -0.000377891 seconds
RMS offset      : 0.002584661 seconds
Frequency       : 45.411 ppm slow
Residual freq   : -2.820 ppm
Skew            : 13.079 ppm
Root delay      : 0.051119432 seconds
Root dispersion : 0.002186287 seconds
Update interval : 65.2 seconds
Leap status     : Normal
查看时间同步源的状态
root@knight:/home/knight# chronyc activity
200 OK
6 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
1 sources with unknown address
显示时间同步源
root@knight:/home/knight# chronyc sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 114.118.7.163                 2   6    10   322  +2515us[+2424us] +/-  161ms
^? 1.14.61.51                    0   8     0     -     +0ns[   +0ns] +/-    0ns
^+ time.neu.edu.cn               1   6   377     3  +5227us[+5227us] +/-   23ms
^+ 106.55.184.199                2   6   377     6  -1792us[-2026us] +/-   37ms
^+ 203.107.6.88                  2   6   277     5  +4746us[+4746us] +/-   20ms
^* twtpe2-ntp-002.aaplimg.c>     1   6   377     6   -353us[ -586us] +/-   26ms
root@knight:/home/knight# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 114.118.7.163                 2   7    20   324  +2515us[+2424us] +/-  161ms
^? 1.14.61.51                    0   8     0     -     +0ns[   +0ns] +/-    0ns
^+ time.neu.edu.cn               1   6   377     5  +5227us[+5227us] +/-   23ms
^+ 106.55.184.199                2   6   377     8  -1792us[-2026us] +/-   37ms
^+ 203.107.6.88                  2   6   277     7  +4746us[+4746us] +/-   20ms
^* twtpe2-ntp-002.aaplimg.c>     1   6   377     8   -353us[ -586us] +/-   26ms

结论:

Chrony是一款强大而灵活的时间同步工具,为Linux系统提供了提升时间同步精确性和稳定性的解决方案。通过使用Chrony,我们能够更好地保证系统的时间准确性,尤其在需要高精度时间同步的应用和环境下表现突出。无论是移动设备还是服务器,Chrony都是一个值得推荐和采用的时间同步工具。

常用的NTP服务器:

  • 国家授时中心NTP服务器:ntp.ntsc.ac.cn
  • 中国 NTP 快速授时服务(NTP ORG CN) cn.ntp.org.cn
  • 教育网 time.edu.cn
  • 腾讯云NTP服务器time.cloud.tencent.com / ntp.tencent.com
  • 阿里云NTP服务器ntp.aliyun.com
  • 上海交大NTP 服务器 ntp.sjtu.edu.cn

你可能感兴趣的:(Ubuntu,Linux,linux,运维,网络安全)