AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 744958
Accepted
Bittrance
Bittrance
Asked: 2015-12-24 03:45:46 +0800 CST2015-12-24 03:45:46 +0800 CST 2015-12-24 03:45:46 +0800 CST

ntpd 在 0.0.0.2 上获得“连接:无效参数”

  • 772

看来 pool.ntp.org 的回复最近发生了变化。这让我的 CentosOS 6 ntp 服务器不开心。

$ host pool.ntp.org
pool.ntp.org has address 0.0.0.2
pool.ntp.org has address 83.209.8.142
pool.ntp.org has address 130.236.254.17
pool.ntp.org has address 195.178.181.98

$ /usr/lib64/nagios/plugins/check_ntp_time -H pool.ntp.org
can't create socket connection#

$ strace -f /usr/lib64/nagios/plugins/check_ntp_time -H pool.ntp.org
...
connect(3, {sa_family=AF_INET, sin_port=htons(123), sin_addr=inet_addr("83.209.8.142")}, 16) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(123), sin_addr=inet_addr("130.236.254.17")}, 16) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(123), sin_addr=inet_addr("195.178.181.98")}, 16) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
connect(5, {sa_family=AF_INET, sin_port=htons(123), sin_addr=inet_addr("83.209.8.142")}, 16) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 6
connect(6, {sa_family=AF_INET, sin_port=htons(123), sin_addr=inet_addr("0.0.0.2")}, 16) = -1 EINVAL (Invalid argument)
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6571c5b000
write(1, "can't create socket connection", 30can't create socket connection) = 30
exit_group(3)                           = ?
+++ exited with 3 +++

正如现代 Ubuntu 所说,似乎对此达成了普遍共识:

$ ping 0.0.0.2
connect: Invalid argument

我认为 0.0.0.2 是有效 IP?

更新

这个问题确实是周期性的,并且已经持续了好几天(根据我的 nagios,自 2015 年 12 月 20 日以来):

[12:40] host pool.ntp.org
pool.ntp.org has address 194.71.144.71
pool.ntp.org has address 79.136.86.176
pool.ntp.org has address 83.209.8.142
pool.ntp.org has address 178.73.198.130
[13:09] host pool.ntp.org
pool.ntp.org has address 194.71.144.71
pool.ntp.org has address 0.0.0.2
pool.ntp.org has address 178.73.198.130
pool.ntp.org has address 192.36.143.130

我想有某种排名战正在进行。

更新 2

对于感兴趣的人,当从瑞典查询 pool.ntp.org 的 DNS RR 时会出现此问题。

ip-address
  • 3 3 个回答
  • 2451 Views

3 个回答

  • Voted
  1. Best Answer
    kasperd
    2015-12-24T04:01:01+08:002015-12-24T04:01:01+08:00

    所有的0.0.0.0/8都是保留的,所以这绝对不是 ntp 服务器的有效 IP。您可以查看IANA 注册表以获取更多信息。

    您应该提交一些错误报告。反对pool.ntp.org,因为他们应该在允许 IP 地址进入池之前验证 IP 地址的有效性。反对check_ntp_time,因为即使出现无效地址,它也不应该死。相反,它应该尝试它获得的三个有效 IP 地址。

    • 12
  2. MadHatter
    2015-12-24T04:14:10+08:002015-12-24T04:14:10+08:00

    在您列出的四台服务器中,三台位于池中并且具有有效的服务器监控页面:

    http://www.pool.ntp.org/scores/83.209.8.142

    http://www.pool.ntp.org/scores/130.236.254.17

    http://www.pool.ntp.org/scores/195.178.181.98

    另一种是非法的,一种是不:

    http://www.pool.ntp.org/scores/0.0.0.2

    正如 kasperd 所指出的,该 A 记录上返回的 RR 是循环负载平衡的,因此我们无法判断您的上游 DNS 是否对您撒谎,或者非法地址暂时进入池中。我从作为池管理员的经验中知道,一个服务器必须具有高可用性,并且因此得到监控系统的良好评分,才能包含在池中。因此,我个人怀疑无法访问的地址是否会进入池中,并怀疑这是上游 DNS 故障。但除非你能可靠地重现结果,否则我怀疑我们永远不会知道。

    我突然想到,如果pool.ntp.org使用 DNSSEC 签名,我们将立即能够判断这是缓存中毒问题还是池中垃圾问题。如果我有几分钟的空闲时间,我可能会在池服务器的管理员列表中提出这个问题。

    编辑:我已经在管理员列表上提出了这个问题,并且已经有一个独立的确认,这个地址似乎确实进入了池,即使它显然不应该。看这个空间,我猜。

    编辑2:显然,这是一个真正的错误,现在已经修复。我同意 kasperd 的观点,即值得追随插件的作者,以使插件更加健壮,可以在池中胡扯。

    • 10
  3. Mintra
    2015-12-24T04:03:51+08:002015-12-24T04:03:51+08:00

    0.0.0.2 本身是“有效的”,但根据RFC1700只能用作源地址,因此您无法 ping 它。

    • 1

相关问题

  • 数据中心静态 IP 地址管理

  • 如何以编程方式更改静态 IP 地址?

  • 将程序绑定到 Windows 上的传出 IP 地址?

  • 静态 IP 地址分配与 DHCP 地址分配

  • 如何检索 ISP 分配给机器的 IP 地址

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve