为什么 NTP 守护进程一直在监听 UDP6?

为什么 NTP 守护进程一直在监听 UDP6?

我有一个干净的 Debian 7 安装,并在 /etc/ntp.conf 中手动输入了以下行:

interface ignore wildcard
interface listen <local_nic_ip>

希望 NTP 不再监听 UDP6,但重启后,它仍然监听:

5:udp        0      0 <local_nic_ip>:123       0.0.0.0:*                           9172/ntpd       
6:udp        0      0 127.0.0.1:123           0.0.0.0:*                           9172/ntpd       
8:udp6       0      0 ::1:123                 :::*                                9172/ntpd

NTP 命令行没有显示任何异常:

/usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 121:130

如何停止 NTP 监听该 UDP6 端口?

答案1

我已经能够通过这样的方式在 Debian 5/6/7 和 Ubuntu 12.04 上禁用 NTP 的 IPv6:

编辑文件/etc/default/ntp并替换

NTPD_OPTS='-g'

经过

NTPD_OPTS='-4 -g'

然后,您可以将指令保留在中ntp.conf,它们不会被忽略:

interface ignore wildcard
interface listen <local_nic_ip>
  • 如果没有interface ignore wildcardNTP 也会监听0.0.0.0
  • 如果没有interface listen <local_nic_ip>NTP,则只能监听 127.0.0.1(当然)

这将导致:

# netstat -anp | grep :123
udp    0      0 192.168.0.38:123     0.0.0.0:*                 2901/ntpd
udp    0      0 127.0.0.1:123        0.0.0.0:*                 2901/ntpd

此外,我确认它会OpenNTPD更友好地监听您要求它监听的地方(无需编辑多个配置文件)。默认情况下,它不会监听任何地方,除非您对其进行配置(非常安全);)

在配置文件中,只需取消注释行

listen on 127.0.0.1

并添加行

listen on <local_nic_ip>

结果是 :

# netstat -anp | grep :123
udp   0    0 192.168.0.38:123     0.0.0.0:*                 8581/ntpd
udp   0    0 127.0.0.1:123        0.0.0.0:*                 8581/ntpd

答案2

如果您认为这是一个错误(我当然这么认为:ntpd忽略了配置指令),则必须向软件包维护者或上游作者提出这个问题。我认为他们中没有人在这里闲逛 - 请参阅软件包信息以获取他们的联系信息。

或者你可以尝试另一个 NTP 实现(例如开放NTPD- 我个人没有使用过它,但 OpenBSD 的人们往往对安全性非常偏执,所以我想它只会听从吩咐。

不过,正如 Sander 指出的那样,您的 NTP 守护程序正在本地主机上监听(127.0.0.1& ::1)——如果您担心被本地主机黑客入侵,那么您的问题可能比 NTP 守护程序更大。
我对守护程序忽略配置指令感到有点恼火,但我不认为这是一个严重的安全问题。

答案3

ntpd 不会这样做;ntpdate 会。请参阅下文了解解释。我的 conf 文件中没有以下任何一项:

    interface ignore wildcard
    interface listen <local_nic_ip>

我启动后,sudo netstat -tunlp 给了我这个:

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    udp        0      0 127.0.0.1:123           0.0.0.0:*                           1433/ntpd       
    udp        0      0 0.0.0.0:123             0.0.0.0:*                           1433/ntpd       

我打开了网络连接,netstat 显示以下信息:

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      4432/dnsmasq    
    udp        0      0 127.0.1.1:53            0.0.0.0:*                           4432/dnsmasq    
    udp        0      0 0.0.0.0:123             0.0.0.0:*                           4501/ntpdate    
    udp6       0      0 :::123                  :::*                                4501/ntpdate    

注意前两个是 DNS,而不是 ntp。向右滚动即可查看程序名称。

我等了一会儿,然后 netstat 返回了这个信息:

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      4432/dnsmasq    
    udp        0      0 127.0.1.1:53            0.0.0.0:*                           4432/dnsmasq    
    udp        0      0 192.168.5.5:123         0.0.0.0:*                           4542/ntpd       
    udp        0      0 127.0.0.1:123           0.0.0.0:*                           4542/ntpd       
    udp        0      0 0.0.0.0:123             0.0.0.0:*                           4542/ntpd       

奇怪。无论如何,看起来 ntpdate 是(暂时)为您提供 udp6 连接的程序。您必须使用 sudo 才能查看 PID 和程序名称,否则会非常误导。

(随后)啊,没关系,看来你的确实是ntp……

相关内容