ntpd erhält "connect: ungültiges Argument" auf 0.0.0.2

7

Es scheint, dass sich die Antwort für pool.ntp.org kürzlich geändert hat. Dies macht meine CentosOS 6 NTP-Server unglücklich.

$ 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 +++

Es scheint, dass diesbezüglich allgemeine Übereinstimmung besteht, wie das moderne Ubuntu sagt:

$ ping 0.0.0.2
connect: Invalid argument

Ich dachte, 0.0.0.2 ist eine gültige IP?

AKTUALISIEREN

Das Problem ist in der Tat regelmäßig und dauert seit mehreren Tagen an (laut meinem Nagios seit dem 20.12.2015):

[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

Ich nehme an, es findet eine Art Ranglistenschlacht statt.

UPDATE 2

Bei Interessenten tritt dieses Problem auf, wenn DNS-RRs für pool.ntp.org aus Schweden abgefragt werden.

Bittrance
quelle
vielleicht nur ein DNS-Hick-up. Nach der Eingabe pool.ntp.org in einem Browser landete ich hier: sim720.co.uk . In der Adressleiste wird jedoch pool.ntp.org/#!menu angezeigt .
Klanomath
@klanomath pool.ntp.orgist nur für NTP. Wenn einige der Server im Pool zufällig auch HTTP hosten, ist dies wahrscheinlich völlig unabhängig von NTP. Es ist sinnvoll, einen HTTP-Server so zu konfigurieren, dass Anforderungen für unerwartete Domänennamen an einen Domänennamen umgeleitet werden, der mit HTTP verwendet werden soll. Wenn sich die Dinge also richtig verhalten, können Sie damit rechnen http://pool.ntp.org/, dass Sie einen Fehler erhalten oder an eine mehr oder weniger zufällige Site weitergeleitet werden.
Kasperd

Antworten:

12

Alles 0.0.0.0/8ist reserviert, so dass definitiv keine gültige IP für einen NTP-Server ist. Sie können die IANA-Registrierung auf weitere Informationen überprüfen .

Sie sollten einige Fehlerberichte einreichen. Eine dagegen pool.ntp.org, weil sie die Gültigkeit von IP-Adressen überprüfen sollten, bevor sie in den Pool aufgenommen werden. Und eins dagegen check_ntp_time, denn es sollte nicht sterben, auch wenn eine ungültige Adresse auftaucht. Stattdessen sollte es die drei gültigen IP-Adressen ausprobieren, die es erhalten hat.

Kasperd
quelle
10

Von den vier Servern, die Sie auflisten, befinden sich drei im Pool und haben gültige Serverüberwachungsseiten:

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

Der andere, illegale, einer, tut nicht:

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

Wie Kasperd feststellt, sind die RRs, die für diesen A-Datensatz zurückgegeben wurden, im Round-Robin-Lastausgleich, sodass wir nicht feststellen können, ob Ihr Upstream-DNS Sie angelogen hat oder eine illegale Adresse es vorübergehend in den Pool geschafft hat. Ich weiß aus Erfahrung als Pooladministrator, dass der eigene Server hoch verfügbar sein und daher vom Überwachungssystem gut bewertet werden muss, um in den Pool aufgenommen zu werden. Daher bezweifle ich persönlich, dass eine nicht erreichbare Adresse in den Pool gelangen könnte, und vermute, dass dies ein vorgelagerter DNS-Fehler war. Aber wenn Sie das Ergebnis nicht zuverlässig reproduzieren können, bezweifle ich, dass wir es jemals erfahren werden.

Mir fällt ein, dass pool.ntp.orgwir bei Verwendung von DNSSEC-Signaturen sofort erkennen können, ob es sich um ein Problem mit einer Cache-Vergiftung oder um ein Problem mit dem Mist im Pool handelt. Wenn ich ein paar freie Minuten habe, kann ich das Problem auf der Administratorliste der Poolserver ansprechen.

Bearbeiten : Ich habe die Frage aufgeworfen auf der Admins Liste und habe bereits eine unabhängige Bestätigung hat , dass diese Adresse nicht scheinen , um es in den Pool zu machen, obwohl es sollte eindeutig nicht. Beobachten Sie diesen Raum, denke ich.

Edit 2 : Anscheinend war dies ein echter Fehler und er wurde jetzt behoben . Ich stimme Kasperd zu, dass es sich lohnt, die Autoren des Plugins zu verfolgen, um das Plugin robuster zu machen, damit es im Pool scheiße wird.

MadHatter
quelle
1
Wenn Sie 0.0.0.0eine Verbindung zu einem Linux-Computer herstellen, werden Sie mit localhost verbunden. Wenn Sie also die Verfügbarkeit eines NTP-Servers überwacht haben, 0.0.0.0scheint dieser wahrscheinlich hoch verfügbar zu sein. Es könnte ein Betriebssystem geben, in dem dies für jede Adresse in der Fall wäre 0.0.0.0/8. Es wäre ein fehlerhaftes Design, sich auf die Verfügbarkeitsüberwachung zu verlassen, um ungültige IP-Adressen herauszufiltern. Diese müssen herausgefiltert werden, bevor sie der Überwachung übergeben werden.
Kasperd
Das gilt auch für 127.0.0.1, daher bin ich sicher, dass es andere Filter gibt als die Verfügbarkeitsprüfung. Aber selbst wenn es nicht so wäre , 0.0.0.2ist nicht die gleiche Art und Weise erreichbar ist , würde so nicht den Verfügbarkeit Test. Ich bin damit einverstanden, dass es ein Betriebssystem geben könnte, das gegen die RFCs verstößt und 0.0.0.2wie von Ihnen beschrieben behandelt wird. Es könnte aber auch ein Betriebssystem geben, das alle RFCs ignoriert und eine beliebige Zeichenkombination als gültige IP-Adresse übergibt - und das wahrscheinlich nicht als Grundlage für einen Internet-Infrastrukturdienst verwendet wird.
MadHatter
1

0.0.0.2 „gültig“ ist per se , sondern nur als verwendet werden kann Quelle Adresse nach RFC1700 daher können Sie es nicht anpingen.

Mintra
quelle
pool.ntp.orgverwendet DNS für den Lastenausgleich. Die Antworten, die Sie erhalten, hängen von Ihrem Standort ab und ändern sich häufig.
Kasperd
Du hast recht. Ich werde diesen Teil der Antwort fallen lassen.
Mintra