我已经注意到了一段时间了,这对我来说没有任何意义:
为什么ntpd需要监听这么多地址?
例如,Debian机器:
$netstat Proto Local Address Foreign Address Program name 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 [link-local] :::* ntpd udp6 [IPv6] :::* ntpd
此(编辑)netstat列表显示nptd侦听IPv4和IPv6的广播,本地,LAN和全局地址.
为什么ntpd如此滥交?
解决方法
从我的
reading of this page开始,出于安全原因,ntp似乎部分不使用INADDR_ANY 0.0.0.0地址,部分原因是出于身份验证原因.
第一个端口123低于1024,因此被视为特权端口,只有root可以绑定到该端口. Ntp通常设置为在启动后删除权限.根据我从邮件列表中理解的内容,以及删除权限后的文章无法打开套接字以从123的正确源端口回复,因此ntp会在删除权限之前为每个分配的地址打开套接字.
从我所看到的,ntp的一些认证机制基本上要求源和目标端口为123,而不是其他.
事情并不完全清楚.请参阅有关wildcard address 0.0.0.0的部分,由于某种原因它由ntpd打开,但是除了可能在某些特殊情况下可能永远不会使用的评论中,开发人员并不完全确定,但是,它们是不想删除套接字,以防万一他们破坏了东西.
Note that normally ntpd should not be accepting packets on the wildcard addresses since there are a number of problems if you do so including sending return packets on a different address from the sender’s requested address.
DannyMayer – 27 Apr 2009
我认为你的问题的主要答案在上面的评论中.