在Ubuntu 20.04 / 18.04上使用NTPd快速設置NTP服務器

在本教程中,您將學習如何在Ubuntu 20.04 / 18.04上使用NTPd安裝和設置NTP服務器。 網絡時間協議 是一種網絡協議,用於同步網絡上的系統時鐘。 NTP使用時鐘分層方案來啟用對正確時間源的訪問。層數從0到15,其中層0處的設備是高度精確的計時硬件設備,後者是正確的。這些層通常具有NTP客戶端。 NTP客戶端也可以在定製環境中配置為服務器。

本指南將介紹如何在ubuntu 20.04 / 18.04上使用NTPd安裝和設置NTP服務器。 NTP守護程序(ntpd)是NTP客戶端程序。

NTP客戶端採用服務器-客戶端架構,其中NTP客戶端從NTP服務器同步時間。

在Ubuntu 20.04 / 18.04上使用NTPd設置NTP服務器

運行系統更新

在Ubuntu 20.04 / 18.04上使用NTPd安裝和設置NTP服務器之前,您需要更新程序包緩存以安裝最新版本的ntp。

sudo apt update -y

在Ubuntu 20.04 / 18.04上安裝NTPd

更新完成後,繼續在Ubuntu 20.04 / 18.04上安裝NTP守護程序。 ntpd守護程序由ntp軟件包提供。

要檢查Ubuntu 18.04 / 20.04上是否安裝了ntp軟件包,請運行以下命令:

 dpkg -l ntp

如果未安裝該軟件包,您將獲得類似於以下內容的輸出:

dpkg-query: no packages found matching ntp

ntp軟件包在默認的Ubuntu 18.04和Ubuntu 20.04存儲庫中可用。

通過運行以下命令在Ubuntu 20.04 / 18.04上安裝ntp:

sudo apt install ntp -y

通過檢查版本號來驗證是否已成功安裝ntp軟件包:

sntp --version

輸出:

sntp [email protected] (1)

在Ubuntu 20.04 / 18.04上運行NTPd

安裝後,將啟動NTP並將其啟用為在啟動時啟動:

systemctl status ntp
● ntp.service - Network Time Service
     Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: e>
     Active: active (running) since Sun 2020-10-11 20:09:21 EAT; 55min ago
       Docs: man:ntpd(8)
   Main PID: 567 (ntpd)
      Tasks: 2 (limit: 585)
     Memory: 1.5M
     CGroup: /system.slice/ntp.service
             └─567 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 127:133

Onk 11 20:10:28 computers-VirtualBox ntpd[567]: Soliciting pool server 162.159.>
Onk 11 20:10:29 computers-VirtualBox ntpd[567]: Soliciting pool server 160.119.>
Onk 11 20:10:29 computers-VirtualBox ntpd[567]: Soliciting pool server 162.159.>
Onk 11 20:10:29 computers-VirtualBox ntpd[567]: Soliciting pool server 162.159.>
...

在Ubuntu 20.04 / 18.04上使用NTPd設置NTP服務器

在Ubuntu 20.04 / 18.04上配置NTP服務器

