ntpd 错误:无法绑定到通配符地址 0.0.0.0 - 另一个进程可能正在运行 - 退出

ntpd 错误:无法绑定到通配符地址 0.0.0.0 - 另一个进程可能正在运行 - 退出

我遇到了一个问题。
服务器上的时间不同步。
这个问题似乎是在我设置了 iptables 规则后出现的,我是这样描述的这里也许我错了,这两件事没有关联......

CentOS 7.1
ntpd 4.2.6p5

/var/log/消息

May 25 16:48:49 CentOS-70-64-minimal ntpd[26771]: ntpd [email protected] Sat Dec 20 02:38:09 UTC 2014 (1)
May 25 16:48:49 CentOS-70-64-minimal ntpd[26771]: proto: precision = 0.046 usec
May 25 16:48:49 CentOS-70-64-minimal ntpd[26771]: 0.0.0.0 c01d 0d kern kernel time sync enabled
May 25 16:48:49 CentOS-70-64-minimal ntpd[26771]: unable to bind to wildcard address 0.0.0.0 - another process may be running - EXITING

ntp配置文件

driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1 
restrict ::1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
server ntp1.hetzner.de iburst
server ntp2.hetzner.com iburst
server ntp3.hetzner.net iburst

编辑
netstat -lanp | grep ':123'

udp        0      0 5.9.152.9:123           0.0.0.0:*                           24483/ntpd          
udp        0      0 127.0.0.1:123           0.0.0.0:*                           24483/ntpd          
udp        0      0 0.0.0.0:123             0.0.0.0:*                           24483/ntpd          
udp6       0      0 2a01:4f8:190:4008:::123 :::*                                24483/ntpd          
udp6       0      0 fe80::3285:a9ff:fee:123 :::*                                24483/ntpd          
udp6       0      0 ::1:123                 :::*                                24483/ntpd          
udp6       0      0 :::123                  :::*                                24483/ntpd

编辑2

这个问题对我来说变得更加阴影了......

服务 ntpd 状态

Redirecting to /bin/systemctl status  ntpd.service
ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled)
   Active: inactive (dead)

systemctl 列表单元文件 | grep 'ntp'

ntpd.service                            disabled
ntpdate.service                         disabled

netstat -nlap |查看 ntpd 的相关信息

udp        0      0 5.9.152.9:123           0.0.0.0:*                           3588/ntpd           
udp        0      0 127.0.0.1:123           0.0.0.0:*                           3588/ntpd           
udp        0      0 0.0.0.0:123             0.0.0.0:*                           3588/ntpd           
udp6       0      0 2a01:4f8:190:4008:::123 :::*                                3588/ntpd           
udp6       0      0 fe80::3285:a9ff:fee:123 :::*                                3588/ntpd           
udp6       0      0 ::1:123                 :::*                                3588/ntpd           
udp6       0      0 :::123                  :::*                                3588/ntpd           
unix  2      [ ]         DGRAM                    34224    3588/ntpd  

如果 ntpd 被禁用它如何监听端口....

答案1

根据您提供的信息(特别是第一个编辑的输出:“netstat -lanp | grep ':123'“第二次编辑:”netstat -nlap |查看 ntpd 的相关信息”),很显然:

  • 第一次编辑时:

    • 您的系统正在运行 PID 为 24483 的进程;
    • 该进程声明其自身名为“ntpd”;
    • 此类进程绑定到多个 IPv4 和 IPv6 地址的 UDP 端口 123;
  • 第二次编辑时:

    • 您的系统正在运行 PID 为 3588 的进程;
    • 该进程声明其自身名为“ntpd”;
    • 此类进程绑定到多个 IPv4 和 IPv6 地址的 UDP 端口 123;

在正常情况下(我相信你正在经历这种情况),这意味着您已在运行“ntpd”进程,并且由于一个 ntpd 已经在运行,您无法启动一个新的(或者,更好的是,如果您启动一个新的 ntpd 实例,它将拒绝启动,因为它无法控制所需的资源(UDP 端口 123))。

因此,一般规则是,在启动新的“ntpd”之前,请确保没有其他实例正在运行(...通过执行建议的 ss/netstat 命令并检查结果)。

至于你最后的评论——”如果 ntpd 已禁用,它如何监听端口“——请注意正在运行/未运行已启用/已禁用是两个截然不同的概念:

  • 完全有可能正在运行的进程是不是启动时启用(...通常是因为在启动完成其初始运行序列后,您手动启动了它们);

  • 完全有可能,一个被安排为启动启用(并且,因此,通常在启动序列期间启动)的进程/服务不是正在运行(...通常是因为您在启动后手动停止它或者它由于多种原因自行停止)。

那么,回到你的(不太明确的)问题:

  • 您无法启动 ntpd,因为它已经在运行;

  • 如需再次启动,请确保先将其停止;

  • 如果您希望/不希望它在启动时启动,请确保它被“启用”/“禁用”(根据您的特定发行版的方法);

  • 如果您在保持时间“同步”方面遇到问题,请提供有关您的“ntpd”进程(grep ntpd /var/log/messages,作为第一次启动)和您提到已应用/更改的防火墙配置的尽可能详细信息。

相关内容