如何强制本地隔离的 ntpd 更新时间

如何强制本地隔离的 ntpd 更新时间

客观的

我有本地隔离的主机。我希望它们都具有相同的时间。一个充当时间服务器,另一个充当客户端与其同步。

所有机器的正常运行时间都是不规律的。它们很少通电。因此它们可能会产生很大的偏移。手动设置服务器本地时间后,整个主机集应在几分钟内同步。

为了确认可靠性,我通过设置出色的手动调整(几个小时)测试了 ntp 主机连接,并测量了客户端同步的速度。

ntpd - ntpd 案例

我尝试过ntpd对于客户端和服务器来说。ntpd调整时钟需要很长时间。此外,它拒绝将时间倒退几个小时。

如果可以修复,我更喜欢使用ntpd作为客户端。因此,我正在寻找配置选项来提示 ntpd 渴望接受网络时钟更新。

但如果没有办法雇用ntpdntpdate替代方案仍然是可以接受的。

ntpd-ntpdate 案例

ntpdate完美地更新时钟,毫不犹豫。我把它放在一个 cron 任务中,得到了一个粗糙但有效的解决方案。不幸的是,第一印象是错误的。经过几次测试,我注意到ntpdate客户端开始拒绝服务器。出于某些原因,服务器决定返回层 16。我明确地fudge 127.127.1.0 stratum 8ntp配置文件在服务器端避免这种行为。但是ntpdate -v -d输出显示从服务器传输的“stratum 16”。

所以我认为有两种方法。要么强迫ntpd服务器返回第 9 层,无论本地时间如何跳跃或强制ntpdate客户端接受任何服务器,即使它的层数为 16。

我尝试用 Google 搜索,但一无所获。有人能建议合适的配置选项吗?

答案1

对所有设备使用一个ntpd时间服务器。每天重新启动的所有 PC 都可以通过命令在启动时同步其时钟ntpdate。其他服务器上的时钟可以通过服务同步,ntpd因为它会软性调整时间。

对于主 ntpd时间服务器的使用:

server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 2
driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust
restrict 127.0.0.0/8
disable auth
logfile /var/log/ntp.log

答案2

我的主要建议是:不要这样做。尝试改变您的要求或约束,以便您可以拥有一个可以作为时间源的始终在线系统,或者让您的系统不被孤立,并且可以从全局 NTP 池, 或两者。

如今,您可以以相当低的价格获得带有 GPS 接收器的低功耗 NTP 服务器。如果您喜欢 DIY,可以用不到 100 美元的价格将 BeagleBones 和 Raspberry Pi 做成 NTP 服务器,或者如果您想要现成的东西,可以尝试狮子座NTP

下一个建议:如果ntpd更新时钟需要很长时间,您可能需要检查您的配置:

  1. 确保您正在使用-G命令行标志;-g这是某些 Linux 发行版的默认设置,但它不会做出大的后退步骤。
  2. 确保您的所有服务器/池都配置了iburst
  3. 使用tinker step 0.5tinker panic 0最大限度地ntpd发挥修复较大偏移的能力。
  4. 确保您的漂移文件ntpd在关闭时可写入且能正确保存。

第三个建议(我更喜欢这个建议ntpdate):尝试chrony- 它明确支持偶尔连接的客户端(例如定期挂起的笔记本电脑)。chrony.conf(5)手册页包含有关此内容的所有详细信息。如果您使用的chrony是默认的发行版(CentOS/Red Hat 和 18.04 发布后的 Ubuntu),这可能是我的第二个建议。

最后的建议:如果ntpdate将服务器报告为 16 级,则意味着该服务器存在问题。请尝试发布服务器的配置以及 的输出,ntpq -np以便ntpq -nc rv我们能够帮助诊断。

相关内容