在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