Ubuntu 服务器正在运行 ntp,并连接到互联网。但是,系统时钟仍然误差约 30 分钟,并且随着时间的推移误差越来越大。
$ service ntp status
NTP server is running..
输出ntpq -p
remote refid st t when poll reach delay offset jitter
mail.thefrown.n .INIT. 16 u - 1024 0 0.000 0.000 0.000
193.1.12.167 .INIT. 16 u - 1024 0 0.000 0.000 0.000
tshirt.heanet.i .INIT. 16 u - 1024 0 0.000 0.000 0.000
chilipepper.can .INIT. 16 u - 1024 0 0.000 0.000 0.000
这看起来像是防火墙问题?有趣的是,当我停止 ntp 并运行以下命令时
ntpdate -u 0.europe.pool.ntp.org
14 Jul 09:27:40 ntpdate[3664]: step time server 217.198.219.102 offset -21.831200 sec
时间确实调整了,这让我相信这不是防火墙问题?
答案1
.INIT. refid 实际上意味着远程仍处于初始化状态,尚未收到数据包或脉冲。这可能是防火墙等不允许的网络流量,但不一定。
30 分钟的偏移量超出了 ntpd 恐慌阈值。(您指的是秒吗?您的 ntpdate 输出中的偏移量只有几十秒。)根据配置,它可能只会计时一次,或者拒绝并退出。一些操作系统会先调用 ntpdate,然后再调用 ntpd。
正如 mlichvar 提到的,ntpdate 和 ntpd 都可能选择 123 作为源端口。
此外,ntpdate 在“NTP 套接字正在使用中”时拒绝调整,这也是需要先停止 ntpd 的另一个原因。如果您不希望时间像数据库服务器那样步进,这是一种有用的安全机制。