inet_pton(): Unrecognized address 12.12.12.12

Azurel

Member
inet_pton(): Unrecognized address 12.12.12.12.

Hey. Ich kann in dem Fall mit der PHP Fehlermeldung nicht wirklich was anfangen und frage daher hier mal nach Rat. :)

inet_pton(): Unrecognized address 12.12.12.12.

Es wirkt erst einmal wie irgendeine Art von Angriff. Kennt sich jemand mit der IP aus und ob und inwiefern man was dagegen machen sollte?

Wenn man die IP googlelt https://ipdb.at/ip/12.12.12.12
The number of this IP address is 12.12.12.12. This IP address is active in United States, and refers to Anchorage, Alaska. IP Country code is US. IP address is assigned to "AT&T Services". In organization "Alascom". IP address longitude is -149.844299 and latitude is 61.169201.

Da PHP die Adresse nicht auflösen kann, muss ja was nicht stimmen. Kann mir hier jemand Tipps geben?

----

Ich habe auch ab und an eine ähnliche Meldung mit:

inet_pton(): Unrecognized address unknown

Kann dazu eventuell jemand auch etwas sagen?
 
Last edited by a moderator:
Da PHP die Adresse nicht auflösen kann, muss ja was nicht stimmen.
Wieso muss da was nicht stimmen? Sie ist eben nicht auflösbar per NS.
Die IP existiert im Adressraum von Alascom.

inet_pton(): Unrecognized address 12.12.12.12
ist kein Angriff sondern eine Fehlemeldung deines PHP-Programms.

Wenn irgendjemand mit dieser IP bei deinem System anlandet, kann die IP gespooft sein oder eben existent.

IPs in Netzwerk-Paketen können gefälscht werden. Ist dir das nicht bekannt?
 
Also inet_pton gibt mir ein korrektes Ergebnis bei gleicher Eingabe. Ich wüsste auch nicht wieso er das nicht tun soll außer der IP-String hätte noch andere nicht dargestellte Zeichen. Wo nimmst du diese IP her und wird sie evtl bearbeitet?

Da PHP die Adresse nicht auflösen kann, muss ja was nicht stimmen. Kann mir hier jemand Tipps geben
inet_pton() ist keine Auflösung sondern eine Umwandlung in die binäre IP-Darstellung statt der mensch-lesbaren Zahlenform. Evtl tut dein Code noch mehr, aber die von PHP ausgegebene Fehlermeldung bezieht sich ausschliesslich auf inet_pton().
Allerdings ist fehlende Auflösung keineswegs ein Anzeichen für eine falsche oder ungültige Quell-IP, egal was die... Spezialisten... von Proofpoint stur wiederholen. Das Verwenden von PTR-Records ist nicht vorgeschrieben auch wenn es best-practice und für Einsatzzwecke wie Email notwendig ist.

IPs in Netzwerk-Paketen können gefälscht werden. Ist dir das nicht bekannt?
Bei aufgebauten TCP-Verbindungen ist es auf aktuellen System recht unwahrscheinlich da Aufwand und Fehlerrate doch recht hoch liegen solange man keinen direkten Zugriff auf die die Datenverbindung des Servers hat und die SYNACK-Pakete abfangen kann.
 
Entschuldigt, ich habe scheinbar hier einen Punkt verschluckt. Ich habe dahingehend den Startbeitrag nachträglich editiert. Die Fehlermeldung heißt korrekterweise:

"inet_pton(): Unrecognized address 12.12.12.12."

Es fehlte der letzte Punkt und das ist hier das Problem. Standard ist eine IPv4 ja so aufgebaut:
XXX.XXX.XXX.XXX

und nicht
XXX.XXX.XXX.XXX.

Und dies kann inet_pton($_SERVER['REMOTE_ADDR']) nicht auflösen.
 
Die Ip-Adresse wird aus dem Paket in binärform ausgelesen. Ein solches Paket kann eigentlich nie beim Webserver ankommen, sicher dass hier nicht irgendeine Manipulation durch dein Skript den Fehler verursacht haben kann?
Der Punkt könnte genau so gut zum Satzbau der Fehlermeldung gehören.
 
Der Punkt könnte genau so gut zum Satzbau der Fehlermeldung gehören.

Ich denke, in diesem Fall nicht. Ich habe gerade mal probiert, den Fehler nachzustellen - was tatsächlich nur gelingt, wenn ich an die IP noch einen Punkt anhänge. Dann ist aber der Satz nach der IP noch nicht zuende:
Code:
Warning: inet_pton(): Unrecognized address 12.12.12.12. in /var/www/dev/test.php on line 3
Daher würde ich eher auf d4fs Vermutung tippen, als wenn irgendwo vorher im Script die $_SERVER['REMOTE_ADDR'] "manipuliert" wird.
 
Das Einzige was davor es manipuliert wäre dies:

PHP:
$trusted_proxies = array('127.0.0.1', 'localhost', 'localhost.localdomain', $ipv4, $ipv6);
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && isset($_SERVER['REMOTE_ADDR']) && in_array($_SERVER['REMOTE_ADDR'], $trusted_proxies))
{
	$client_ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
	$_SERVER['REMOTE_ADDR'] = array_shift($client_ips);
	unset($client_ips);
}
else if (isset($_SERVER['HTTP_CLIENT_IP']) && isset($_SERVER['REMOTE_ADDR']) && in_array($_SERVER['REMOTE_ADDR'], $trusted_proxies))
{
	$client_ips = explode(',', $_SERVER['HTTP_CLIENT_IP']);
	$_SERVER['REMOTE_ADDR'] = array_shift($client_ips);
	unset($client_ips);
}
Da sehe ich aber keinen Fehler der "Punkte" hinzufügt. ;)

Meine Errormeldung bekomme ich als E-Mail und beginnt so:
ErrorException Object
(
[message:protected] => inet_pton(): Unrecognized address 12.12.12.12.
[string:Exception:private] =>
[code:protected] => 2
.............

Der Punkt gehört zu der IP, ansonsten müsste bei der Meldung (die extrem selten alle paar Wochen 1-2 mal auftaucht)
PHP:
inet_pton(): Unrecognized address unknown
auch ein Punkt am Ende stehen. ;)
 
Da sehe ich aber keinen Fehler der "Punkte" hinzufügt. ;)
du überprüfst nie ob HTTP_X_FORWARDED_FOR eine korrekte IP ergibt - ich vermute also mal dies als wahrscheinlichste Quelle.
Es ist allerdings sehr schlechte Praxis Umgebungsvariablen um zu schreiben da dies Debuggen sehr erschweren kann.

Es scheint dein eigener Server zu sein - spricht was gegen mod_rpaf (in der Annahme eines Apache Webservers) statt PHP-gebastelter Korrektur der Remote-Addr?
 
Back
Top