Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Erkennen ob ein Rechner "lokal" im Netz ist oder nicht? (https://www.delphipraxis.net/189485-erkennen-ob-ein-rechner-lokal-im-netz-ist-oder-nicht.html)

Bernhard Geyer 17. Jun 2016 09:55

Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Ich habe das Problem erkennen zu müssen ob eine Nutzer unterwegs ist (und sich nur lokal am Laptop identifizieren konnte bzw. maximal per VPN im Firmennetz eingewählt ist) oder ober er "richtig" im Netz hängt.

Frage ist also ob ich diesen Zustand unterscheiden kann.
Gibt es hierfür eine WinAPI oder muss ich das über "andere Infos" indirekt heraus finden?

mkinzler 17. Jun 2016 10:10

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Anhand der IP (Netz)?

nahpets 17. Jun 2016 10:32

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Mein Ansatz wäre zuerst einmal die IP des Rechners zu ermitteln.

Ist sie aus einem dieser Bereiche, so ist der Rechner (höchstwahrscheinlich) nur in einem lokalen Netz.
Code:
10.0.0.0 bis 10.255.255.255
172.16.0.0 bis 172.31.255.255
192.168.0.0 bis 192.168.255.255
Bei Problemen mit dem Netzwerk werden auch IPs aus dem Bereich 169.xxx.xxx.xxx vergeben.

Ist die IP nicht aus einem der Bereiche, so würd' ich davon ausgehen, dass er im Internet ist.

Was verstehst Du konkret unter "richtig im Netz"?
Auf irgendeine Weise Vollzugriff auf alles? Egal ob über Router, Modem ...

Dann würd' ich ein Ping auf einen Timeserver versuchen. Klapp das, so ist man im Netz.

Bernhard Geyer 17. Jun 2016 10:34

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
"Richtig im Netz" = Er sitzt an einem Arbeitsplatz auf dem Firmengelände.
Nicht richtig im Netz = Er sitzt irgendo in der Welt und hat sich evtl. per VPN ins Netz gewählt (Und sieht dort evtl. auch fast alle Ressourcen die über VPN erreichbar sind).

p80286 17. Jun 2016 10:49

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Mmm,
diese Diskussion scheint immer wieder mal hoch zu kochen. Wenn wir die ganze Philosophie weg lassen, dann scheint trace route Dein Stichwort zu sein. Zumindest das "lokale" Netz sollte den Adressen nach bekannt sein. Taucht eine oder mehrere Adressen auf die nicht zu "lokal" gehören, sollte man zweifeln.
Wenn Du richtig was verlässliches brauchst solltest Du einen Netzwerker fragen.

Gruß
K-H

mkinzler 17. Jun 2016 10:54

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Es kommt hier auch auf das/die verwendete VPN-Verfahren/Software an.

Aviator 17. Jun 2016 11:32

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Außerdem was passiert, wenn das außerhalb liegende Netz (bspw. das Heimnetz oder ein anderes Firmennetz) in das sich der Mitarbeiter "eingeloggt" hat zufälligerweise das gleiche Netz ist. Eventuell sogar mit gleichem Gateway? Wie will man das denn unterscheiden?

mkinzler 17. Jun 2016 11:35

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Das würde ja nicht funktionieren, bzw. nur mit sehr hohem Aufwand.

Caps 17. Jun 2016 11:39

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Vermutlich werden die IPs bei Euch dynamisch vergeben, oder?

Ansonsten las ich mal was über die Gruppenrichtlinie, was bei "langsamen" bs. "schnellen" Verbindungen unterschiedlich gehandhabt wird (man kann da Skripte einhängen); allerdings ist das vermutlich sehr unsicher, wenn die Geschwindigkeiten nicht weit auseinander liegen.

lg Caps

Lemmy 17. Jun 2016 11:43

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1340401)
"Richtig im Netz" = Er sitzt an einem Arbeitsplatz auf dem Firmengelände.
Nicht richtig im Netz = Er sitzt irgendo in der Welt und hat sich evtl. per VPN ins Netz gewählt (Und sieht dort evtl. auch fast alle Ressourcen die über VPN erreichbar sind).

wie wäre es einen "Ping" Dienst im Firmennetzwerk laufen zu lassen (feste IP, fester Port) und im VPN Gateway diesen Port für die externe Netze sperren. Deine Software kann dann beim Start / während der Laufzeit den Pingserver per TCPClient versuchen zu verbinden

mensch72 17. Jun 2016 11:52

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
"..."Richtig im Netz" = Er sitzt an einem Arbeitsplatz auf dem Firmengelände.
Nicht richtig im Netz = Er sitzt irgendo in der Welt und hat sich evtl. per VPN ins Netz gewählt..."

