NTPd 是否必须侦听接口或地址以更新服务器时间?

Lek*_*eyn 5 ntpd

默认情况下,NTPd 侦听 UDP 端口 123(所有 IP 地址)。这是否需要仅更新服务器时间?

如果有必要监听一个地址,应该使用哪个地址?它可以侦听的可能地址是:

  • 127.0.0.1
  • 服务器IP
  • ::1 (IPv6)
  • 服务器 IP (IPv6)

为什么它甚至必须监听本地主机(127.0.0.1 和 ::1)?没有人可以访问该地址上的服务器。


要将 NTPd 绑定到单个地址,-I可以使用该选项。对于我的 Debian 盒子,我必须编辑/etc/default/ntp,并替换-g为:

-g -I 1.2.3.4 -I 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

这会导致 NTPd 侦听公共地址 1.2.3.4(用您自己的地址替换)和 127.0.0.1。

pac*_*cey 9

如果您只想更新本地时间,您可能应该限制对服务器的访问,因为 ntpd 不支持配置监听地址。

首先要配置的是默认策略。您可以阻止之后未启用的所有通信,但请记住,限制对客户端和服务器都有效。

restrict default ignore
# Allow access to localhost
restrict 127.0.0.1
restrict IP.OF.UPSTREAM.SERVER
Run Code Online (Sandbox Code Playgroud)

或者您可以默认允许时间交换并允许仅向本地主机查询服务器:

restrict -4 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

ntpd 还允许通过 -I 开关选择它运行的接口。如果您正在运行 Debian,您可以简单地添加 -I 切换到 /etc/defaults/ntpd 中的 NTPD_OPTS 变量。

ntpd -I eth0
Run Code Online (Sandbox Code Playgroud)


Phi*_*ack 2

如果您想在本地机器上运行查询,那么在本地主机上监听是有意义的。例如,ntpq -p localhost将查询本地机器上运行的 ntp 服务。

一般来说,您可能希望 ntpd 侦听它需要发送或接收更新的所有真实地址。如果您正在运行 ipv6,则还需要列出 ipv6 地址,否则只需列出真实服务器 IP 地址和 ipv4 本地主机。