NTP守護程序(ntpd)的主要配置文件是 /etc/ntp.conf。該文件配置為使NTP服務器能夠從較高層次的NTP服務器(例如, pool.ntp.org。的 池子 該文件中的指令可設置要使用的NTP時間服務器(池)。

sudo vim /etc/ntp.conf

# Specify one or more NTP servers.

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

默認情況下,Ubuntu 20.04 / 18.04上的NTP使用NTP服務器中的ubuntu池時間服務器 pool.ntp.org 從上面的輸出中可以看到。可以在以下位置找到時間服務器列表 NTP公共池時間服務器 在此可以根據時區選擇要使用的時間服務器。例如,使用ke.pool.ntp.org池:

首先注釋掉默認的ubuntu池時間服務器:

...
# more information.
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
#pool ntp.ubuntu.com
...

要從ke.pool.ntp.org池中添加服務器,請在配置文件中添加以下條目:

...
#Use kenyan pool
pool 0.ke.pool.ntp.org iburst
pool 1.ke.pool.ntp.org iburst
pool 2.ke.pool.ntp.org iburst
pool 3.ke.pool.ntp.org iburst
...

小費: 將池設置為pool.ntp.org可使系統確定服務器要使用的最近時間。

伊伯斯特 配置文件中的“選項”將輪詢的初始間隔更改為NTP服務器,以加快初始同步。

配置NTP服務器的訪問控制(可選)

NTP服務器可以選擇配置為僅允許特定的NTP客戶端連接使用 限制 指令 /etc/ntp.conf 使用以下語法的配置文件:

restrict address [mask mask] [other options]

此訪問控制可用於限制對特定LAN的NTP服務的訪問。例如,僅允許來自網絡192.168.56.0/24的連接,可以通過添加以下行來定義網絡地址:

restrict 192.168.56.0 mask 255.255.255.0 nomodify notrap

哪裡:

  • 修改 選項可防止對配置進行任何更改。
  • Notrap 該選項可防止ntpdc控制消息協議陷阱。

有關限制和其他命令選項的更多信息可以繼續閱讀 man ntp.conf

保存配置文件並重新啟動NTP服務器,以使更改生效。

 sudo systemctl restart ntp

檢查NTP服務狀態

 systemctl status ntp

輸出:

 ntp.service - Network Time Service
     Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-10-20 19:05:15 EAT; 1min 0s ago
       Docs: man:ntpd(8)
    Process: 8428 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
   Main PID: 8446 (ntpd)
      Tasks: 2 (limit: 1111)
     Memory: 1.0M
     CGroup: /system.slice/ntp.service
             └─8446 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 127:133
Onk 20 19:05:20 null1-VirtualBox ntpd[8446]: Soliciting pool server 162.159.200.123
Onk 20 19:05:21 null1-VirtualBox ntpd[8446]: Soliciting pool server 162.159.200.1
Onk 20 19:05:22 null1-VirtualBox ntpd[8446]: Soliciting pool server 160.119.216.206
Onk 20 19:05:23 null1-VirtualBox ntpd[8446]: Soliciting pool server 160.119.216.197
Onk 20 19:05:24 null1-VirtualBox ntpd[8446]: Soliciting pool server 160.119.216.202
Onk 20 19:05:29 null1-VirtualBox ntpd[8446]: Soliciting pool server 160.119.216.197
Onk 20 19:05:29 null1-VirtualBox ntpd[8446]: Soliciting pool server 2606:4700:f1::1
Onk 20 19:05:37 null1-VirtualBox ntpd[8446]: Soliciting pool server 91.189.94.4

確認NTP服務設置為在啟動時啟動:

sudo systemctl is-enabled ntp
enabled

如果禁用,請通過運行以下命令啟用它;

sudo systemctl enable ntpd

驗證系統時間

幾秒鐘後檢查NTP時間。

ntptime 

輸出:

tp_gettime() returns code 0 (OK)
  time e3398bfb.b241700c  Tue, Oct 20 2020 19:16:59.696, (.696311693),
  maximum error 78688 us, estimated error 5216 us, TAI offset 37
ntp_adjtime() returns code 0 (OK)
  modes 0x0 (),
  offset 251.894 us, frequency -11.169 ppm, interval 1 s,
  maximum error 78688 us, estimated error 5216 us,
  status 0x2001 (PLL,NANO),
  time constant 6, precision 0.001 us, tolerance 500 ppm,

配置防火牆

如果啟用了Ubuntu UFW,則允許UDP端口123。 NTP客戶端在該特定端口上連接到NTP服務器。

sudo ufw allow from any to any port 123 proto udp

您還可以允許來自特定網絡的NTP查詢。

sudo ufw allow from 192.168.56.0/24 to any port 123 proto udp

驗證NTP時間服務

通過運行以下命令檢查NTP服務器與NTP對等方的連接來驗證NTP服務器;

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ke.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ke.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ke.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ke.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
-time.cloudflare 10.45.8.5        3 u  122  256  377   54.091    8.013  63.504
-time.cloudflare 10.45.8.5        3 u  153  256  161   54.158    8.587  40.443
+ntp0.icolo.io   160.119.216.202  3 u    8  128  377   16.850    4.389   0.586
*ntp1.icolo.io   146.64.8.7       2 u   82  128  375   16.379    4.501   1.584
+ntp2.icolo.io   146.64.8.7       2 u   65  128  377   16.524    4.709   0.742

與NTP服務器同步客戶端時間

現在已經配置了NTP服務器,現在是時候配置客戶端以使其時鐘與NTP服務器同步。

使用systemd timesyncd NTP同步

在Ubuntu系統中,NTP客戶端systemd-timesyncd.service, 在默認情況下運行,可用於將NTPd設置為NTP客戶端。

編輯檔案 /etc/systemd/timesyncd.conf 並通過在文件末尾添加以下條目來添加NTP服務器的地址:

vim /etc/systemd/timesyncd.conf
NTP=192.168.56.103

哪裡 192.168.56.103 是已配置的NTP服務器的IP地址。

重新啟動systemd-timesyncd NTP客戶端服務:

sudo systemctl status systemd-timesyncd

確認狀態現在已與配置的NTP服務器同步。

 systemctl status systemd-timesyncd

輸出:

  Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-10-20 20:02:49 EAT; 3s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 4466 (systemd-timesyn)
   Status: "Synchronized to time server 192.168.56.103:123 (ntp.kifarunix.com)."
    Tasks: 2 (limit: 667)
   CGroup: /system.slice/systemd-timesyncd.service
           └─4466 /lib/systemd/systemd-timesyncd

...

使用 ntpdate 同步客戶端系統的時間

(可選) ntpdate 該命令可用於手動將客戶端系統時間與NTP服務器同步。本指南使用Ubuntu 18.04作為客戶端。

步驟1:安裝ntpdate

安裝 ntpdate 軟件包(如果尚未安裝)。

sudo apt install ntpdate -y

注意: 確保客戶端和NTP服務器可以通信。您可以使用nc命令來驗證NTP服務器端口連接。

步驟2:使用ntpdate命令查詢時間服務

ntpdate 通過運行以下命令,該命令可用於從NTP服務器查詢時間服務:

sudo ntpdate 192.168.56.103

輸出顯示兩個系統之間的時間偏移。

20 Oct 20:31:54 ntpdate[5053]: adjust time server 192.168.56.103 offset 0.001313 sec

使用NTP自動同步時間

可以使用NTPd守護程序自動將NTP客戶端配置為查詢NTP服務器。

步驟1:安裝NTP

sudo apt install ntp -y

配置NTPd客戶端

在Ubuntu 18.04上,NTP服務在安裝後默認設置為運行。首先檢查客戶端是否與NTP同步:

timedatectl

輸出將顯示系統時鐘是否同步。

 Local time: Qib 2020-10-20 19:41:59 EAT
                  Universal time: Qib 2020-10-20 16:41:59 UTC
                        RTC time: Qib 2020-10-20 16:35:32
                       Time zone: Africa/Nairobi (EAT, +0300)
       System clock synchronized: yes
systemd-timesyncd.service active: no
                 RTC in local TZ: no

如果系統時間已同步,請通過運行以下命令禁用時間同步:

sudo timedatectl set-ntp off

小費: 要重新打開時間同步: sudo timedatectl set-ntp on

要將NTP客戶端配置為從NTP服務器同步時間,請編輯ntp配置文件:

 sudo vim /etc/ntp.conf 

用您的服務器替換公共NTP池服務器。

#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst

pool 192.168.56.103 iburst

理想情況下,可以使用以下命令添加服務器,而不用注釋掉默認的NTP服務器,即使其成為首選參考時鐘。 偏愛 選項:

pool 192.168.56.103 prefer iburst

保存配置文件並重新啟動ntp。

 sudo systemctl restart ntp

現在,客戶端已成功配置為與NTP服務器同步系統時間。可以通過運行以下命令來驗證:

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.56.103  .POOL.          16 p    -   64    0    0.000    0.000   0.000
*192.168.56.103  160.119.216.202  3 u   24   64    1    0.768   16.118   1.355

從輸出中,我們可以看到NTP服務器(192.168.56.103)作為隊列中的時間同步主機/源。

確認NTP服務設置為在啟動時啟動:

systemctl is-enabled ntp

要啟用NTP服務在啟動時啟動,以防萬一未啟用,那麼您可以運行以下命令:

systemctl enable ntp

太好了,您的NTP客戶端現在應該可以從NTP服務器查詢時間服務了。這使我們到了如何在Ubuntu 20.04 / 18.04上使用NTPd安裝和設置NTP服務器的指南的末尾。

Sidebar