NTP 或網絡時間協議是用於同步網絡中的所有系統時鐘以使用相同時間的協議。 當我們使用術語 NTP 時,我們指的是協議本身以及在聯網計算機上運行的客戶端和服務器程序。 NTP 屬於傳統的 TCP/IP 協議組,很容易被歸類為最古老的協議組之一。
首次設置時鐘時,應在設置時鐘前5-10分鐘內更換6次。當網絡中的時鐘同步時,客戶端每 10 分鐘與服務器更新一次時鐘。這通常通過單個消息交換(事務)來完成。這些事務使用系統端口號 123。
本文提供有關如何執行以下操作的分步說明:
- 在您的 Ubuntu 機器上安裝和配置 NTP 服務器。
- 將 NTP 客戶端配置為與服務器時間同步。
我在 Ubuntu 20.04 LTS 系統上運行了本文中描述的命令和步驟。
在主機上安裝和配置 NTP 服務器
按照以下步驟在您的主機 Ubuntu 機器上安裝 NTP 服務器。
注意:使用 Ubuntu 命令行終端安裝和配置 NTP。可以使用應用程序啟動器搜索或 Ctrl + Alt + T 快捷方式打開終端應用程序。
步驟 1:更新存儲庫索引
要安裝 Internet 存儲庫中可用的最新軟件版本,本地存儲庫索引必須與它們匹配。要更新本地存儲庫索引,請運行以下命令 sudo。
$ sudo apt-get update
第 2 步:使用 apt-get 安裝 NTP 服務器
要從 APT 存儲庫安裝 NTP 服務器守護程序,請以 sudo 身份運行以下命令:
$ sudo apt-get install ntp
請注意,只有授權用戶才能在 Ubuntu 上添加、刪除和配置軟件。
系統可能會提示您輸入密碼 sudo,並且可能會提示您選擇 Y / n 以繼續安裝。 鍵入 Y 並按 Enter 以在您的系統上安裝 NTP 服務器。但是,根據您的互聯網速度,此過程可能需要一些時間。
第三步:確認安裝(可選)
您可以通過在終端中運行以下命令來驗證 NTP 安裝並驗證版本號:
$ sntp --version
第 4 步:切換到離您最近的 NTP 服務器池
安裝NTP服務器時,主要是配置獲取正確的時間。但是,您可以將服務器池切換到最接近您當前位置的服務器池。這包括對 /etc/ntp.conf 文件進行一些更改。
運行以下命令以在 nano 編輯器中以 sudo 的形式打開文件。
$ sudo nano /etc/ntp.conf
在此文件中,您可以看到池列表。此列表在上圖中突出顯示。此處的任務是將此池列表替換為最接近您所在位置的時間服務器池。 pol.ntp.org 項目從大型時間服務器集群提供可靠的 NTP 服務。要根據位置選擇池列表,請訪問下一頁。
https://support.ntp.org/bin/view/Servers/NTPPoolServers
我搜索了美國的游泳池列表。
此頁面告訴您將以下行添加到您的 ntp.conf 文件中:
server 0.us.pool.ntp.org server 1.us.pool.ntp.org server 2.us.pool.ntp.org server 3.us.pool.ntp.org
添加以上行後,我的文件如下所示:
按 Ctrl + X 退出文件並輸入 y 保存更改。
步驟 5:重新啟動 NTP 服務器
必須重新啟動 NTP 服務器才能使上述更改生效。為此,請運行以下命令 sudo。
$ sudo service ntp restart
第 6 步:確保 NTP 服務器正在運行
然後使用以下命令檢查 NTP 服務的狀態:
$ sudo service ntp status
活動狀態確認 NTP 服務器已啟動。
第 7 步:配置防火牆,以便客戶端可以訪問 NTP 服務器
最後,配置系統的 UFW 防火牆,以便傳入連接可以訪問 UDP 端口號 123 上的 NTP 服務器。
運行以下命令 sudo 為傳入流量打開端口 123。
$ sudo ufw allow from any to any port 123 proto udp
Ubuntu 主機現在配置為充當 NTP 服務器。
配置 NTP 客戶端與 NTP 服務器時間同步
接下來,讓我們將 Ubuntu 客戶端計算機配置為與 NTP 服務器進行時間同步。
第 1 步:安裝 ntpdate
您可以使用 ntpdate 命令手動檢查與 NTP 服務器的連接配置。在客戶端機器上打開一個終端應用程序並以 sudo 的形式輸入以下命令:
$ sudo apt-get install ntpdate
第二步:在hosts文件中指定NTP服務器的IP和主機名
用客戶端計算機的主機名解析NTP服務器,需要配置/etc/hosts文件。
以 sudo 身份打開主機文件,然後在 nano 編輯器中輸入以下命令。
$ sudo nano /etc/hosts
然後添加 NTP 服務器的 IP 並在此文件中指定主機名,如下所示:
按 Ctrl + X 退出文件並輸入 y 保存。
步驟 3:檢查客戶端機器上的時間是否與 NTP 服務器同步
您可以使用以下 ntpdate 命令手動檢查客戶端和服務器系統之間的時間同步。
$ sudo ntpdate NTP-server-host
理想情況下,輸出應顯示兩個系統之間的時間偏移。
第 4 步:在客戶端禁用 systemdtimesyncd 服務
我們希望客戶端與 NTP 服務器同步時間,所以讓我們禁用客戶端機器上的 timesyncd 服務。
Enter 執行以下命令。
第 5 步:在客戶端上安裝 NTP
要在客戶端計算機上安裝 NTP,請運行以下命令 sudo。
$ sudo apt-get install ntp
第六步:配置/etc/ntp.conf文件,添加NTP服務器作為新的時間服務器
現在讓客戶端機器使用自己的 NTP 主機服務器作為默認時間服務器。為此,您需要編輯客戶端計算機上的 /etc/ntp.conf 文件。
運行以下 sudo 命令以在 Nano 編輯器中打開文件。
$ sudo nano /etc/ntp.conf
然後將以下行添加到文件中:這裡,NTP-server-host 是為 NTP 服務器指定的主機名。
server NTP-server-host prefer iburst
指定時間服務器後,文件如下所示:
按 Ctrl + x 退出文件並輸入 y 保存更改。
步驟 7:重新啟動 NTP 服務器
必須重新啟動 NTP 服務才能使上述更改生效。為此,請運行以下命令 sudo。
$ sudo service ntp restart
第 8 步:查看時間同步隊列
客戶端和服務器計算機現在配置為時間同步。您可以通過運行以下命令查看時間同步隊列:
$ ntpq -ps
您應該能夠看到 NTP-server-host 作為隊列中的時間同步主機/源。
因此,這就是安裝和配置 NTP 以在聯網的 Ubuntu 機器上同步時間所需的全部知識。這個過程可能看起來有點乏味,但是如果你仔細地把上面的所有步驟一個一個地執行,你的機器就會立即同步。