在這個(gè)教程中,我們會(huì)討論如何安裝和配置 Chrony,一個(gè)類 Unix 系統(tǒng)上 NTP 客戶端和服務(wù)器的替代品。Chrony 可以更快的同步系統(tǒng)時(shí)鐘,具有更好的時(shí)鐘準(zhǔn)確度,并且它對(duì)于那些不是一直在線的系統(tǒng)很有幫助。Chrony 是自由開源的,并且支持 GNU/Linux 和 BSD 衍生版(比如 FreeBSD、NetBSD)、macOS 和 Solaris 等。
安裝 Chrony
Chrony 可以從大多數(shù) Linux 發(fā)行版的默認(rèn)軟件庫中獲得。如果你使用的是 Arch Linux,運(yùn)行下面的命令來安裝它:
$ sudo pacman -S chrony
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install chrony
在 Fedora 上:
$ sudo dnf install chrony
當(dāng)安裝完成后,如果之前沒有啟動(dòng)過的話需啟動(dòng) chronyd.service 守護(hù)進(jìn)程:
$ sudo systemctl start chronyd.service
使用下面的命令讓它每次重啟系統(tǒng)后自動(dòng)運(yùn)行:
$ sudo systemctl enable chronyd.service
為了確認(rèn) chronyd.service 已經(jīng)啟動(dòng),運(yùn)行:
$ 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 Wed2018-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 服務(wù)已經(jīng)啟動(dòng)并且正在工作!
配置 Chrony
NTP 客戶端需要知道它要連接到哪個(gè) NTP 服務(wù)器來獲取當(dāng)前時(shí)間。我們可以直接在該 NTP 配置文件中的 server 或者 pool 項(xiàng)指定 NTP 服務(wù)器。通常,默認(rèn)的配置文件位于 /etc/chrony/chrony.conf 或者 /etc/chrony.conf,取決于 Linux 發(fā)行版版本。為了更可靠的同步時(shí)間,建議指定至少三個(gè)服務(wù)器。
下面幾行是我的 Ubuntu 18.04 LTS 服務(wù)器上的一個(gè)示例。
[...]
# About using servers from the NTP PoolProject in general see (LP: #104525).
# Approved by Ubuntu Technical Board on2011-02-08.
# See http://www.pool.ntp.org/join.html formore information.
pool ntp.ubuntu.com iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburstmaxsources 1
pool 1.ubuntu.pool.ntp.org iburstmaxsources 1
pool 2.ubuntu.pool.ntp.org iburstmaxsources 2
[...]
從上面的輸出中你可以看到, NTP 服務(wù)器池項(xiàng)目已經(jīng)被設(shè)置成為了默認(rèn)的時(shí)間服務(wù)器。對(duì)于那些好奇的人,NTP 服務(wù)器池項(xiàng)目是一個(gè)時(shí)間服務(wù)器集群,用來為全世界千萬個(gè)客戶端提供 NTP 服務(wù)。它是 Ubuntu 以及其他主流 Linux 發(fā)行版的默認(rèn)時(shí)間服務(wù)器。
在這里, * iburst 選項(xiàng)用來加速初始的同步過程 * maxsources 代表 NTP 源的最大數(shù)量
請(qǐng)確保你選擇的 NTP 服務(wù)器是同步的、穩(wěn)定的、離你的位置較近的,以便使用這些 NTP 源來提升時(shí)間準(zhǔn)確度。
在命令行中管理 Chronyd
chrony 有一個(gè)命令行工具叫做 chronyc 用來控制和監(jiān)控chrony 守護(hù)進(jìn)程(chronyd)。
為了檢查是否 chrony 已經(jīng)同步,我們可以使用下面展示的 tracking 命令。
$ chronyc tracking
Reference ID : 6A0ABAC8 (t1.time.sg3.yahoo.com)
Stratum : 3
Ref time (UTC) : Wed Oct 17 11:48:51 2018
System time : 0.000984587 seconds slow ofNTP 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
我們可以使用命令確認(rèn)現(xiàn)在 chrony 使用的時(shí)間源:
$ chronyc sources
210 Number of sources = 8
MS Name/IP address Stratum Poll ReachLastRx 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 工具可以對(duì)每個(gè)源進(jìn)行統(tǒng)計(jì),比如使用sourcestats 命令獲得漂移速率和進(jìn)行偏移估計(jì)。
$ chronyc sourcestats
210 Number of sources = 8
Name/IP Address NP NR Span Frequency FreqSkew Offset Std Dev
==============================================================================
chilipepper.canonical.com 32 16 89m +6.29314.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.0949.895 -83ms 14ms
t1.time.sg3.yahoo.com 32 16 91m +0.1531.952 +2835us 4044us
sin1.m-d.net 29 13 83m +0.049 6.060 -8466us9940us
ns2.pulsation.fr 32 17 88m +0.784 9.834-62ms 22ms
如果你的系統(tǒng)沒有連接到互聯(lián)網(wǎng),你需要告知 Chrony 系統(tǒng)沒有連接到互聯(lián)網(wǎng)。為了這樣做,運(yùn)行:
$ sudo chronyc offline
[sudo] password for sk:
200 OK
為了確認(rèn)你的 NTP 源的狀態(tài),只需要運(yùn)行:
$ 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
可以看到,我的所有源此時(shí)都是離線狀態(tài)。
一旦你連接到互聯(lián)網(wǎng),只需要使用命令告知 Chrony 你的系統(tǒng)已經(jīng)回到在線狀態(tài):
$ sudo chronyc online
200 OK
為了查看 NTP 源的狀態(tài),運(yùn)行:
$ 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
所有選項(xiàng)和參數(shù)的詳細(xì)解釋,請(qǐng)參考其幫助手冊(cè)。
$ man chronyc
$ man chronyd
這就是文章的所有內(nèi)容。希望對(duì)你有所幫助。在隨后的教程中,我們會(huì)看到如何使用 Chrony 啟動(dòng)一個(gè)本地的 NTP 服務(wù)器并且配置客戶端來使用這個(gè)服務(wù)器同步時(shí)間。
掃一掃咨詢微信客服