Ping bei No-IP Adresse immer erfolgreich

  • PHP

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von GCAsk.

    Ping bei No-IP Adresse immer erfolgreich

    Guten Tag,

    zur Anzeige des Status von zwei Servern nutze ich ein kleines Skript, welches prüft, ob die Seiten und damit der Server online sind.
    Der Hauptserver kann zwar theoretisch als offline angezeigt werden, praktisch könnte man dann aber natürlich nicht die Seite aufrufen.
    Der zweite Server hingegen allerdings schon, dieser kann offline sein, dennoch ist die Seite weiterhin erreichbar.

    Das Problem ist, dass der 2.Server über eine No-Ip Domain läuft, welches dynamisch die IP abruft.
    Auch wenn der Server nicht erreichbar ist, wird er als online angezeigt.

    Rufe ich die Domain im Browser auf, kriege ich aber einen Timeout.

    Woran kann das liegen?
    "Online Website Checker" erkennen die Webseite auch als online ?( Auch die dort ermittelte IP ist falsch, irgendwas mit 8.bla, stattdessen müsste sie aber 79.bla lauten.

    Kann ich vielleicht irgendwie vorher die "richtige" IP ermitteln, auf die umgeleitet wird?

    Mono schrieb:

    Die IP wird vom DNS angefragt. Wohin auch immer dieser zeigt, dorthin wird der Ping gesendet.

    Hm. Die No-IP Domain leitet aber auf 79.X...:8080 weiter.
    Überprüfe ich jetzt die Domain wird sie mir wie gesagt immer als online angezeigt, auch wenn ich den Server ausschalte.
    Gebe ich allerdings die richtige IP (79.X...:8080 )ein, auf die weitergeleitet wird, so wird dieser ,wenn er aus ist, auch als offline angezeigt.

    Irgendwie wird also die falsche IP übergeben

    Mono schrieb:

    Wie prüfst du denn ob der Server online ist?


    Mit cUrl.

    PHP-Quellcode

    1. function isSiteAvailable($url){
    2. //Verbindungsaufbau
    3. $cl = curl_init($url);
    4. curl_setopt($cl,CURLOPT_CONNECTTIMEOUT,10);
    5. curl_setopt($cl,CURLOPT_HEADER,true);
    6. curl_setopt($cl,CURLOPT_NOBODY,true);
    7. curl_setopt($cl,CURLOPT_RETURNTRANSFER,true);
    8. //Antwort erhalten für Server
    9. $response = curl_exec($cl);
    10. curl_close($cl);
    11. if ($response) return "text-success'></i>Server: Online";
    12. return "text-danger'></i>Server: Offline";
    13. }
    14. $response = isSiteAvailable('http://domain.de');
    Wie bereits gesagt. Der Ablauf ist:
    DNS anfragen -> IP erhalten->Verbindungsaufbau zur IP

    Die IP wird vermutlich die eines Servers sein, der entsprechend die Anfragen dann auf deinen Server weiterleitet.
    Das ist meine Signatur und sie wird wunderbar sein!

    Mono schrieb:

    Wie bereits gesagt. Der Ablauf ist:
    DNS anfragen -> IP erhalten->Verbindungsaufbau zur IP

    Die IP wird vermutlich die eines Servers sein, der entsprechend die Anfragen dann auf deinen Server weiterleitet.

    Hm ok, na tolle Wurst..

    Und ich kann nicht irgendwie die Ausgabe der richtigen IP vom Serverumleiter abfangen, damit ich diese prüfen kann? Schließlich ändert sich die "richtige" IP ständig, daher auch die noip Domain

    Mono schrieb:

    Das ist nur eine Vermutung. Frag doch mal mit zB Nsnlookup die Domain ab und schau, was für eine IP du bekommst.

    Auch Nsnlookup spuckt mir 8.x.. aus, es müsste aber 79.x... lauten, auf die umgeleitet wird. Deswegen wird sie auch fälschlicherweise als online immer angezeigt
    So, habe mal ein wenig rumexperimentiert. Auch mittels der PHP-Funktion gethostbyname() erhalte ich diese falsche IP 8.irgendwas anstelle von 79. irgendwas.

    Nach weiterem rumexperimentieren habe ich es allerdings geschafft, die richtige IP herauszufiltern. Und zwar mit $_SERVER[HTTP_HOST], welches auf dem richtigen Server per echo ausgegeben wird. Damit erhalte ich direkt die IP, da wenn ich die Domain eingebe, er automatisch die IP anzeigt im Browser. Jetzt habe ich mir überlegt, den String, den mir die Seite zurückgibt, einfach beim Serverstatus auszulesen, um auf diese Weise zu ermitteln, ob die Seite online ist. Würde die ermittelte IP in eine DB einspeichern und diese alle paar Stunden erneut abrufen, da sie sich ja ändern kann.
    Nun habe ich allerdings öfter gelesen, dass $_SERVER[HTTP_HOST] unsicher sei, stimmt dies? Ich meine, gerade weil ich das ja in die DB abspeicher, will ich kein Risiko eingehen.