• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Rechnernamen des Clients ermitteln

fauxxami

New member
Moin zusammen,

zunächst mal weiß ich gar nicht, ob meine Anfrage im richtigen Forum gelandet ist, aber JavaScript erschien mir naheliegend zu sein ...

Ich möchte in einer Webseite den Rechnernamen des zugreifenden Client ausgeben. Leider weiß ich nicht, wie ich den zuverlässig ermittle. Die zugreifenden Clients sitzen ausnahmslos in einem LAN, in dem es keinen dedizierten Nameserver gibt. Mit PHP-Mitteln klappt das nicht zuverlässig:

$rechnername = gethostbyaddr($_SERVER['REMOTE_ADDR']);

verrät den Client-Namen nur manchmal. Es muss aber eine zuverlässige Lösung geben, denn z.B. die Gerätelisten der WLAN-Router (z.B. Fritz!Box) enthalten immer alle Rechnernamen. Damit habe ich herumgetestet: meine Fritz!Box weiß auch dann, wie mein Rechner wirklich heißt, wenn der o.a. PHP-Befehl in meiner Seite nur eine IP-Adresse zurückliefert. Ich habe schon alle JavaScripts, die auf der Fritz!Box laufen, gecheckt, aber ich finde den Trick nicht.

Zu meiner Umgebung: der Webserver, auf dem die Seite läuft, ist ein Apache unter Linux. Somit steht mir u.a. PHP zur Verfügung. JavaScript nebst JQuery gibt es auch.

Kann jemand helfen?

Danke und viele Grüße,

fauxxami
 
An den Client wirst du da nur schwer herankommen. Wenn geht das nur im IE über Active X und vbscript.
 
Regelt bei der virtuellen Maschine solche Netzwerksachen nicht das Virtualisierungssystem selbst? Das könnte den Unterschied vielleicht erklären.
 
dein server ist aber in deinem lan-segment?

Ja, alle beteiligten Rechner befinden sich im selben LAN-Segment. Getestet habe ich mittlerweile Folgendes:

- MacBook -> Rechnername wird geliefert

- virtuelle Windows-7-Maschine liefert

- reale Windows-7-Maschine liefert nicht

- iPhone und iPad liefern nicht

- Linux-Maschine liefert nicht.

ABER: sowohl in meinem Speedport-LTE-Router als auch in meiner Fritz!Box tauchen ALLE Rechnernamen korrekt auf, egal welches BS, egal ob virtuelle oder reale Maschine. Wie machen die das bloß?

Gruß, fauxxami
 
und was sagt nbtstat -A DEINE_IP

Ich nehme an, 'nbtstat' ist ein Linux-Binary. Leider kenne ich das nicht, dafür aber 'nbtscan':

nbtscan is a program for scanning IP networks for NetBIOS name information.

Das wäre ja genau das, was ich will, aber: auch dieses Programm liefert Rechnernamen nur in den Fällen, in denen 'gethostbyaddr' auch liefert. Insbesondere gibt es auch bei dem Versuch, die reale Windows-Maschine zu scannen, kein Ergebnis.
 
nbtstat ist das windowsoriginal. führe das mal auf dem rechner aus, auf dem es nicht geht und auf einem anderen, mit der ip der rechners, der nicht immer liefert

Ah, ok, danke. Das habe ich mit folgendem Ergebnis gemacht: ausgeführt auf dem Rechner, der keinen Namen verrät, mit der eigenen IP-Adresse liefert den Rechnernamen. Es funktioniert auch, wenn ich auf der realen Windows-Maschine die virtuelle Maschine über's Netz scanne - ich sehe dann den Rechnernamen der VM. Umgekehrt, also nbtstat auf der VM mit der IP-Adresse des anderen Windows-Rechners ausgeführt liefert immer noch kein Ergebnis.

Das ist irgendwie unbefriedigend.
 
Ein Router ist auch keine x-beliebige Webseite...

Erstens: was soll mir dieser Satz (vor allem in Bezug auf meine Frage) sagen? Zweitens: natürlich ist die Weboberfläche eine x-beliebige Webseite, im Falle des Speedports mit ein wenig ASP und viel JavaScript zusammengestöpselt. Das ist ja kein Hexenwerk. Drittens: dass hinter der Firmware eines Routers ein speziell angepasstes Linux steckt, ist mir auch klar. Von daher steht der Firmware natürlich alles zur Verfügung, was es unter Linux an Netzwerkwerkzeugen so gibt. ABER: irgendwie muss der Router die Clients doch dazu bringen, ihre Rechnernamen zu verraten - über eine entsprechende Netzwerkanfrage. Und da mein Webserver ebenfalls unter Linux läuft, hätte ich diese Werkzeuge also auch. Von daher ist der Hinweis auf "nbtscan" (bzw. "nbtstat") ja schon mal gut. In dieser Hinsicht kam ich gerade übrigens einen Schritt weiter:

