你也許聽說過這個詞很多次或者你可能已經在使用它了。在這篇文章中我將會清晰的告訴你 NTP 服務器和客戶端的安裝。
之后我們將會了解 Chrony NTP 客戶端的安裝 。
什么是 NTP 服務?
NTP 意即 網絡時間協議(Network Time Protocol)。它是通過網絡在計算機系統之間進行時鐘同步的網絡協議。換言之,它可以讓那些通過 NTP 或者 Chrony 客戶端連接到 NTP 服務器的系統保持時間上的一致(它能保持一個精確的時間)。
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
掃一掃咨詢微信客服