我正在尝试设置一台机器作为 ntp 服务器,其他本地机器将同步它们的时间。无论 ntp 服务器机器是否连接到互联网,都需要这样做,即:时间是否正确并不重要,重要的是机器是否彼此同步。
我的配置文件如下:
NTP 服务器 /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
NTP 客户端 /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server 192.168.1.146 iburst
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
我更改了服务器上的时间,然后使用以下命令运行 ntp 服务器,sudo /etc/init.d/ntp start
并尝试测试客户端是否可以接收 ntp 更新sudo ntpdate 192.168.1.146
这是可行的,但只有连接到互联网时才有效(即使主机的时间是通过我的命令设置的,而不是从外部 ntp 服务器设置的)。
我的配置文件有什么问题吗?我遗漏了什么步骤吗?
答案1
答案2
我假设你的时间服务器经常连接到互联网,这样 NTP 就可以计算出你的错误率,并对如何规范内核时钟做出很好的猜测。
首先,我建议从 /etc/ntp.conf 文件中删除以下两行。从长远来看,它们会导致问题,而且很少需要。只要 NTP 服务器设法同步并开始规范内核时钟,即使互联网断开一段时间,它仍应该能够提供时间。
server 127.127.1.0
fudge 127.127.1.0 stratum 10
其次,在开始测试客户端之前,在时间服务器上运行“ntpq -p”来确定它是否已与公共时间服务器同步。在测试时手动调整服务器上的时间绝对不是一个好主意。不要这样做。启动时间服务器,然后让它静置并与上游时间服务器同步 30 分钟。您的内部时间服务器将不是分发时间,直到它与公共时间服务器同步(我认为 PPM 必须低于 500)。NTP 不会向客户端提供它认为的“疯狂”时间,您需要留出 10-30 分钟的时间让它决定要遵循哪个时间源。
然后,您也可以在客户端上运行“ntpq -p”,查看它们是否已同步以及它们与您的时间服务器的接近程度。
第三,您可能希望将时间服务器的 ntp.conf 文件中的 (3) 服务器升级到 (5) 或 (6)。目前,如果三台服务器中的一台发生故障或无法访问,NTP 无法判断剩余两台服务器中的哪一台提供更好的时间信号。
当无法访问任何时间服务器时,有几个因素可以控制 NTP 如何保持内核时钟的准确性。一个因素是 PPM(参见“ntpdc -c kerninfo”),即 TSC 或 HPET 或 APIC 时钟与实际时钟的偏差(基于公共时间服务器)。另一个因素是温度波动和/或电源管理设置,它们会改变 CPU 的频率。然后是计时晶体的质量,如果您很幸运,计时晶体的质量可能会很好,如果您真的很差,计时晶体的质量可能会很差。
也许您需要考虑 GPS 或 WWVB 时间源。