IP Abfrage

G.P.

Legendäres Mitglied
Ich moechte ein ganz einfaches Script welches vorgegebene IPs anpingt und eine Ausgabe macht, ob diese IP Online ist oder nicht.

Leider habe ich das Problem, das anscheinend einige Firewalls wie ZoneAlarm die Ping Antwort blockieren.

Hat jemand eine Idee wie ich jetzt ueberpruefen kann, ob die entsprechende IP online ist?

MfG
GP
 
Wenn das Script clientseitig von verschiedenen Leuten genutzt werden soll, dann müssen diese ihre Firewall entsprechend konfigurieren.

Wenn Ping auf dem Webserver geblockt wird, dann nutzt das nichts. Sprich: Das führt in einigen Fällen zu falschen Ergebnissen.

Pinge mal server-daten.de / 80.237.183.228 an. Da geht das nicht - weil eine Firewall Pinganfragen gar nicht bis zum Server durchläßt. Trotzdem läuft auf der IP der Webserver - http://80.237.183.228/ - das produziert zwar einen 410, aber der ist beabsichtigt
tongue.gif


Sprich: Der Server läuft, der Client ist korrekt konfiguriert (Firewall ist frei) - aber das Script wird fälschlich 'nicht erreichbar' melden.
 
Gibt es denn keine Moeglichkeit das "Online sein" einer IP abzufragen, ohne das jeder Teilnehmende Client seinen Firewall neu Konfigurieren muss?

MfG
GP
 
QUOTE (G.P. @ So 30.12.2007, 17:40)ohne das jeder Teilnehmende Client seinen Firewall neu Konfigurieren muss?

Es ist eines der wesentlichen Prinzipien von Firewalls, alles zu verbieten / zu unterbinden, was nicht explizit erlaubt ist. Wer also eine ordentlich konfigurierte Firewall hat, der muß das natürlich explizit freischalten.

Und ein Webserver muß auf eine Ping-Anfrage überhaupt nicht reagieren. Das kann eine Firewall vor dem Webserver abblocken (wie bei server-daten), man kann das aber auch direkt ausschalten. Bei server-daten ist das nicht abgeschaltet, weil es an einer Stelle für die Kommunikation zwischen Webserver und Datenbankserver benötigt wird. Aber nach außen wird das geblockt, weil ein Webserver, der nicht auf Ping reagiert, eher von weiteren Störversuchen unbehelligt bleibt (obwohl das eigentlich unlogisch ist).
 
Also ich weis jetzt nicht genau, was du machen willst deshalb hier mal ein anderer Lösungsansatz (kannst so feststellen, ob die httpd Anfragen funktionieren).
Wenn es dein Server ist, lad doch einfach eine Grafik hoch und hole Sie per PHP mit get runter so oft du willst (kann z.B. 1 Pixel sein)... ist der Server nicht da, kommt keine Grafik rein > Alarm
Sollte nicht schwer zu realisieren sein und funktioniert z.B. bei fast jedem Webspaceanbieter
wink.gif


Gruss Marc
 
Hallo,

danke fuer den Vorschlag.
Allerdings will ich nicht einen Server abfragen, sondern private Clients.
Daher geht das leider nicht.

MfG
GP
 
Ich hätte auch auf ARP getippt. Das geht auf die MAC-Adresse
wink.gif

Mit einem ARP-Request geben alle Clients Antwort, welche erreichbar sind.
 
Wo willst du denn das PHP-Script laufen lassen? Bei dir lokal?

Du kannst keine internen Clients von extern anpingen (da sie im Normalfall nur eine gemeinsame ext. IP haben), ich hoffe du bist dir dessen bewusst!

Ich weis nicht, ob ein ARP-Request mit PHP machbar (ich weis nicht einmal, wie mit PHP gepingt werden kann) ist, aber ich würde es wohl mit C# lösen.

Im übrigen: Der Ausdruck "online" ist in deinem Fall nicht ganz korrekt, denn online heisst mit dem Internet verbunden und dann müsstest du ja nur das Modem überwachen. Wenn ich dich richtig verstanden habe geht es um "im Netz erreichbar oder eingeschaltet".
 
Es kann sein das ich mich flasch ausgedrueckt habe, daher noch einmal genauer.

Ich moechte auf einen externen Server ein Skript laufen lassen, welches ueberprueft ob bestimmte Nutzer mit einer bestimmen IP Online sind (also mit dem Internet verbunden sind)

Es handelt sich dabei nicht um ein Lokales Netzwerk.

MfG
GP
 
Dann kannst du ja einfach die externe IP-Adresse anpingen (die vom Modem). Aber den Client selber kannst du nicht anpingen. Da müsstest du schon einen eigen Dienst haben, der unter einem eigenen Port läuft ... Naja, viel zu kompliziert
wink.gif


Vielleicht hilft dir dyndns?
 
QUOTE (G.P. @ So 30.12.2007, 19:50)Ich moechte auf einen externen Server ein Skript laufen lassen, welches ueberprueft ob bestimmte Nutzer mit einer bestimmen IP Online sind (also mit dem Internet verbunden sind)

Wenn die Nutzer entweder den Dienst nicht laufen haben (also überhaupt nicht auf Ping reagieren) oder eine Firewall nutzen, die das unterbindet, dann geht das nicht.

In heutigen Zeiten kommt noch dazu: Wenn jemand einen Router (bsp. in Kombination mit DSL 16.000) nutzt, dann fängt das in der Regel bereits der Router ab, das Ping-Paket kommt gar nicht bis zum Rechner.

Ich habe aktuell die IP 87.162.99.63 (ändert sich in der Nacht), Web- und Datenbankserver haben die IPs 80.237.183.228 bzw. 80.237.183.226.

Wenn ich vom Webserver her meine aktuelle IP anpinge, kommt eine Zeitüberschreitung, ebenso umgekehrt von meinem PC auf Web- bzw. DbServer, trotzdem läuft auf dem Webserver der Http-Dienst und ist erreichbar (siehe Link unten Online-Kalender).

Pingt einfach einmal die drei Nummern an - es geht nicht, wenn ich es nicht explizit zulasse. Der Webserver kann natürlich den DbServer anpingen und umgekehrt - die Dienste laufen.

Und einen Dienst, der - analog zum Http-Dienst - auf jedem Rechner läuft und von außen her zugänglich ist, so daß man diesen per Telnet abfragen könnte, den gibt es glücklicherweise nicht.

Wenn sich die Nutzer einloggen müssen, kannst Du allerdings diesen Status in der Db speichern und ausgeben. Nach einer halben Stunde Inaktivität oder einer expliziten Abmeldung gilt dann der Nutzer als offline, genauer geht das auf diesem Level nicht.
 
Zurück
Oben