NTP 未收到有用的对等方

Ian*_*non 1 ntp 16.10

我有几台运行 16.10 的机器,包括服务器和笔记本电脑,都在同一个网络上。他们所有人都偶尔会遇到与 NTP 相同的问题。时钟稍微不同步,当我检查 NTP 对等点时,只有一个并且没有被使用。

> ntpstat 
unsynchronised
   polling server every 8 s

> sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.x.x.x        .INIT.          16 u    -   64    0    0.000    0.000   0.000
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用默认的 Ubuntuntp.conf服务器列表(从 0 到 3)

pool 0.ubuntu.pool.ntp.org iburst
...
Run Code Online (Sandbox Code Playgroud)

还有标准的 ntp 列表(也从 0 到 3),如下所示:

server 0.pool.ntp.org
...
Run Code Online (Sandbox Code Playgroud)

但问题是一样的。未使用的服务器的 IP 地址在所有机器上始终相同,无论它们的ntp.conf.

我可以通过更改ntp.conf并重新启动来暂时解决它,ntpd但想修复问题的根源,以便自动找到有用的对等点。

我可以尝试解决什么问题?

Ian*_*non 6

服务器和池/etc/ntp.conf被忽略,因为默认的 Ubuntu 配置优先考虑通过 DHCP 找到的 NTP 服务器。

有一个脚本/etc/dhcp/dhclient-exit-hooks.d/ntp可以创建/etc/ntp.confat的副本/var/lib/ntp/ntp.conf.dhcp,删除原始请求中的任何特定服务器和池,并替换通过 DHCP 找到的服务器。

/etc/init.d/ntp运行时,如果发现在一个新的配置/run/ntp.conf.dhcp,将推出NTP这一点。这可以通过多种方式禁用,但我选择/etc/init.d/ntp像这样注释掉该行为:

# if [ /run/ntp.conf.dhcp -nt /etc/ntp.conf ]; then
#       NTPD_OPTS="$NTPD_OPTS -c /run/ntp.conf.dhcp"
# fi
Run Code Online (Sandbox Code Playgroud)

然后删除 DHCP 脚本,重新加载守护进程脚本并重新启动 NTP:

sudo rm /run/ntp.conf.dhcp
sudo systemctl daemon-reload
sudo systemctl restart ntp
Run Code Online (Sandbox Code Playgroud)

现在,当 NTP 启动时,DHCP 发现的 NTP 服务器将被忽略,池用于查找正在工作的 NTP 服务器。

编辑:更新了 Ubuntu 20.04 的文件路径