CentOS 8 啟用 NTP 服務

huyuchengus發表於2020-10-06

NTP 服務是什麼和為什麼我們需要在我們的伺服器啟用 NTP 服務?

可能很多人都不是非常瞭解,簡單來說就是我們希望我們伺服器的時間是準確的沒有偏差的。這個的意義在資料插入和你程式取得計算機時間的時候是準確的。

比如說在 java 中如果 new date() 將會獲得計算機當前的時間,如果當前的世界不準確的話,那麼你插入資料庫的時間就是混亂的。

同時,我們也希望我們的伺服器的時區是準確的,比如說我們常使用的東八區和美國太平洋時間等。

如果計算機有什麼原因導致時鐘慢了,我們可以通過 ntp 進行同步。

所以針對伺服器來說,在設定好時區後,NTP 服務是必須要啟用的。

NTP 介紹

網路時間協議,英文名稱:Network Time Protocol(NTP)是用來使計算機[時間同步化的一種協議,它可以使計算機對其伺服器或時鐘源如石英鐘,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標準間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡意攻擊。

NTP 的目的是在無序的 Internet 環境中提供精確和健壯的時間服務。

NTP 提供準確時間,首先要有準確的時間來源,這一時間應該是國際標準時間UTC。

NTP 獲得 UTC的 時間來源可以是原子鐘、天文臺、衛星,也可以從Internet上獲取。這樣就有了準確而可靠的時間源。時間按NTP伺服器的等級傳播。

按照離外部 UTC 源的遠近將所有伺服器歸入不同的 Stratum(層)中。Stratum-1在頂層,有外部 UTC 接入,而 Stratum-2 則從 Stratum-1 獲取時間,Stratum-3從Stratum-2獲取時間,以此類推,但Stratum層的總數限制在15以內。

所有這些伺服器在邏輯上形成階梯式的架構相互連線,而Stratum-1的時間伺服器是整個系統的基礎。計算機主機一般同多個時間伺服器連線, 利用統計學的演算法過濾來自不同伺服器的時間,以選擇最佳的路徑和來源來校正主機時間。即使主機在長時間無法與某一時間伺服器相聯絡的情況下,NTP服務依然有效運轉。

為防止對時間伺服器的惡意破壞,NTP使用了識別(Authentication)機制,檢查來對時的資訊是否是真正來自所宣稱的伺服器並檢查資料的返回路徑,以提供對抗干擾的保護機制。NTP時間同步報文中包含的時間是格林威治時間,是從1900年開始計算的秒數。

安裝 NTP 服務

在 CentOS 8 中,我們使用 chronyd 來提供 NTP 的服務。

在 CentOS 上執行下面的命令來進行安裝,如果你已經安裝過的話,系統會進行提示。

dnf install chrony

開啟啟用 NTP 服務

在 CentOS 8 中,執行下面的命令,來讓服務程式隨開機自動啟動。

systemctl enable chronyd

上面的命令會隨計算機開機的時候自動執行。

centos-chronyd-01

檢查伺服器 NTP 伺服器地址

請執行下面的命令,確定 NTP 伺服器的地址已經配置成功了。

chronyc sources 

上面命令會顯示預設配置的 NTP 伺服器地址。

 

centos-chronyd-02

 

強制同步

在安裝作業系統後,可能會遇到時間不準確的情況。

可以使用下面的命令對伺服器的世界進行強制同步一次。

chronyc -a makestep

伺服器的輸入內容是:

[root@vps-c853c8ac home]# chronyc -a makestep
200 OK
[root@vps-c853c8ac home]# 

centos-chronyd-03

然後可以在伺服器上執行

date +%z

以確定當前的時區和你可用使用 date 確定當前伺服器的時間。

date

centos-chronyd-04

通過這個設定,我們就可以在伺服器上使用 NTP 進行同步了,你就不需要對伺服器的時間進行調整了。

相關文章