客观的
我有本地隔离的主机。我希望它们都具有相同的时间。一个充当时间服务器,另一个充当客户端与其同步。
所有机器的正常运行时间都是不规律的。它们很少通电。因此它们可能会产生很大的偏移。手动设置服务器本地时间后,整个主机集应在几分钟内同步。
为了确认可靠性,我通过设置出色的手动调整(几个小时)测试了 ntp 主机连接,并测量了客户端同步的速度。
ntpd - ntpd 案例
我尝试过ntpd对于客户端和服务器来说。ntpd调整时钟需要很长时间。此外,它拒绝将时间倒退几个小时。
如果可以修复,我更喜欢使用ntpd作为客户端。因此,我正在寻找配置选项来提示 ntpd 渴望接受网络时钟更新。
但如果没有办法雇用ntpd,ntpdate替代方案仍然是可以接受的。
ntpd-ntpdate 案例
ntpdate完美地更新时钟,毫不犹豫。我把它放在一个 cron 任务中,得到了一个粗糙但有效的解决方案。不幸的是,第一印象是错误的。经过几次测试,我注意到ntpdate客户端开始拒绝服务器。出于某些原因,服务器决定返回层 16。我明确地fudge 127.127.1.0 stratum 8
将ntp配置文件在服务器端避免这种行为。但是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
更新时钟需要很长时间,您可能需要检查您的配置:
- 确保您正在使用
-G
命令行标志;-g
这是某些 Linux 发行版的默认设置,但它不会做出大的后退步骤。 - 确保您的所有服务器/池都配置了
iburst
。 - 使用
tinker step 0.5
和tinker panic 0
最大限度地ntpd
发挥修复较大偏移的能力。 - 确保您的漂移文件
ntpd
在关闭时可写入且能正确保存。
第三个建议(我更喜欢这个建议ntpdate
):尝试chrony
- 它明确支持偶尔连接的客户端(例如定期挂起的笔记本电脑)。chrony.conf(5)
手册页包含有关此内容的所有详细信息。如果您使用的chrony
是默认的发行版(CentOS/Red Hat 和 18.04 发布后的 Ubuntu),这可能是我的第二个建议。
最后的建议:如果ntpdate
将服务器报告为 16 级,则意味着该服务器存在问题。请尝试发布服务器的配置以及 的输出,ntpq -np
以便ntpq -nc rv
我们能够帮助诊断。