如何在 Linux 上安裝、配置 NTP 伺服器和客戶端?
你也許聽說過這個詞很多次或者你可能已經在使用它了。在這篇文章中我將會清晰的告訴你 NTP 伺服器和客戶端的安裝。
之後我們將會了解 Chrony NTP 客戶端的安裝。
什麼是 NTP 服務?
NTP 意即 網路時間協議 。它是通過網路在計算機系統之間進行時鐘同步的網路協議。換言之,它可以讓那些通過 NTP 或者 Chrony 客戶端連接到 NTP 伺服器的系統保持時間上的一致(它能保持一個精確的時間)。
NTP 在公共互聯網上通常能夠保持時間延遲在幾十毫秒以內的精度,並在理想條件下,它能在區域網下達到低於一毫秒的延遲精度。
它使用用戶數據報協議(UDP)在埠 123 上發送和接受時間戳。它是個 C/S 架構的應用程序。
NTP 客戶端
NTP 客戶端將其時鐘與網路時間伺服器同步。
Chrony 客戶端
Chrony 是 NTP 客戶端的替代品。它能以更精確的時間更快的同步系統時鐘,並且它對於那些不總是在線的系統很有用。
為什麼我們需要 NTP 服務?
為了使你組織中的所有伺服器與基於時間的作業保持精確的時間同步。
為了說明這點,我將告訴你一個場景。比如說,我們有兩個伺服器(伺服器 1 和伺服器 2)。伺服器 1 通常在 10:55 完成離線作業,然後伺服器 2 在 11:00 需要基於伺服器 1 完成的作業報告去運行其他作業。
如果兩個伺服器正在使用不同的時間(如果伺服器 2 時間比伺服器 1 提前,伺服器 1 的時間就落後於伺服器 2),然後我們就不能去執行這個作業。為了達到時間一致,我們應該安裝 NTP。
希望上述能清除你對於 NTP 的疑惑。
在這篇文章中,我們將使用下列設置去測試。
- NTP 伺服器: 主機名:CentOS7.2daygeek.com,IP:192.168.1.8,OS:CentOS 7
- NTP 客戶端: 主機名:Ubuntu18.2daygeek.com,IP:192.168.1.5,OS:Ubuntu 18.04
NTP 伺服器端:如何在 Linux 上安裝 NTP?
因為它是 C/S 架構,所以 NTP 伺服器端和客戶端的安裝包沒有什麼不同。在發行版的官方倉庫中都有 NTP 安裝包,因此可以使用發行版的包管理器安裝它。
對於 Fedora 系統,使用 DNF 命令 去安裝 ntp。
$ sudo dnf install ntp
對於 Debian/Ubuntu 系統,使用 APT-GET 命令 或者 APT 命令 去安裝 ntp。
$ sudo apt install ntp
對基於 Arch Linux 的系統,使用 Pacman 命令 去安裝 ntp。
$ sudo pacman -S ntp
對 RHEL/CentOS 系統,使用 YUM 命令 去安裝 ntp。
$ sudo yum install ntp
對於 openSUSE Leap 系統,使用 Zypper 命令 去安裝 ntp。
$ sudo zypper install ntp
如何在 Linux 上配置 NTP 伺服器?
安裝 NTP 軟體包後,請確保在伺服器端的 /etc/ntp.conf
文件中取消以下配置的注釋。
默認情況下,NTP 伺服器配置依賴於 X.distribution_name.pool.ntp.org
。 如果有必要,可以使用默認配置,也可以訪問https://www.ntppool.org/zone/@站點,根據你所在的位置(特定國家/地區)進行更改。
比如說如果你在印度,然後你的 NTP 伺服器將是 0.in.pool.ntp.org
,並且這個地址適用於大多數國家。
# vi /etc/ntp.conf
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
我們僅允許 192.168.1.0/24
子網的客戶端訪問這個 NTP 伺服器。
由於默認情況下基於 RHEL7 的發行版的防火牆是打開的,因此要允許 ntp 服務通過。
# firewall-cmd --add-service=ntp --permanent
# firewall-cmd --reload
更新配置後要重啟服務:
對於 sysvinit 系統。基於 Debian 的系統需要去運行 ntp
而不是 ntpd
。
# service ntpd restart
# chkconfig ntpd on
對於 systemctl 系統。基於 Debian 的需要去運行 ntp
和 ntpd
。
# systemctl restart ntpd
# systemctl enable ntpd
NTP 客戶端:如何在 Linux 上安裝 NTP 客戶端?
正如我在這篇文章中前面所說的。NTP 伺服器端和客戶端的安裝包沒有什麼不同。因此在客戶端上也安裝同樣的軟體包。
對於 Fedora 系統,使用 DNF 命令 去安裝 ntp。
$ sudo dnf install ntp
對於 Debian/Ubuntu 系統,使用 APT-GET 命令 或者 APT 命令 去安裝 ntp。
$ sudo apt install ntp
對基於 Arch Linux 的系統,使用 Pacman 命令 去安裝 ntp。
$ sudo pacman -S ntp
對 RHEL/CentOS 系統,使用 YUM 命令 去安裝 ntp。
$ sudo yum install ntp
對於 openSUSE Leap 系統,使用 Zypper 命令 去安裝 ntp。
$ sudo zypper install ntp
我已經在 CentOS7.2daygeek.com` 這台主機上安裝和配置了 NTP 伺服器,因此將其附加到所有的客戶端機器上。
# vi /etc/ntp.conf
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server CentOS7.2daygeek.com prefer iburst
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
更新配置後重啟服務:
對於 sysvinit 系統。基於 Debian 的系統需要去運行 ntp
而不是 ntpd
。
# service ntpd restart
# chkconfig ntpd on
對於 systemctl 系統。基於 Debian 的需要去運行 ntp
和 ntpd
。
# systemctl restart ntpd
# systemctl enable ntpd
重新啟動 NTP 服務後等待幾分鐘以便從 NTP 伺服器獲取同步的時間。
在 Linux 上運行下列命令去驗證 NTP 服務的同步狀態。
# ntpq –p
或
# ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
*CentOS7.2daygee 133.243.238.163 2 u 14 64 37 0.686 0.151 16.432
運行下列命令去得到 ntpd 的當前狀態。
# ntpstat
synchronised to NTP server (192.168.1.8) at stratum 3
time correct to within 508 ms
polling server every 64 s
最後運行 date
命令。
# date
Tue Mar 26 23:17:05 CDT 2019
如果你觀察到 NTP 中輸出的時間偏移很大。運行下列命令從 NTP 伺服器手動同步時鐘。當你執行下列命令的時候,確保你的 NTP 客戶端應該為未活動狀態。(LCTT 譯註:當時間偏差很大時,客戶端的自動校正需要花費很長時間才能逐步追上,因此應該手動運行以更新)
# ntpdate –uv CentOS7.2daygeek.com
via: https://www.2daygeek.com/install-configure-ntp-server-ntp-client-in-linux/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:arrowfeng 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive