Daniel: scheinbar ständig wechselnde IP???

Hallo Users,

wie lässt es sich erklären, dass sich beim Aufruf einer Internetseite die IP Adresse, die PHP bzw. Apache Webserver als Umgebungsvariable liefert, ständig ändert? Damit meine ich natürlich nicht den trivialen Fall, dass man sich neu beim Internetprovider einwählt, sondern während der laufenden Verbindung.

Der Hintergrund: Ich habe da eine Seite mit einem Userbereich, in dem die Zugriffe in eine SQL-Datenbank geschrieben werden. Dabei ist das Vorgehen wie eigentlich bei jedem Counter: Das Skript schaut erst, ob innerhalb eines bestimmten Zeitfensters (meistens 1 Stunde) ein Benutzer mit der ermittelten REMOTE_ADDR, also IP schon mal auf der Seite war. Wenn nicht, wird ein neuer Eintrag erstellt, wenn ja, wird nur die Zeit aktualisiert.

!Das Phänomen: Jetzt passiert aber folgendes: Schon nach wenigen Minuten hat sich auf unerklärliche Weise die IP geändert, und es wird natürlich ein neuer Eintrag erstellt, obwohl sich eigentlich gar nichts an der Verbindung geändert hat. Und die "neue" IP ist sogar so "netzwerkfremd", dass eine Länderabfrage bei whois.ripe.net ergibt, die IP wäre zB einem italienischen Provider zugeordnet.
 ZEIT   /    IP       /    LAND     /    USER  /  LINK
22:54:19 / 213.73.70.65 / Germany (DE) / WebMaster /  E-Mail
23:25:02 / 80.105.162.89 / Italy (IT) / WebMaster /  Error404
23:32:19 / 220.113.5.173 / Unresolved (EU) / WebMaster / Links
[...]

Damit aber nicht genug. Auf der Seite gibt es noch einen Monitorbereich. Da wird die IP nicht in der SQL-Datenbank geloggt, aber mit derselben Variablen $_SERVER["REMOTE_ADDR"] direkt angezeigt. Während ich also im einen Browser den Userbereich aufrufe, kann ich im anderen Browser verfolgen, wie sich meine IP ständig in eine völlig fremde geändert haben soll, während die im Monitor genau die ist, die ich auch über ifconfig ermitteln kann.
Und das passiert nicht nur bei mir, sondern bei jedem Besucher. Bei nicht registrierten Besuchern fällt es natürlich nicht auf. Heikel und vor allem ärgerlich wird es, wenn man Passwordsharing vermutet.

Da muss doch irgendwo was schief laufen. Ich selbst benutze keinen Proxy, kann es vielleicht sein, dass an einer anderen Stelle - also RZ, Router oder sonstwas - an einem Proxy liegt? Aber das würde ja nicht erklären, warum sich dann die IP im Monitor nicht genauso merkwürdig ändert.
Seltsam ist auch, dass in der access_log von Apache immer dieselbe IP pro Besucher steht.
Über sachdienliche Hinweise wäre ich sehr dankbar. :)

Gruss

Daniel

  1. N'Obend

    Wird irgendein Anonymizer sein, der über ständig wechselnde Proxies Verbindungen aufbaut.

    Lustig was für Schleimspuren das in den Logs quer über die Seiten zieht :)
    Sonst aber nicht wirklich schlimm.

    Tschö,
    dbenzhuser

  2. Hi,

    !Das Phänomen: Jetzt passiert aber folgendes: Schon nach wenigen Minuten hat sich auf unerklärliche Weise die IP geändert, und es wird natürlich ein neuer Eintrag erstellt, obwohl sich eigentlich gar nichts an der Verbindung geändert hat. Und die "neue" IP ist sogar so "netzwerkfremd", dass eine Länderabfrage bei whois.ripe.net ergibt, die IP wäre zB einem italienischen Provider zugeordnet.

    Welchen Typ hat das Datenbankfeld?
    Wie wird die IP dort reingeschrieben?
    Wie wird die IP dort ausgelesen?

    Kann dabei irgendwas schiefgehen (falscher Typ, versehentliche Typkonvertierung, Auslesen der falschen Spalte, ...)?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Welchen Typ hat das Datenbankfeld?

      Der Datentyp ist VARCHAR(20), also dürfte es daran nicht liegen, zumal 20 Zeichen für die aktuelle IPv4 dicke reicht. Und es findet also auch kein Typcasting nach INT oder sonst was statt.

      Wie wird die IP dort reingeschrieben?

      Mit einem gängigen INSERT. (INSERT INTO counter (time, referal, ip...) VALUES('...'...))

      Wie wird die IP dort ausgelesen?
      Kann dabei irgendwas schiefgehen (falscher Typ, versehentliche Typkonvertierung, Auslesen der falschen Spalte, ...)?

      Ausgelesen wird mit SELECT * FROM counter ... und dann mit $OBJ = mysql_fetch_object holt und als Oject referenziert, also $OBJ->ip

      Zwischendurch dachte ich mal (gestern), das Problem hätte sich gelegt, aber kam dann nachts doch wieder. Komische Sache.

      1. Jetzt wird es ja noch seltsamer: wenn ich den Monitorbereich auch in den Counter mit einbeziehe, erscheinen auf einmal sämtliche Besucher mit meinem Benutzernamen, als ob Apache diese Variable oder prozess- bzw. thread-gebundene PHP-Variablen an sämtliche Prozesse vererben würde.

        Da _ist_ doch was faul im Staate Dänemark! (nur wo genau...) ;)

        Kann diese Vererbung vielleicht daran liegen, dass das Skript für den Counter im Stammverzeichnis liegt, also html/, und von Unterverzeichnissen included wird?
        Beispiel:
        <? // Userbereich

        if (isset($_SERVER["REMOTE_USER"])) $setUser = ", username = '".$_SERVER["REMOTE_USER"]."'"; // Wenn User geoutet ist, dann soll der Username im Counter (UPDATE) übernommen werden

        $BaseDir = "../";

        @include($BaseDir."counter.php");
        // HEADER HTML BODY etc...
        ?>

        Ich kann mir zwar nicht vorstellen, warum das der Grund sein soll, aber vielleicht weiss es ja einer besser. :)

        Was kann man denn wohl ganz ausschliessen?

        • Virus? (SuSE8.1)
        • Server bzw. Datenbank überlastet?
        • sonstiges... :D

        Soweit ich das verfolgen kann tritt das Problem nur in Bereichen auf, die mit .htaccess arbeiten. Bei Bereichen mit Logins über PHP_AUTH und SQL-Userdatenbank aber nicht. Das ist aber nicht 100%ig sicher, weil dieser Bereich nicht so stark besucht wird.