我正在尝试将两个 NTP 服务器配置为彼此对等,但我不知道如何判断它是否正常工作,或者我的 NTP 配置是否正确。我在下面给出了 NTP 服务器配置方式的简化视图。
Server A :
ntp.conf :
restrict default kod nomodify notrap noquery
peer Server B
Server B :
ntp.conf :
restrict default kod nomodify notrap noquery
peer Server A
关于此设置我有两个问题:
编辑:添加了对问题 1 的澄清
ntp.conf
使用我提出的简化方案,两个 NTP 服务器是否会通过尝试更正时间来充当彼此的对等方?我正在寻找 ntp 对等点的最简单的设置,但我不确定我是否正确配置了它。- 如何确认我的 NTP 对等配置正在运行?
我问上述问题的原因是因为我有一个替代设置,唯一的变化是我已将设置重新添加nopeer
到该restrict
节中,并且在这两种情况下都会返回以下输出:
Server A:
ntpdc -l
sym_active : Server B
Server B:
ntpdc -l
sym_active : Server A
这毫无意义,因为该nopeer
指令不应该使我能够将两台服务器连接在一起。
注意:这是在 CentOS 6 上运行的
编辑:实际的 ntp.conf 文件和 ntpq -p 按要求。我不确定这些会有多大用处:
Server A:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap noquery
restrict -6 default kod nomodify notrap noquery
restrict 127.0.0.1
restrict -6 ::1
peer 192.168.122.3
Server B:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap noquery
restrict -6 default kod nomodify notrap noquery
restrict 127.0.0.1
restrict -6 ::1
peer 192.168.122.2
对于每台服务器,超过 5 分钟(超过轮询间隔)后 ntpq -p 的输出如下。
Server A:
remote refid st t when poll reach delay offset jitter
==============================================================================
secure.jzhu.loc .INIT. 16 u 55 64 0 0.000 0.000 0.000
Server B:
remote refid st t when poll reach delay offset jitter
==============================================================================
masterdns.jzhu. .INIT. 16 u 33 64 0 0.000 0.000 0.000
注意:无论有没有 nopeer 指令,到达范围始终保持在 0。尽管这更有可能是因为它们都是 16 层服务器。注意:执行此测试时运行了 iptables -F,并且链 INPUT 的默认策略是 ACCEPT。
答案1
不,这行不通。 NTP 需要有效的时间源。不同步的主机不是有效的源,因此两个不同步的主机不能彼此有效。事实上,NTP 的理念是分配“正确”的时间,而不是试图保持一组机器彼此同步。
如果您绝对无法获得真实时间的来源,您可以对 NTP 撒谎并告诉它其中一台机器的时钟应该可信。选择一台服务器作为“正确”的服务器并设置一个当地的时钟上。该时钟将成为该服务器 NTP 的源,其他服务器将与其同步。
如果您希望使用服务器 A 的时钟,则在 ntp.conf 中应包含以下内容:
server 127.127.1.1 # local clock trusted
fudge 127.127.1.1 stratum 10 # Real clocks should be preferred
我们告诉服务器使用时钟并假装它是 10 层时钟。这意味着服务器 A 随后应同步并成为 11 层服务器。然后你可以将 B 指向它,它就会同步。
服务器B的ntp.conf
server A
就是这样。运行ntpq -p
以查看其同步。