Chrony-替代的NTP客户端和服务器,用于Unix的系统
在本教程中,我们将讨论如何为Unix的系统安装和配置Chrony,备用NTP客户端和服务器。
Chrony可以更快地将系统时钟与更好的时间精度同步,并且对于在线并非一直在线的系统特别有用。
Chrony是免费的,开源,支持GNU/Linux和BSD变体,如FreeBSD,NetBSD,MacOS和Solaris。
安装Chrony
Chrony可在大多数Linux发行版的默认存储库中提供。
如果我们在Arch Linux上,请运行以下命令以安装:
$sudo pacman -S chrony
在Debian,Ubuntu,Linux Mint:
$sudo apt-get install chrony
关于Fedora:
$sudo dnf install chrony
安装后,启动ChronyD.Service守护程序(如果尚未启动)已:
$sudo systemctl start chronyd.service
使用命令每次重新启动时自动启动:
$sudo systemctl enable chronyd.service
要验证ChronyD.Service是否已启动,请运行:
$sudo systemctl status chronyd.service
如果一切正常,我们将看到下面的输出。
● chrony.service - chrony, an NTP client/server Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: ena Active: active (running) since Wed 2016-10-17 10:34:53 UTC; 3min 15s ago Docs: man:chronyd(8) man:chronyc(1) man:chrony.conf(5) Main PID: 2482 (chronyd) Tasks: 1 (limit: 2320) CGroup: /system.slice/chrony.service └─2482 /usr/sbin/chronyd Oct 17 10:34:53 ubuntuserver systemd[1]: Starting chrony, an NTP client/server... Oct 17 10:34:53 ubuntuserver chronyd[2482]: chronyd version 3.2 starting (+CMDMON Oct 17 10:34:53 ubuntuserver chronyd[2482]: Initial frequency -268.088 ppm Oct 17 10:34:53 ubuntuserver systemd[1]: Started chrony, an NTP client/server. Oct 17 10:35:03 ubuntuserver chronyd[2482]: Selected source 85.25.84.166 Oct 17 10:35:03 ubuntuserver chronyd[2482]: Source 85.25.84.166 replaced with 2403 Oct 17 10:35:03 ubuntuserver chronyd[2482]: Selected source 91.189.89.199 Oct 17 10:35:06 ubuntuserver chronyd[2482]: Selected source 106.10.186.200
正如我们所看到的,Chrony Service启动并工作!
配置Chrony
NTP客户端需要知道它应该联系的NTP服务器以获取当前时间。
我们可以在NTP配置文件中指定服务器或者池指令中的NTP服务器。
通常,默认配置文件是/etc/chrony/chrony.conf或者/etc/chrony.conf,具体取决于Linux发行版本。
为更好的可靠性,建议至少指定三个服务器。
以下行只是从我的Ubuntu 18.04 LTS服务器取出的示例。
[...] # About using servers from the NTP Pool Project in general see (LP: #104525). # Approved by Ubuntu Technical Board on 2011-02-08. # See http://www.pool.ntp.org/join.html for more information. 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 [...]
如上所述,在上面的输出中,NTP池项目已设置为默认时间服务器。
对于那些想知道,NTP池项目是时间服务器集群,为世界各地的数百万客户提供NTP服务。
它是Ubuntu和大多数其他主要Linux发行版的默认时间服务器。
其中
- iBurst选项用于加快初始同步。
- MaxSources是指NTP源的最大数量。
请确保所选的NTP服务器非常同步,稳定,靠近位置,以提高NTP源的时间准确性。
从命令行管理chronyd
Chrony有一个名为chronyc的命令行实用程序来控制和监控Chrony守护程序(ChronyD)。
要检查Chrony是否同步,我们可以使用跟踪命令,如下所示。
$chronyc tracking Reference ID : 6A0ABAC8 (t1.time.sg3.yahoo.com) Stratum : 3 Ref time (UTC) : Wed Oct 17 11:48:51 2016 System time : 0.000984587 seconds slow of NTP time Last offset : -0.000912981 seconds RMS offset : 0.007983995 seconds Frequency : 23.704 ppm slow Residual freq : +0.006 ppm Skew : 1.734 ppm Root delay : 0.089718960 seconds Root dispersion : 0.008760406 seconds Update interval : 515.1 seconds Leap status : Normal
我们可以验证Charony使用命令的当前时间源:
$chronyc sources 210 Number of sources = 8 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- chilipepper.canonical.com 2 10 377 296 +102ms[ +104ms] +/- 279ms ^- golem.canonical.com 2 10 377 302 +105ms[ +107ms] +/- 290ms ^+ pugot.canonical.com 2 10 377 297 +36ms[ +38ms] +/- 238ms ^- alphyn.canonical.com 2 10 377 279 -43ms[ -42ms] +/- 238ms ^- dadns.cdnetworks.co.kr 2 10 377 1070 +40ms[ +42ms] +/- 314ms ^* t1.time.sg3.yahoo.com 2 10 377 169 -13ms[ -11ms] +/- 80ms ^+ sin1.m-d.net 2 10 275 567 -9633us[-7826us] +/- 115ms ^- ns2.pulsation.fr 2 10 377 311 -75ms[ -73ms] +/- 250ms
ChronyC实用程序可以使用Sourcestats命令找到每个源的统计信息,例如漂移率和偏移估计过程。
$chronyc sourcestats 210 Number of sources = 8 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ============================================================================== chilipepper.canonical.com 32 16 89m +6.293 14.345 +30ms 24ms golem.canonical.com 32 17 89m +0.312 18.887 +20ms 33ms pugot.canonical.com 32 18 89m +0.281 11.237 +3307us 23ms alphyn.canonical.com 31 20 88m -4.087 8.910 -58ms 17ms dadns.cdnetworks.co.kr 29 16 76m -1.094 9.895 -83ms 14ms t1.time.sg3.yahoo.com 32 16 91m +0.153 1.952 +2835us 4044us sin1.m-d.net 29 13 83m +0.049 6.060 -8466us 9940us ns2.pulsation.fr 32 17 88m +0.784 9.834 -62ms 22ms
如果系统未连接到Internet,则需要通知Charony系统未连接到Internet。
为此,运行:
$sudo chronyc offline [sudo] password for sk: 200 OK
要验证NTP源的状态,只需运行:
$chronyc activity 200 OK 0 sources online 8 sources offline 0 sources doing burst (return to online) 0 sources doing burst (return to offline) 0 sources with unknown address
如我们所见,我现在所有的NTP来源都在下降。
一旦我们连接到Internet,只需通知Charony系统使用命令在线返回:
$sudo chronyc online 200 OK
要查看NTP源的状态,请运行:
$chronyc activity 200 OK 8 sources online 0 sources offline 0 sources doing burst (return to online) 0 sources doing burst (return to offline) 0 sources with unknown address
有关所有选项和参数的更详细说明,请参阅手册页。
$man chronyc
$man chronyd