Chrony:一個類 Unix 系統上 NTP 客戶端和伺服器替代品
在這個教程中,我們會討論如何安裝和配置 Chrony,一個類 Unix 系統上 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 2018-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 服務已經啟動並且正在工作!
配置 Chrony
NTP 客戶端需要知道它要連接到哪個 NTP 伺服器來獲取當前時間。我們可以直接在該 NTP 配置文件中的 server
或者 pool
項指定 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 已經同步,我們可以使用下面展示的 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 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
我們可以使用命令確認現在 chrony 使用的時間源:
$ 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
如果你的系統沒有連接到互聯網,你需要告知 Chrony 系統沒有連接到 互聯網。為了這樣做,運行:
$ 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
可以看到,我的所有源此時都是離線狀態。
一旦你連接到互聯網,只需要使用命令告知 Chrony 你的系統已經回到在線狀態:
$ 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
這就是文章的所有內容。希望對你有所幫助。在隨後的教程中,我們會看到如何使用 Chrony 啟動一個本地的 NTP 伺服器並且配置客戶端來使用這個伺服器同步時間。
保持關注!
via: https://www.ostechnix.com/chrony-an-alternative-ntp-client-and-server-for-unix-like-systems/
作者:SK 選題:lujun9972 譯者:zianglei 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive