设置 NTP 服务器,允许本地机器与 Linux 同步

设置 NTP 服务器,允许本地机器与 Linux 同步

我正在尝试设置一台机器作为 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

前段时间,我提供了详细的答案,说明我们如何在数据中心实现您所希望实现的目标。自那篇文章发表以来,情况没有太大变化。

帖子链接:

使用 NTP 将一组 Linux 服务器同步到公共时间源

答案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 时间源。

相关内容