Das Pingen einer IP-Adresse antwortet mit unterschiedlicher IP

Das Pingen einer IP-Adresse antwortet mit unterschiedlicher IP

Wenn ich versuche, die IP-Adresse anzupingen, 10.10.208.57erhalte ich keine Antwort, da im Netzwerk nichts mit dieser IP-Adresse existiert.

Wenn ich jedoch versuche zu pingen10.10.208.057stattdessen antwortet eine andere IP-Adresse:

root@everest:/root# ping 10.10.208.057
PING 10.10.208.057 (10.10.208.47) 56(84) bytes of data.
64 bytes from 10.10.208.47: icmp_seq=1 ttl=253 time=0.732 ms
64 bytes from 10.10.208.47: icmp_seq=2 ttl=253 time=0.695 ms
64 bytes from 10.10.208.47: icmp_seq=3 ttl=253 time=0.659 ms
64 bytes from 10.10.208.47: icmp_seq=4 ttl=253 time=0.705 ms

Wenn man bedenkt, dass es 10.10.208.47sich um einen Lexmark E120n-Drucker handelt, was könnte die Ursache dieses seltsamen Problems sein?

Antwort1

Dieses Verhalten ist eigentlich auf eine normale Ping-Funktion zurückzuführen und hat nichts mit Ihrer tatsächlichen Hardware zu tun.

Wenn man der IP-Adresse (oder einem Teil davon) eine Null voranstellt, wird die Nummer alsOktal.

Das 057bedeutet 57in Basis 8, also 47. Somit sendet Ping dieICMPAnfrage an die Maschine an der Adresse stellen 10.10.208.47und so eine Antwort von ihr erhalten.

Beachten Sie, dass Sie Adressen auch im Hexadezimalformat anpingen können, indem Sie das Präfix 0x statt nur 0 verwenden.

Bearbeiten: Wie aus vielen Kommentaren hervorgeht, ist diese Funktion eigentlich nicht spezifisch für pingdie Manipulation von IP-Adressen und kann in vielen CLI-Softwareprogrammen gefunden werden.

Antwort2

Ping verwendet wie viele andere Unix-Programme die C-Bibliotheken auf Ihrem Unix-System zur Namensauflösung. Eine der verwendeten Funktionen ist inet_aton.

Die Manpage für inet_atonsagt:

Alle als „Teile“ in einer „.“-Notation angegebenen Zahlen können dezimal, oktal oder hexadezimal sein, wie in der Sprache C angegeben (d. h. ein führendes 0x oder 0X impliziert hexadezimal, andernfalls impliziert eine führende 0 oktal, andernfalls wird die Zahl als Dezimalzahl interpretiert).

Wenn Sie also eine führende Null verwenden, wird die Zahl als Oktalzahl interpretiert. Daher 57 = 047 = 0x39.

verwandte Informationen