为什么ntp在无networking启动后不能恢复?

我有一些Linux设备(没有TOY芯片,所以它们完全依赖于ntp),可能无法访问互联网(到交换机的链路已经启动)。 ntp服务将启动,但显然不会有联系人。 然后我得到一个正在运行的ntp服务,但不与任何同位体同步( ntpq -p给出.INIT.状态)

问题是,当build立与Internet的连接时,这确实会改变。

如果连接在启动时可用,那么一切正常。 同样,如果我手动发出service ntp restartntp连接到同龄和时间正确同步)。

不应该ntp尝试定期重新连接?

  • 如果是的话:这是我期望configuration的东西(我没有看到configuration中的任何东西)
  • 如果不是的话:什么是处理服务重启或服务启动延迟的好方法(我可以假定在启动后n分钟后连接到互联网)

注意: 从文档看来,最大池时间(我知道是在放弃之前尝试连接到同级的最大时间?)是1024秒= 17分钟,这比build立所需的时间要多得多上网(大概2到5分钟,最坏的情况)

您可能被ntpd的边缘案例咬伤:

IIRC ntpd版本<4.2.4p3从其同步列表中删除了某些服务器在某些时刻无法到达的任何服务器。 在这种情况下,这当然是非常糟糕的,因为ntpd在获得互联网连接之前可能会“耗尽”对方的名单。

可以/可以在ntp.conf为这些服务器设置dynamic选项来解决这个问题。

随着更新的版本,这不应该是必要了(也是,dynamic选项已经退休,有些人ntp的突然抱怨导致轻微的抱怨)。

所以,你可以升级你的ntpd,或者设置选项。

作为第三个选项,您可以在init系统中创build适当的依赖关系; 使ntpd依靠build立的互联网连接( 只是networking)。 结果是你可以重复使用这个与其他服务。

如果有一个接口出现,Debian OpenNTPD打包会自动重新启动它。 这很常见。

另外,无论如何你(通常)需要在启动xntpd之前同步一次 ,所以我build议这是要走的路。