Ich habe mir mal die reale Windows-Maschine vorgeknöpft und gesehen, dass (aus welchem Grund auch immer) das lokale Netzwerk als "Öffentliches Netzwerk" konfiguriert war. Seitdem ich das auf "Heimnetzwerk" umgestellt habe, liefert auch diese Maschine ihren Namen. Damit fehlen mir nur noch iOS-Geräte zum Glück (sowie eine Erklärung dafür, wie die Router das auch ohne diese Umstellung schaffen), aber das ist erst mal nicht so wichtig.

Danke für's Mitdenken!
 
Zuletzt bearbeitet:
Erstens: was soll mir dieser Satz (vor allem in Bezug auf meine Frage) sagen?
dass ein router ein stück hardware mit eigener software ist.

Zweitens: natürlich ist die Weboberfläche eine x-beliebige Webseite, im Falle des Speedports mit ein wenig ASP und viel JavaScript zusammengestöpselt.
mit der man problemlos über weitere softwareschichten alle möglichen abfragen machen kann, bis runter auf ethernet niveau.

Drittens: dass hinter der Firmware eines Routers ein speziell angepasstes Linux steckt, ist mir auch klar. Von daher steht der Firmware natürlich alles zur Verfügung, was es unter Linux an Netzwerkwerkzeugen so gibt. ABER: irgendwie muss der Router die Clients doch dazu bringen, ihre Rechnernamen zu verraten - über eine entsprechende Netzwerkanfrage.
vermutlich

Und da mein Webserver ebenfalls unter Linux läuft, hätte ich diese Werkzeuge also auch.
vermutlich, nicht zwingend
 
Ich denke mal, dass die Fritzbox im Zuge des Aufbauens der WLAN-Verbindung den Rechnernamen bekommt und diesen dann speichert. Die Weboberfläche wird das einfach abfragen und nicht da jedesmal neu abfragen.

Dass dein Rechnername nicht öffentlich einsehbar ist, ist ja auch so gewollt, wenn du dich in einem öffentlichen (W)LAN befindest. Wäre ja ein riesiges Datenschutzproblem.
 
Ich denke mal, dass die Fritzbox im Zuge des Aufbauens der WLAN-Verbindung den Rechnernamen bekommt und diesen dann speichert. Die Weboberfläche wird das einfach abfragen und nicht da jedesmal neu abfragen.

Das könnte natürlich sein, das ist ein guter Gedanke, dem ich mal nachgehen werde.

Dass dein Rechnername nicht öffentlich einsehbar ist, ist ja auch so gewollt, wenn du dich in einem öffentlichen (W)LAN befindest. Wäre ja ein riesiges Datenschutzproblem.

Da hast du völlig recht, aber: ich befinde mich ja in meinem eigenen, von mir kontrollierten LAN. Insofern ergibt die Konfiguration des Netzwerks als "öffentlich" ja gar keinen Sinn; warum das bei diesem einen Rechner so war, kann ich nicht nachvollziehen und bin auch nur mehr oder weniger per Zufall drauf gestoßen.

Und dies noch zum Abschluss, weil die Thematik damit für mich endgültig unüberschaubar wird: ich befinde mich mit meinem MacBook (auf dem auch meine Entwicklungsumgebung in einer virtuellen Linux-Maschine läuft) gerade in einem anderen LAN bei Freunden. Spaßeshalber habe ich meine Webseite gerade noch mal mit meinem iPhone aufgerufen und siehe da, wo zu Hause nur die IP-Adresse erscheint, steht hier plötzlich der korrekte Name des iPhones in meiner Liste. Das verstehe, wer will.
 
Spaßeshalber habe ich meine Webseite gerade noch mal mit meinem iPhone aufgerufen und siehe da, wo zu Hause nur die IP-Adresse erscheint, steht hier plötzlich der korrekte Name des iPhones in meiner Liste.
Vielleicht hast du in deinem iPhone auch irgendwo eingestellt, dass dein Netz zu Hause "öffentlich" ist...
 
Zurück
Oben