为什么ntpd监听这么多端口/地址?


18

我已经注意到了一段时间,这对我来说从来没有任何意义:

为什么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 [LAN]: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如此混杂?

Answers:


15

从我对本页的阅读中可以看出,ntp并非0.0.0.0仅出于安全原因而部分不出于身份验证原因而使用INADDR_ANY 地址。

第一个端口123在1024以下,因此被视为特权端口,只有root可以绑定到该端口。Ntp通常设置为在启动后放弃特权。根据我从邮件列表中了解到的信息,该文章一旦删除特权就无法打开套接字以从正确的源端口123进行回复,因此ntp在释放特权之前会为每个分配的地址打开套接字。

从我所读的内容中,对于ntp的某些身份验证机制基本上要求源端口和目标端口为123,而别无其他。

这个问题还不完全清楚。请参阅有关通配符地址 的部分0.0.0.0,出于某些原因,它是由ntpd打开的,但是从注释中实际上不应使用注释,除非在某些特殊的罕见情况下,开发人员不能完全确定,但他们不会请勿卸下插座,以防万一它们弄坏了东西。

请注意,通常ntpd不应在通配符地址上接受数据包,因为这样做会带来很多问题,包括在与发件人请求的地址不同的地址上发送返回数据包。DannyMayer-2009年4月27日

我认为您问题的主要答案是在上面的评论中。


16

它一点也不混杂。它只是绑定到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

在一些其它版本中,您将需要更改的选项的ntpd守护程序本身来改变什么协议/接口来收听(选项,如-4-6-I


1
Feliz Ano Novo!
user9517 2013年

1
我认为这并不能真正回答问题。我认为问题基本上INADDR_ANY是在问为什么没有像几乎所有其他协议那样被使用。我链接到我的答案中的文章似乎很清楚,它部分是安全功能,部分是协议预期在端口123上答复的设计方式
。– Zoredache

这是我想知道的非常有用的信息,对此我非常感谢,但是@Zoredache的答案实际上回答了我所提出的问题,因此将其标记为答案。但是,各地都可以投票。;)
亚伯拉罕·韦格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.