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