Abr*_*egh 18 linux debian ntp ntpd
我已经注意到这一点一段时间了,对我来说从来没有任何意义:
为什么ntpd
需要监听这么多地址?
例如,一台 Debian 机器:
$ netstat 原始本地地址外地址程序名称 UDP 0.0.0.0:123 0.0.0.0:* ntpd UDP 127.0.0.1:123 0.0.0.0:* ntpd udp [局域网]:123 0.0.0.0:* ntpd udp [IPv4]:123 0.0.0.0:* ntpd udp6 :::123 :::* ntpd udp6 ::1:123 :::* ntpd udp6 [本地链接] :::* ntpd udp6 [IPv6] :::* ntpd
此(已编辑)netstat
列表显示了nptd
侦听 IPv4 和 IPv6 的广播、本地、LAN 和全局地址。
为什么ntpd
这么滥交?
cor*_*ump 17
它根本不是混杂的。它只是在 ipv4 和 ipv6 协议上绑定到接口 IP 地址和本地主机。如果您认为它不应该听其中的一些,只需listen
按照手册中的说明更改配置(这可能适用于您正在使用的不同版本):
listen on address
Specify a local IP address or a hostname the ntpd(8) daemon
should listen on. If it appears multiple times, ntpd(8) will
listen on each given address. If the exact string '*' is given as
an address, ntpd(8) will listen on all local addresses. Other-
wise, address can be followed by an asterisk ('*') and a UDP port
number to listen on instead of the default 123. ntpd(8) does not
listen on any address by default. For example:
listen on *
listen on 127.0.0.1
listen on ::1
Run Code Online (Sandbox Code Playgroud)
在其他一些版本中,您需要更改ntpd
守护程序本身的选项以更改要侦听的协议/接口(选项如-4
, -6
, -I
)
Zor*_*che 15
从我对本页的阅读来看,ntp 似乎不完全使用 INADDR_ANY0.0.0.0
地址,部分是出于安全原因,部分是出于身份验证原因。
第一个端口 123,低于 1024,因此被认为是特权端口,只有 root 可以绑定到该端口。Ntp 通常设置为在启动后删除权限。根据我从邮件列表中了解到的情况,并且文章一旦删除权限就无法打开套接字以从正确的源端口 123 进行回复,因此 ntp 在删除权限之前为每个分配的地址打开套接字。
从我读过的一些 ntp 身份验证机制来看,基本上要求源端口和目标端口为 123,仅此而已。
事情并不完全清楚。请参阅有关通配符地址 的部分0.0.0.0
,由于某种原因,它被 ntpd 打开,但从评论来看,实际上永远不应使用,除非在某些特殊的罕见情况下可能,开发人员并不完全确定,但是,他们不不想拆下插座,以防万一他们弄坏了东西。
请注意,通常 ntpd 不应该接受通配符地址上的数据包,因为如果这样做会出现许多问题,包括在与发件人请求的地址不同的地址上发送返回数据包。DannyMayer - 2009 年 4 月 27 日
我认为您的问题的主要答案在此处的上述评论中。