我正在尝试配置 ntpserver 和客户端。我应该怎么做才能让 ntpd 更频繁、更快速地同步时间?当我手动更改客户端中的时间,然后重新启动 ntpd 服务时,16 秒后时间同步。但是当我再次更改时间而不重新启动 ntpd 服务或重新启动服务器时,需要 15 到 16 分钟才能同步时间。我希望 ntpd 每 16 或 20 秒检查一次时间。
ntp 服务器:192.168.135.130 ntp 客户端:192.168.135.131
##server config###
driftfile` /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict time.google.com mask 255.255.255.245 nomodify notrap noquery
server time.google.com
restrict 192.168.135.0 mask 255.255.255.0
############################################################
##client config##
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server 192.168.135.130 iburst burst minpoll 4 maxpoll 4
logfile /var/log/ntp.log
logconfig all
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
###########################################################
##drift file##
-12.298
答案1
我认为你的行为存在根本性的误解。
ntpd 旨在始终运行,并在运行时将时间保持在参考时钟的微秒范围内。它不会每 15-20 分钟轮询一次时间服务器并更正时间;它始终在运行。
我怀疑您看到的是 ntpd 的正确行为。守护进程启动时,它会调整(大幅更改)时钟以将其更正为源时钟,可能是因为它配置为允许该行为作为一次性更改,但仅在启动时进行(否则可能需要很长时间才能收敛到正确的时间,例如,如果计算机启动时时钟显示 1970 年 1 月 1 日)。
启动后,ntpd 大部分时间都配置为从不步进(大幅更改)时钟。相反,它会缓慢(逐渐更改)时钟,直到它正确/同步,这样您计算机上运行的应用程序就不会受到负面影响(例如,cron 脚本无法运行,因为您只是跳过了今天凌晨 1 点)。我认为这就是您在 ntpd 运行时手动设置时间时看到的情况。
如果您以这种方式运行 ntpd,您的计算机上就永远不会出现错误的(偏差超过微秒)时钟,而且您永远不必自己设置/更改时间;这就是 ntpd 的运行方式。
您可能更习惯于另一种环境,即您希望定期通过网络同步时钟,本质上是通过询问另一台计算机:“现在几点了?”并将时钟设置为答案。这有两个挑战,其中一个是您注意到的(如果时钟出现偏差,可能需要一些时间才能纠正),另一个是您的时钟将比使用 ntpd 时更不准确(您的计算机和时间服务器之间的延迟可能会以毫秒为单位)
我希望这些信息对你有用。
答案2
您可能混淆了两个事物——NTP 客户端和服务器。
NTP 客户端定期与服务器同步,您可以使用 cron 将同步频率设置为更高(例如使用 ntpdate)。听起来这就是您想要做的。
NTP 服务器(即您上面描述的服务器)运行起来要复杂得多,启动起来也很慢。这是因为它连接到多个其他服务器,并且非常努力地保持准确,甚至考虑了延迟和延迟变化。因此,它需要很长时间才能启动。
一般来说,较小的组织会使用可通过互联网访问的 NTP 服务器,但较大的组织或需要更高精度的组织将运行 1 个 ntp 服务器并将客户端指向该服务器,以减少由延迟变化导致的不准确性并减轻其他服务器的压力。
编辑
您可能需要运行一个简单的脚本(如后台运行的脚本)来保持时钟同步(但我不喜欢这个解决方案)
#! /bin/bash
NTPSERVER=clock.isc.org
SECS=20
while [ 1 ]
do
/usr/sbin/ntpdate $NTPSERVER
sleep $SECS
done
假设您将此文件保存在 /usr/local/bin/keeptime 中 -
chmod 755 /usr/local/bin/keeptime
将使其可执行并添加
在 /usr/local/bin/keeptime &
/etc/rc.local 顶部附近(取决于您的发行版)将在后台运行它。