这是在 RHEL 5.5 中。
首先,远程主机的 ntpdate 有效:
$ ntpdate XXX.YYY.4.21
24 Oct 16:01:17 ntpdate[5276]: adjust time server XXX.YYY.4.21 offset 0.027291 sec
其次,这是我的 /etc/ntp.conf 中的服务器行。所有restrict
行都已被注释掉以进行故障排除。
server 127.127.1.0
server XXX.YYY.4.21
我执行service ntpd start
并检查ntpq
:
$ ntpq
ntpq> peer
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 5 l 36 64 377 0.000 0.000 0.001
timeserver.doma .LOCL. 1 u 39 128 377 0.489 51.261 58.975
ntpq> opeer
remote local st t when poll reach delay offset disp
==============================================================================
*LOCAL(0) 127.0.0.1 5 l 40 64 377 0.000 0.000 0.001
timeserver.doma XXX.YYY.22.169 1 u 43 128 377 0.489 51.261 58.975
XXX.YYY.22.169 是我正在使用的主机的地址。对我的 ntp.conf 文件中的 IP 地址进行反向查找可验证 ntpq 输出是否正确命名了远程服务器。但是,如您所见,它似乎只是转入我的 .LOCL。时间服务器。此外,ntptrace
只返回本地时间服务器,并ntptrace XXX.YYY.4.21
超时。
$ ntptrace
localhost.localdomain: stratum 6, offset 0.000000, synch distance 0.948181
$ ntptrace XXX.YYY.4.21
XXX.YYY.4.21: timed out, nothing received
***Request timed out
这看起来像我的 ntp 守护进程只是在查询自己。
我正在考虑我的测试网络时间服务器和公司网络时间服务器之间的我不控制的路由器在源端口上阻塞的可能性。(我认为 ntpdate 在端口 123 上发送,它绕过了那个过滤器,这就是为什么我不能在 ntpd 运行时使用它的原因。)我已经给网络人员发了电子邮件来检查它。
最后,telnet XXX.YYY.4.21 123
永远不要超时或完成连接。
问题:
我在这里错过了什么?
我还可以检查什么来尝试找出此连接失败的位置?
会strace ntptrace XXX.YYY.4.21
告诉我 ntptrace 发送的源端口吗?我可以解构大多数 strace 调用,但我无法弄清楚该数据的位置。
如果我不能直接检查我的测试网络和时间服务器之间的网关路由器,我如何建立证据证明它对这些断开连接负责?或者,我如何排除它?
列
377
中的reach
表示连接正常;telnet
不会连接,因为 NTP 是 UDP。尝试
server 127.127.1.0
从您的配置中删除 -*
by*LOCAL(0)
告诉我们具有 stratum 5 的本地服务器正在用于同步,优先于具有 stratum 1 的远程服务器;延迟和偏移量均为 0.000 可能与此有很大关系。如果您要包括本地时钟,请适当调整其级别。看起来您已将其设置为 5。我通常至少将其设置为 8 (
fudge 127.127.1.0 stratum 8
)。如果你不捏造它,你可以像一个原子钟一样出现在你网络上的其他主机上。在我扫描的一个网络上,我发现很多低层服务器公布的时间通常是几小时或几天不正确。Shane 关于
reach
指示您有权访问服务器的值是正确的。您的时间服务器的高值offset
和jitter
值表明它可能不是很可靠。它们可能很高,因为您的服务器仍在同步。poll
间隔增加到 128这一事实表明您的服务器正在获得一致的结果。它应该逐渐增加到 1024 秒。尝试运行一个循环,如:
这将使您了解 ntp 的工作情况。你应该看到它随着时间的推移稳定下来。
可以设置一些限制
ntpd
来限制可以远程访问有关服务器的信息量。您可能仅限于使用上游服务器作为时间源。可以使用防火墙规则将源和目标的流量限制到端口 123。这提供了一个有效的 ntp 设置,但限制了其他工具的访问。一些工具允许您使用端口 123 作为源端口(如果可用)。我偏爱
ntpdate
在调试模式下使用。如果您关于
refid
上游服务器的 IP 地址是正确的,它似乎正在使用您的服务器作为首选时间源。尝试添加restrict noquery
到您的配置。可能是您的上游服务器配置不当。尝试添加您的路由器和/或名称服务器作为来源,我发现它们可能是比官方公司服务器更好的来源。我有同样的问题:
ntpq -p 显示 reach = 0
然而 1- ntpd 正在运行 2- ntp.conf 列出了服务器 3- ntpdate 使用这些服务器工作 4- ntpdate -u 使用这些服务器工作 5- nc 显示 TCP 端口 123 在这些服务器上打开 6- nc 显示 UDP 端口 123 是在那些服务器上打开
所以基本上 ntpdate 工作并且没有防火墙问题,但是 ntpq -p 显示 reach = 0 对于列出的每个服务器。
原来是ntp.conf中的restrict行。我刚刚从 ntp.conf 中删除了所有限制行并重新启动了 ntpd,一切都从那里开始了。
对于那些寻求大解决方案的人,我深表歉意。这会很俗气。
是的,时间服务器无法访问,原因我无法确定。好消息是,我可以访问的外部 DNS 服务器之一原来正在为 NTP 数据包提供服务,并且它正在连接到该外部时间服务器以获取其滴答声。这是一种解决方法,而不是修复方法。但是,我会得到我能得到的。
所以,最后,我只失去了一个服务层。
作为旁注,我确实在 NTP 错误数据库中注册,因此我可以编写增强错误 2297,请求对等 refids.INIT.、.LOCL. 和 LOCAL(0) 的正式文档。
只是想将我的两分钱添加到顶部的 Google 搜索结果中。我在 NTP 未绑定到主机外部接口的主机上遇到了这个问题。如果您遇到此问题,请查看 的输出
netstat -tulpn
。此 ntpd 实例将无法同步到已知的良好时间源。
这将。
这是配置文件试图限制仅使用 0.0.0.0 通配符绑定到 IPv4 接口的结果。
正确的(期望的)配置如下。
(或者,删除两个接口配置选项。)
您还可以检查
/etc/sysconfig/ntp
或等同于任何可能限制接口绑定的配置。