我正在尝试将一台机器与另一台机器进行 ntp 同步。两者都运行 Debian lenny,我在两者中都安装了 ntp 包。我通过放置将服务器配置为与外部机器同步
server IP.ADDRESS iburst
Run Code Online (Sandbox Code Playgroud)
在它的 /etc/ntp.conf 文件中。
我将客户端配置为与服务器同步,只将服务器放在客户端的 /etc/ntp.conf 中。
然而,它们似乎并不同步。ntpq 显示状态是 INIT,根据文档,它表明“关联尚未第一次同步”
# ntpq -n
ntpq> pe
remote refid st t when poll reach delay offset jitter
==============================================================================
10.99.84.134 .INIT. 16 u 665 1024 0 0.000 0.000 0.000
Run Code Online (Sandbox Code Playgroud)
ntpq -> 如在条件行中显示“拒绝”:
# ntpq
ntpq> as
ind assID status conf reach auth condition last_event cnt
===========================================================
1 40102 8000 yes yes none reject
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?(我宁愿不使用 ntpdate)。
如今,许多发行版都在配置 ntpd 以限制访问。如果restrict您的服务器中存在线路/etc/ntp.conf,则仅允许与这些线路匹配的主机/网络连接到 ntpd。您可能需要为restrict要允许同步到服务器的主机或网络添加额外的行。例如,要让您提到的客户端同步,请添加以下行之一:
# allow just this host
restrict 10.99.84.134 nomodify notrap
# or allow the whole /24 segment
restrict 10.99.84.0 mask 255.255.255.0 nomodify notrap
Run Code Online (Sandbox Code Playgroud)
之后,重新启动 ntpd,您的客户端应该能够同步。
问题是服务器本身无法与其上游服务器同步。解决方案是更改服务器配置,如下所示:
重新启用 Debian 池服务器而不是我的单个硬编码服务器。
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst
Run Code Online (Sandbox Code Playgroud)
我添加了本地时钟参考,这使得服务器看起来与客户端同步,即使它没有同步,这是我的设置所需的行为。
server 127.127.1.0
fudge 127.127.1.0 stratum 10
Run Code Online (Sandbox Code Playgroud)
一旦我进行了这些更改,服务器就设法自行同步,然后客户端就设法与服务器同步。