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

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

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

答案1

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

通常,您可能希望 ntpd 监听它需要发送或接收更新的所有真实地址。如果您正在运行 ipv6,您还需要列出 ipv6 地址,否则只需列出真实服务器 ip 地址和 ipv4 localhost。

答案2

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

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

restrict default ignore
# Allow access to localhost
restrict 127.0.0.1
restrict IP.OF.UPSTREAM.SERVER

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

restrict -4 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1

此外,ntpd 还允许通过 -I 开关选择其运行的接口。如果您正在运行 Debian,则只需将 -I 开关添加到 /etc/defaults/ntpd 中的 NTPD_OPTS 变量即可。

ntpd -I eth0

相关内容