CentOS8 網路校時 - chrony

在 CentOS 8 預設已經沒有 ntpdate 來做系統校時,建議改用 chrony 來完成系統校時的工作。chrony 是一個 NTP Client/Server 並存的套件 ,就看你怎麼設定 /etc/chrony.conf,來看看怎麼做

chrony is a versatile implementation of the Network Time Protocol (NTP).

— 當個 NTP Client — 
-1. 安裝 chrony
$ sudo dnf install chrony

-2. 修改 /etc/chrony.conf
$ sudo vi /etc/chrony.conf
然後增加下列幾行
# Stdtime NTP servers
server tock.stdtime.gov.tw
server watch.stdtime.gov.tw
server time.stdtime.gov.tw
server clock.stdtime.gov.tw
server tick.stdtime.gov.tw

-3. 啟動 chronyd – 請注意這邊是 chronyd 唷! 因為是 daemon
$ sudo systemctl enable chronyd
$ sudo systemctl start chronyd

— 當個 NTP Server —
註:與上面重複的指令就不再贅述,僅寫出需要增加的部分
-1. 安裝 chrony
$ sudo dnf install chrony

-2. 修改 /etc/chrony.conf ,增加允許那些IP可以來校時
$ sudo vi /etc/chrony.conf
增加允許查詢的IP範圍
allow 192.168.1.0/24
# Stdtime NTP servers
server tock.stdtime.gov.tw
server watch.stdtime.gov.tw

-3. 啟動 chronyd
$ sudo systemctl enable chronyd
$ sudo systemctl start chronyd

-4. 修改防火牆 firewalld 設定
$ sudo firewall-cmd –permanent –add-service=ntp
$ sudo firewall-cmd –reload

–通用查詢指令———————————–

立即校時 – 請注意這邊是 chronyc 唷! 因為是 Command line
$ sudo chronyc -a makestep

查看詳細的校時資訊
$ chronyc tracking
Reference ID : 76A3333D (118-163-81-61.HINET-IP.hinet.net)
Stratum : 3
Ref time (UTC) : Mon Mar 09 06:44:53 2020
System time : 0.000016061 seconds fast of NTP time
Last offset : +0.000016903 seconds
RMS offset : 0.000029914 seconds
Frequency : 21.091 ppm slow
Residual freq : +0.007 ppm
Skew : 0.983 ppm
Root delay : 0.004178757 seconds
Root dispersion : 0.024693567 seconds
Update interval : 64.8 seconds
Leap status : Normal

查看上層 NTP Servers  — 你寫在 /etc/chrony.conf 的增加 server 部分應該要條列於此
$ chronyc sources -v
210 Number of sources = 1

.– Source mode ‘^’ = server, ‘=’ = peer, ‘#’ = local clock.
/ .- Source state ‘*’ = current synced, ‘+’ = combined , ‘-‘ = not combined,
| / ‘?’ = unreachable, ‘x’ = time may be in error, ‘~’ = time too variable.
|| .- 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
===============================================================================
^* 118-163-81-61.HINET-IP.h> 2 6 377 33 +22us[ +62us] +/- 33ms

$ chronyc sources
210 Number of sources = 12
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 180-218-4-4.dynamic.twmb> 2 6 1 3 -1225us[-1225us] +/- 42ms
^? time.cloudflare.com 3 6 1 1 +397us[ +397us] +/- 56ms
^? time.cloudflare.com 3 6 1 2 +402us[ +402us] +/- 56ms
^? 2a01:4f9:c010:304d::1 0 6 0 – +0ns[ +0ns] +/- 0ns
^? t2.time.tw1.yahoo.com 0 6 0 – +0ns[ +0ns] +/- 0ns
^? time.cloudflare.com 0 6 0 – +0ns[ +0ns] +/- 0ns
^? time.cloudflare.com 0 6 0 – +0ns[ +0ns] +/- 0ns
^? 211-22-103-157.HINET-IP.> 2 6 1 1 +432us[ +432us] +/- 46ms
^? 118-163-81-63.HINET-IP.h> 1 6 1 2 -2294us[-2294us] +/- 1480us
^? 118-163-81-61.HINET-IP.h> 2 6 1 0 +1675us[+1675us] +/- 28ms
^? 211-22-103-158.HINET-IP.> 2 6 1 2 -1832us[-1832us] +/- 47ms
^? 118-163-81-62.HINET-IP.h> 2 6 1 1 -1647us[-1647us] +/- 26ms

上面 7 個是預設 pool 所連結,如果要改自己想要的 Server 要註解掉
pool 2.centos.pool.ntp.org iburst

QQ: 那還需不需要設定 crontab 呢?
Ans: 當然是不用了,因為你已經將他跑成 service 他會自己更新的。