我在我的 Debian 主机上安装了 ntpd 以使硬件 RTC 保持“最新”状态。通过共享系统时钟,时间会自动传播到所有已安装的容器 (lxc)。其中一个容器运行我的路由器。
我想用这个路由器将它的时间传播到我网络中所有感兴趣的设备,所以它们自己不需要互联网连接。我不想将主机用作服务器(希望被禁用interface ignore all
)。
如何在容器中安装和配置纯 ntp-server,它以系统时钟为唯一参考?它永远不会自己设置时钟。
如何安装和配置一个纯 ntp 客户端,它不接受来自其他对等方的传入连接并泄漏尽可能少的信息?
NTP 的配置与我所说的直观不同。默认情况下,它会安装一个客户端,该客户端读取和写入系统时钟并开始侦听所有接口和网桥,并急切地使用它们来提供有关其状态的信息而无需身份验证。
我很难收集所有信息和文档来(希望)正确地做到这一点。甚至默认配置文件也包含一些手册页未涵盖的语句。
在不提供过多信息和服务的情况下,以下配置似乎可以正常工作。
这是要安装在主机上以强制执行仅客户端操作的配置:
重新启动服务为我们提供了一个易于理解的侦听套接字列表。(
my-host:ntp
由于 NTPd 的工作方式,无法避免。)这是要安装在路由器容器上以强制执行仅服务器操作的配置(由系统时钟作为时间源支持,感谢@BillThor):
重新启动服务为我们提供了本地时钟作为首选源和(可选)广播目标列表
...以及为本地网络提供服务的可理解的侦听套接字列表。
(
disable kernel
感谢@PaulGear)禁止守护程序设置系统时钟,这在典型容器中是不允许的。否则,它会用以下内容淹没日志:在启动时仍然有一些无害的故障,我不知道如何摆脱:
只需将本地时钟添加为服务器并禁用所有服务器。捏造优先级,因此如果有人将您的主机作为服务器,他们不会认为您正在运行和原子钟。这是我用于服务器的配置:
为了防止服务时间使用限制子句。
文档位于ntp.org。