Wir nutzen für diesen Zweck die "Ping-Zeit" und die DNS Auflösungszeit, was mit sehr gut funktioniert wenn man ein normales schnelles "Hausnetz" auf dem Firmengelände hat. Extern per Remote,VPN,... ist der Zugriff langsamer und somit als solcher klassifizierbar.

WorstCase wenn es im Hausnetz mal "hängt", dann schaltet die Software eben auch intern in den Securitymode und verlangt öfters ein (spezielles) Login. Weil das wirklich selten passiert, hat sich das auch noch niemand beschwert, wenn er mal zu einer zusätzlichen Login-Eingabe aufgefordert wurde.

Vorteil des "Laufzeitverfahrens" in stbiler Referenzumgebung ist, das man es auch bidirektional durchführen und so Clientseitig(Zeitabstand Anfrage1-Antwort1) & Serverseitig(Zeitabstand Anfrage1-Anfrage2) prüfen kann.

Caps 17. Jun 2016 12:07

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Man könnte auch die gleichzeitige Verfügbarkeit eines bestimmten WLANs prüfen.

nahpets 17. Jun 2016 12:10

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1340401)
"Richtig im Netz" = Er sitzt an einem Arbeitsplatz auf dem Firmengelände.

Ok: Dann solltest Du (meines wissens nach) eine IP aus den oben genannten Blöcken am Rechner vorfinden.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1340401)
Nicht richtig im Netz = Er sitzt irgendo in der Welt und hat sich evtl. per VPN ins Netz gewählt (Und sieht dort evtl. auch fast alle Ressourcen die über VPN erreichbar sind).

Außerhalb des VPNs würd' ich hier irgendeine IP erwarten. Es kann eine beliebige IP von 'nem Provider ... sein, aber auch wiederum eine aus den obigen IP-Blöcken, da sich der Rechner ja in einem anderen Firmen- oder Heimnetz ... befinden könnte.

Innerhalb des VPNs würd' ich eine IP aus dem Firmennetz erwarten, also eigentlich den gleichen IP-Block, wie "einfach so" in der Firma.

Ok, merke gerade, mit dem was ich schreibe, läuft man nur in 'nen Kreis, es hilft nicht wirklich.

Welche Informationen hast Du für den konkreten Fall noch:

Dynamische IP?
DCHP-Server?
Anmeldeserver für 'ne Domäne?

Hier würd' ich dann für die Feststellung, ob man im Firmennetz ist, prüfen, ob diese Rechner per Ping ... erreichbar sind.
IPConfig /all auf der Kommandozeile könnte auch weitere Informationen liefern.
Die Infos kann man aber sicherlich auch über 'ner API bekommen bzw. sie stehen (teilweise) in der Registry.

Bezieht sich Deine Fragestellung auf ein konkretes Problem in einem bestimmten Firmennetz oder ist sie eher allgemein gehalten?

Handelt es sich um eine konkrete Frage für ein bestimmtes Firmennetz, dann lass Dir den IP-Bereich des Firmennetzes geben. Du musst dann "nur" prüfen, ob die IP des Rechners aus diesem Netz ist. Ist sie aus dem Netz, liegt die Vermutung nahe, dass sich der Rechner (anmeldetechnisch) im Firmennetz befindet. Über welchen Weg er da reingekommen ist, lässt sich so aber wohl eher nicht ermitteln.

In der Registry solltest Du unter
Code:
SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
etliche Informationen zum Netzwerk finden. Eventuell kannst Du da ja anmelde- bzw. standortabhängig Unterschiede feststellen, die Dir eine sichere Prüfung ermöglichen.

franktron 17. Jun 2016 13:41

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Mann könnte gucken ob die VPN Netzwerkkarte (Virtuell) eine Verbindung hat oder nicht

Dalai 17. Jun 2016 15:18

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
Ich weiß nicht, von wo aus die Prüfung stattfinden soll, von einem System/Server im LAN aus oder vom Client aus, der sich von außen einwählt. Ich denke, das wäre auch noch wichtig.

Wenn man dem Vorschlag von franktron folgt und die Prüfung via Batch/Skript stattfinden soll, könnte vielleicht netsh.exe helfen. IIRC sind die zu benutzenden Namen (z.B. "LAN-Verbindung") leider lokalisiert - typisch Microsoft eben :roll:.

MfG Dalai

Valle 17. Jun 2016 19:14

AW: Erkennen ob ein Rechner "lokal" im Netz ist oder nicht?
 
MAC-Adresse des Standardgateways?

IP-Adressen und Bereiche können sich überall überschneiden. MACs sind mehr oder weniger eindeutig. Wenn man ein VPN hat, welches allen Traffic routet, dann muss man bzgl. Standardgateway etwas aufpassen. Aber wenn du dir "route PRINT" und "arp -a" von allen möglichen Situationen anschaust, dann sollte das machbar sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz