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

How*_*ard 7 linux ntp ipv6 daemon service

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

interface ignore wildcard
interface listen <local_nic_ip>
Run Code Online (Sandbox Code Playgroud)

希望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
Run Code Online (Sandbox Code Playgroud)

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

/usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 121:130
Run Code Online (Sandbox Code Playgroud)

如何阻止 NTP 侦听该 UDP6 端口?

kri*_*sFR 15

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

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

NTPD_OPTS='-g'
Run Code Online (Sandbox Code Playgroud)

经过

NTPD_OPTS='-4 -g'
Run Code Online (Sandbox Code Playgroud)

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

interface ignore wildcard
interface listen <local_nic_ip>
Run Code Online (Sandbox Code Playgroud)
  • 没有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
Run Code Online (Sandbox Code Playgroud)

另外,我确认OpenNTPD在您要求他听更友好的地方收听(无需编辑多个配置文件)。默认情况下,它不会在任何地方侦听,直到您将其配置为这样做(非常安全);)

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

listen on 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

并添加行

listen on <local_nic_ip>
Run Code Online (Sandbox Code Playgroud)

结果是 :

# 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
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。如果这对某人有帮助,在 CentOS 6.6(因此,可能在 Fedora 和 RHEL)上,选项位于以下文件中:/etc/sysconfig/ntpd。 (3认同)
  • @Semirke 我同意你关于 `-4` 选项和 DNS 查询的看法,但事实是,通过这样做,我的 ntp ipv6 接口上没有更多的侦听器(假设我信任 `netstat` 输出)。 (2认同)