Ubuntu 22.04 NTP 服务器
NTP 代表网络时间协议,用于多台计算机之间的时钟同步。 NTP 服务器负责保持一组计算机彼此同步。在本地网络上,服务器应该能够将所有客户端系统的时间间隔保持在一毫秒之内。
例如,如果系统需要在精确的时间一致启动或停止任务,则这种配置是必要的。在本文中,我们将向您展示如何在 Ubuntu 22.04 Jammy Jellyfish 上配置 NTP 服务器,以及如何配置客户端系统以将其系统时间与所述服务器同步。
在本教程中您将学习:
如何安装和配置NTP服务器
如何从客户端计算机连接到 NTP 服务器
安装NTP服务器
首先,我们需要安装 NTP 服务器。您可以通过打开命令行终端并输入以下命令来执行此操作:
$ sudo apt update
$ sudo apt install ntp
配置NTP服务器
NTP 服务器已预先配置了一些服务器池,您可以在 /etc/ntp.conf
文件中看到它们。
$ cat /etc/ntp.conf
一般来说,最好将这些线路替换为您所在国家/地区或至少您所在大陆的服务器池。您和时间服务器之间的延迟越短越好。您可以使用 NTP 池项目网站查找距离您所在位置最近的 NTP 服务器池。
一旦找到最相关的区域,您所需要做的就是使用 nano 或您喜欢的文本编辑器在配置文件中添加以下行:
$ sudo nano /etc/ntp.conf
完成这些更改后,保存并退出配置文件。重新启动 NTP 服务以使更改生效:
$ sudo systemctl restart ntp
使用以下命令随时检查 NTP 服务的状态:
$ sudo systemctl status ntp
尝试连接到 NTP 服务器的客户端将在 UDP 端口 123
上进行操作。如果您的系统上启用了 UFW 防火墙,请务必将其配置为允许以下传入连接请求:
$ sudo ufw allow from any to any port 123 proto udp
Rules updated
Rules updated (v6)
NTP客户端配置
现在我们已经启动并运行了 NTP 服务器,我们将展示客户端系统如何连接到它以进行时间同步。只需在您的客户端系统上执行以下步骤:
首先,我们需要安装 ntpdate 包。我们可以使用它来验证客户端和我们创建的 NTP 时间服务器之间的连接。
$ sudo apt update $ sudo apt install ntpdate
接下来,让我们尝试手动将系统时间与 NTP 服务器同步。键入以下命令,并在适当的情况下替换 NTP 服务器的 IP 地址或主机名:
$ sudo ntpdate 192.168.100.4
这似乎正如我们所期望的那样工作。接下来,请务必禁用 Ubuntu 的默认
timesyncd
服务,因为这将与我们尝试与 NTP 服务器同步发生冲突。$ sudo timedatectl set-ntp off
现在,我们需要在客户端系统上安装 NTP 守护进程,以便我们可以将其配置为从我们之前设置的 NTP 服务器获取时间。
$ sudo apt install ntp
我们只需在 ntp.conf 文件中添加一行,并且可以使用单个命令轻松完成此操作。只需确保将下面的 IP 地址替换为您的 NTP 服务器的主机名或 IP 地址。
$ sudo bash -c "echo server 192.168.100.4 prefer iburst >> /etc/ntp.conf"
然后,重新启动 NTP 守护进程:
$ sudo systemctl restart ntp
最后,使用 ntpq 命令列出 NTP 时间同步队列:
$ ntpq -p
上面截图中的星号
*
表示我们的NTP服务器192.168.100.4
被选为当前时间同步源。除非 NTP 服务器离线,否则情况应该保持不变,因为这就是我们在 ntp.conf 配置文件中配置它的方式。
请阅读以下附录,了解有关如何解释 ntpq 命令输出的更多信息。
附录
NTPQ命令列输出解释:
remote – 您希望与其同步时钟的远程服务器
refid – 远程服务器的上游层。对于第 1 层服务器,这将是第 0 层源。
st – 层级,0 到 16。
t – 连接类型。可以是“u”表示单播或多播,“b”表示广播或多播,“l”表示本地参考时钟,“s”表示对称对等,“A”表示多播服务器,“B”表示广播服务器,或者“M”代表多播服务器
时间 – 上次查询服务器的时间。默认为秒,或者“m”将显示分钟,“h”将显示小时,“d”将显示天。
poll – 查询服务器时间的频率,最短 16 秒,最长 36 小时。它还显示为 2 的幂的值。通常,它在 64 秒到 1024 秒之间。
reach – 这是一个 8 位左移八进制值,显示与远程服务器通信的成功率和失败率。成功表示该位已设置,失败表示该位未设置。 377 是最高值。
延迟 – 该值以毫秒为单位显示,并显示计算机与远程服务器通信的往返时间 (RTT)。
偏移 – 该值以毫秒为单位显示,使用均方根,并显示您的时钟与服务器向您报告的时间相差多远。它可以是正值,也可以是负值。
抖动 – 该数字是以毫秒为单位的绝对值,显示偏移量的均方根偏差。
NTPQ命令行输出解释:
” “ 因无效而被丢弃。可能是您无法与远程计算机通信(它不在线),这次源是“.LOCL”。 ” refid 时间源,它是一个高层服务器,或者远程服务器正在使用这台计算机作为 NTP 服务器。
x 被交集算法丢弃。
. 由于表溢出而被丢弃(未使用)。
– 被聚类算法丢弃。
+ 包含在组合算法中。如果我们正在同步的当前服务器因任何原因被丢弃,那么这是一个很好的候选者。
# 良好的远程服务器,可用作替代备份。仅当您有超过 10 个远程服务器时才会显示此信息。
* 当前系统对等点。计算机正在使用此远程服务器作为其时间源来同步时钟
o 每秒脉冲 (PPS) 对等点。这通常与 GPS 时间源一起使用,尽管任何提供 PPS 的时间源都可以。该计数代码和前一个计数代码“*”不会同时显示。
参考:参考:https://p Three.org/2013/11/05/real-life-ntp/
结束语
在本教程中,我们了解了国家时间协议 (NTP) 以及如何在 Ubuntu 22.04 Jammy Jellyfish 上设置我们自己的 NTP 服务器。我们还了解了如何配置客户端计算机(或多台计算机,通常是这种情况)以连接到 NTP 服务器以进行时间同步。