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 服务器
请运行以下命令作为 sudo 为了从 APT 存储库安装 NTP 服务器守护程序:
$ sudo apt-get install ntp
请注意,只有授权用户才能在 Ubuntu 上添加、删除和配置软件。
系统可能会要求您输入密码 sudo 并为您提供 Y/n 选项以继续安装。 Enter Y 然后按回车键; 然后将在您的系统上安装 NTP 服务器。 但是,此过程可能需要一些时间,具体取决于您的 Internet 速度。
步骤 3:验证安装(可选)
您可以通过在终端中运行以下命令来验证您的 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 以保存更改。
第五步:重启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 服务器时间同步。
第一步:安装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 保存。
第三步:检查客户端机器时间是否与NTP服务器同步
以下 ntpdate 命令将让您手动检查客户端和服务器系统之间的时间是否同步:
$ sudo ntpdate NTP-server-host
理想情况下,输出应显示两个系统之间的时间偏移。
第四步:在客户端禁用systemd timesyncd服务
因为我们希望我们的客户端与 NTP 服务器同步时间,所以让我们禁用客户端机器上的 timesyncd 服务。
Enter 执行以下命令:
第 5 步:在您的客户端上安装 NTP
运行以下命令 sudo 为了在您的客户端机器上安装 NTP:
$ sudo apt-get install ntp
步骤 6:配置 /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 以保存更改。
第七步:重启NTP服务器
为了使上述更改生效,您需要重新启动 NTP 服务。 运行以下命令 sudo 为此:
$ sudo service ntp restart
步骤 8:查看时间同步队列
现在您的客户端和服务器机器被配置为时间同步。 您可以通过运行以下命令查看时间同步队列:
$ ntpq -ps
您应该能够看到 NTP-server-host 作为队列中的时间同步主机/源。
因此,这就是安装和配置 NTP 以在联网的 Ubuntu 机器上同步时间所需的全部知识。 这个过程可能看起来有点麻烦,但是如果您仔细地按照上述所有步骤一个一个地进行,您的机器将立即同步。