我有一个内部网络,其中的服务器运行不同的操作系统,并且所有服务器都应通过 NTP 同步,但我想检查它们是否确实同步。是否有工具(最好是 Linux 工具)可以执行此操作?
答案1
这取决于允许从外部进行状态查询的服务器种类。并非所有服务器都允许。Windows 尤其无法响应标准 NTP 状态请求。如果它们不响应,则必须将轮询服务器添加到 NTP 配置的允许列表中(如果可能的话)。
对于那些确实做出响应的用户,该ntpq
命令的设计目的正是实现这一点。
ntpq -c lo $target
您必须解析输出,但这可以与一些 nmap 脚本结合使用,以识别要查询的打开 NTP 主机的启动主机。
或者您可以使用实际的监控框架。
答案2
Nagios 有一个 NTP 插件。它将连接到目标系统上的 NTP 服务器,并将其时间与本地时间进行比较。您可以为时差设置警告和严重级别。
答案3
假设服务器没有配置为忽略本地网络,你可以从中央框执行
central% /usr/sbin/ntptrace remotehost
你应该看到类似
remotehost: stratum 3, offset 0.002664, synch distance 0.120534
如果您的本地防火墙允许随机 NTP 流量进入互联网,您将会看到更多内容,可能类似于:
remotehost: stratum 3, offset 0.005108, synch distance 0.085819
maverick.mcc.ac.uk: stratum 2, offset -0.000428, synch distance 0.032754
ntp2.ja.net: stratum 1, offset 0.000083, synch distance 0.002045, refid 'MSF'
如果您什么都看不到,则意味着 ntp 已配置为忽略您;您可能必须登录到该框才能在那里运行 ntptrace。当有人脱离绑定时,就会出现问题:
bustedbox: stratum 16, offset 0.000000, synch distance 0.000015