当前位置: 首页 > 科技观察

Chrony:类Unix系统的NTP客户端和服务器替代

时间:2023-03-13 05:52:03 科技观察

在本教程中,我们将讨论如何安装和配置Chrony,它是类Unix系统的NTP客户端和服务器替代品。Chrony可以更快地同步系统时钟,具有更好的时钟精度,对于不是一直在线的系统很有帮助。Chrony是免费和开源的,支持GNU/Linux和BSD衍生产品(例如FreeBSD、NetBSD)、macOS和Solaris等。安装ChronyChrony可以从大多数Linux发行版的默认软件存储库中获得。如果您使用的是ArchLinux,请运行以下命令进行安装:$sudopacman-Schrony在Debian、Ubuntu、LinuxMint上:$sudoapt-getinstallchrony在Fedora上:$sudodnfinstallchrony当安装完成时最后,如果之前没有启动过,需要启动chronyd.service守护进程:$sudosystemctlstartchronyd.service使用下面的命令让它在每次系统重启后自动运行:$sudosystemctlenablechronyd.service为了要确认chronyd.service已启动,请运行:$sudosystemctlstatuschronyd.service如果一切正常,您应该会看到类似于以下内容的输出:chrony.service-chrony,一个NTP客户端/服务器已加载:已加载(/lib/systemd/system/chrony.service;已启用;供应商预设:enaActive:活动(运行)自周三2018-10-1710:34:53UTC;3分钟15秒前文档:man:chronyd(8)man:chronyc(1)man:chrony.conf(5)MainPID:2482(chronyd)Tasks:1(limit:2320)CGroup:/system.slice/chrony.service└─2482/usr/sbin/chronydOct1710:34:53ubuntuserversystemd[1]:启动chrony,一个NTP客户端/服务器...10月17日10:34:53ubuntuserverchronyd[2482]:chronyd版本3.2开始(+CMDMONOct1710:34:53ubuntuserverchronyd[2482]:初始频率-268.088ppmOct1710:34:53ubuntuserversystemd[1]:启动chrony,一个NTP客户端/服务器。Oct1710:35:03ubuntuserverchronyd[2482]:选定的源85.25.84.166Oct1710:35:03ubuntuserverchronyd[2482]:Source85.25.84.166replacedwith2403Oct1710:35:03ubuntuserverchronyd[2482]:Selectedsource91.189.89.199Oct1710:35:06ubuntuserverchronyd[2482]:01Selectedsource2,Chrony服务是起来工作!配置ChronyNTP客户端需要知道它将连接到哪个NTP服务器以获取当前时间。我们可以直接在NTP配置文件中的server或pool项中指定NTP服务器。通常,默认配置文件位于/etc/chrony/chrony.conf或/etc/chrony.conf,具体取决于Linux发行版的版本。为了更可靠的时间同步,建议至少指定三台服务器。以下几行是我的Ubuntu18.04LTS服务器的示例。[...]#关于使用来自NTP池项目的服务器一般参见(LP:#104525)。#由Ubuntu技术委员会于2011-02-08批准。#有关详细信息,请参见http://www.pool.ntp.org/join.html。poolntp.ubuntu.comiburstmaxsources4pool0.ubuntu.pool.ntp.orgiburstmaxsources1pool1.ubuntu.pool.ntp。orgiburstmaxsources1pool2.ubuntu.pool.ntp.orgiburstmaxsources2[…]从上面的输出可以看出,NTP服务器池项目已经设置为默认时间服务器。对于那些好奇的人,NTP服务器池项目是一个时间服务器集群,用于为全球数千万客户端提供NTP服务。它是Ubuntu和其他主要Linux发行版的默认时间服务器。这里,*iburst选项用于加速初始同步过程*maxsources表示NTP源的最大数量请确保您选择的NTP服务器是同步的,稳定的,并且靠近您的位置,以便使用这些NTP源以提高时间的准确性。从命令行管理Chronydchrony有一个名为chronyc的命令行工具用于控制和监视chrony守护程序(chronyd)。要检查chrony是否同步,我们可以使用如下所示的跟踪命令。$chronyctrackingReferenceID:6A0ABAC8(t1.time.sg3.yahoo.com)Stratum:3Reftime(UTC):WedOct1711:48:512018Systemtime:0.000984587secondsslowofNTPtimeLastoffset:-0.000912989sesecondsFrequency:23.704ppmslowResidualfreq:+0.006ppmSkew:1.734ppmRootdelay:0.089718960secondsRootdispersion:0.008760406secondsUpdateinterval:515.1secondsLeapstatus:Normal我们可以使用命令确认现在chrony使用的时间源:$chronycsources210Numberofsources=8MSName/IPaddressStratumPollReachLastRxLastsample=======================================================================================^-chilipepper.canonical.com210377296+102ms[+104ms]+/-279ms^-golem.canonical.com210377302+105ms[+107ms]+/-290ms^+pugot.canonical.com210377297+36ms[+38ms]+/-238ms^-alphyn.canonical.com210377279-43ms[-42ms]+/-238ms^-dadns.cdnetworks.co.kr2103771070+40ms[+42ms]+/-314ms^*t1.time.sg3.yahoo.com210377169-13ms[-11ms]+/-80ms^+sin1.m-d.net210275567-9633us[-7826us]+/-115ms^-ns2.pulsation.fr210377311-75ms[-73ms]+/-250mschronyc工具可以对每个源进行统计,例如使用sourcestats命令获取漂移率和偏移估计$chronycsourcestats210Numberofsources=8Name/IPAddressNPNRSpanFrequencySkewOffsetStdDev================================================================================chilipepper.canonical.com321689m+6.29314.345+30ms24msgolem.canonical.com321789m+0.31218.887+20ms33mspugot.canonical.com321889m+0.28111.237+3307us23msalphyn.canonical.com312088m-4.0878.910-58ms17msdadns.cdnetworks.co.kr1.6094gs-3.kr79gs-3307us23msalphyn.canonical.comcom321691m+0.1531.952+2835us4044ussin1.m-d.net291383m+0.0496.060-8466us9940usns2.pulsation.fr321788m+0.7849.834-62ms22ms如果你的系统需要告诉Chrony互联网,未连接到互联网。为此,请运行:$sudochronycoffline[sudo]passwordforsk:200OK要确认您的NTP源的状态,只需运行:$chronycactivity200OK0sourcesonline8sourcesoffline0sourcesdoingburst(returntoonline)0sourcesdoingburst(returntooffline)0sourceswithunknownaddress如你所见,此时我所有的源都处于离线状态。连接到Internet后,只需使用以下命令告诉Chrony您的系统已恢复在线:$sudochronyconline200OK要查看NTP源的状态,请运行:$chronycactivity200OK8sourcesonline0sourcesoffline0sourcesdoingburst(returntoonline)0sourcesdoingburst(returntooffline)0sourceswithunknownaddress所有选项和参数的详细解释请参考其帮助手册。$manchronyc$manchronyd这就是本文的全部内容。希望对你有帮助。在接下来的教程中,我们将看到如何使用Chrony启动本地NTP服务器并配置客户端使用该服务器来同步时间。保持关注!