![]() |
Einfache VPN Verbindung
Hallo, ich benutze Delphi XE Starter. Ich bin auf der suche nach einer möglichkeit, einen simplen Client VPN zu schreiben ohne dabei auf Windows oder OpenVPN zurückgreifen zu müssen. Die Server-Software spielt eigentlich keine Rolle. Ich besitze einen Linux Root Server. Sie sollte nur kostenfrei sein.
Ich möchte jetzt aus meinen Programm heraus eine Verbindung zu diesem VPN Server herstellen, ohne dabei auf externe Programme zurückgreifen zu müssen. Eine Verschlüsselung spielt hierbei keine Rolle. Die VPN Verbindung dient nur dazu, ein bestimmtes Spiel Netzwerkfähig zu machen. (Ich weiß das es genug alternativen gibt, aber mit Hamachi haben wir des öfteren Probleme und Tunngle finden die Spieler nicht so toll. Gibt es da eine möglichkeit? Freigaben und Internet Traffic sollen dabei nicht übertragen werden, lediglich der Traffic für Netzwerk Spiele. |
AW: Einfache VPN Verbindung
Warum nicht nur ein Rad sondern ein ganzes Auto neu erfinden?
VPN ohne Verschlüsselung? |
AW: Einfache VPN Verbindung
Möglichkeiten gibt es da schon. Aber nicht mit Delphi. Du musst dafür letztlich ein virtuelles Netzwerk-Gerät erstellen, und das geht nur mit einem Treiber. Und Treiber kann man in Delphi nicht wirklich sinnvoll schreiben (erst recht keine für 64bit Systeme). Und dann kommt da noch der ganze Quark von Netzwerk-Know-How an sich dazu, weil Du ja den Traffic dynamisch woanders hin routen musst. Das ist ein Projekt das Jahre an Zeit verschlingen wird.
|
AW: Einfache VPN Verbindung
Gibt es da nicht irgentwie eine möglichkeit das über PPTP zu machen, aber eben ohne das eine Verbindung vom Benutzer erstellt werden muss?
|
AW: Einfache VPN Verbindung
Dann noch ein Hinweis von meiner Seite: Du spielst da dann an der Kernel-Routing-Tabelle rum, sodass der komplette Traffic, der sonst über eth0/wlan0 (die Netzwerkkarte eben) Richtung Router und dann ab ins Internet geht, über dein Programm laufen muss. Gleichzeitig darf sich dein Programm aber nicht an eben diese Tabelle halten, denn sonst käme nirgendwo was an. (Für den erstgenannten Vorgang brauchst du Admin-Rechte).
Was du jetzt machen kannst (das sollte relativ einfach sein) ist: Du kannst eine Windows-VPN-Verbindung von deinem Programm automatisch anlegen lassen und dann diese zur Verbindung bringen (k.A. welche Schwierigkeiten dir MS da auf den Weg legen wird). So musst du nicht an deiner virtuellen Netzwerkkarte tüfteln und hättest trotzdem das Ziel erfüllt. Bernhard PS: Für die API müsstest du dann jetzt die Suche verwenden. |
AW: Einfache VPN Verbindung
Zitat:
Wenn ja und es gibt die Files auch für Linux dann knall das Spiel da drauf! Wenn nicht hat sich dies ja meistens schon erledigt! Warum, wenn das Spiel nur läuft, wenn es ein user startet(selber spieler ist) und dann jemanden einladen muss, kannst du nichts machen! Dann ist es also nicht selbst lauffähig, wo man sich mal schnell einklingt um zu Spielen! Ala COD4 ET WOW usw. Alles andere währe viel zu aufwendig! finde ich. alfold |
AW: Einfache VPN Verbindung
Das Spiel ist Netzwerklauffähig, hat aber eben keinen Stand Alone Server. Wir haben das bisher immer über Hamachi gemacht. Leider gab es vermehrt Probleme.
Einen PPTP Server kann ich schnell aufsetzen, jedoch sind die meisten Nutzer überfordert beim einrichten (trotz Video anleitung Step by Step), daher will ich ein Programm basteln das diesen Vorgang automatisiert. |
AW: Einfache VPN Verbindung
Zitat:
![]() Siehe auch ![]() Ob das mit PPTP funzt, hängt allerdings davon ab was das Spiel genau benutzt. Bei TCP-Verbindungen sollte es aber bei den meisten VPN-Lösungen kein Problem gehen. Benutzt du UDP oder so, wird's u.U. schon schwieriger. |
AW: Einfache VPN Verbindung
Zitat:
Und da das Spiel dummerweise ein Windowspiel ist gehts auch damit nicht Zitat:
mh... ob Du da nun was aufwendiges selber schreibst, damit es deine Feunde autmomatisch einrichten/einloggen können. Wird nicht einfach!:gruebel: um HAMACHI nachzubauen. alfold |
AW: Einfache VPN Verbindung
"Einfach" und "VPN Verbindung" ist ein Widerspruch in sich.
Ein VPN ist sehr schwierig zu implementieren. Wenn es einfach werden soll bräuchte man eine völlig neue Architektur von Betriebssystem. Ein Betriebssystem in dem die Anwendungen nicht einfach so auf die Windows API zugreifen, sondern beim Start der Anwendung eine ganze Liste von Schnittstellen mitbekommt. Eine Anwendung braucht z.B. Schnittstellen zur Tastatur, Maus, Grafikkarte, Netzwerk, Audio, Filesystem und Registry. So könnte z.B. eine Anwendung "A" eine Anwendung "B" starten und ihr ein Filesystem vorgaukeln, dass es physikalisch gar nicht gibt. Da Gleiche wäre auch für den Netzwerkzugriff möglich. Anwendung "B" denkt es gäbe eine Netzwerkkarte, aber in Wirklichkeit wird diese nur von Anwendung "A" vorgespiegelt. Das wäre ähnlich wie bei einer virtuellen Maschine, nur dass hier feingranular geregelt wird, was virtuell ist und was nicht. |
AW: Einfache VPN Verbindung
Zitat:
Zitat:
Wovon du redest ist (u.a.) exakt der Sprung von den alten DOS-Spielen in denen man Soundblaster mit Port und IRQ einstellen muß (oder ein Dutzend anderer Soundkarten) zu den strukturierten Schnittstellen die bspw. DirectX bot als es eingeführt wurde. Wozu du nun das Dateisystem und die Registry mit Hardware in einen Topf wirfst ist mir ohnehin ein Rätsel, aber selbst da hast du auf vielen Systemen eine Lösung bereits eingebaut. Die Lektüre von ![]() Zitat:
Und selbst wenn es das auf OS-Ebene nicht gibt, kann man noch immer den Kindprozeß so kontrollieren daß man dessen Funktionen und ihre Verwendung hookt (auch auf den meisten unixoiden hat der Elternprozeß komplette Kontrolle über Kindprozesse). Zitat:
Zitat:
Es wäre schlimm, wenn Anwendung B sich auf die Ebene begeben müßte, wo sie auch noch die Netzwerkkarte kennen muß welche von Anwendung A bereitgestellt wird - wenn wir mal für einen Moment diese Idee mitdenken. Der Sinn eines VPN ist ja gerade, daß alle Anwendungen transparent Zugriff darauf haben ohne sich um die Details zu kümmern. Selbst wenn du eine beliebige netzwerkfähige Anwendung schreibst, mußt du dich in den seltensten Fällen mit den Details der Hardware auseinandersetzen ... Zitat:
![]() |
AW: Einfache VPN Verbindung
Also irgendwie hast du mich missverstanden oder ich habe es nicht genau genug erklärt was ich meine.
Ich nehme als Beispiel WinSock mit den handlebasierten Funktionen (connect, listen, bind, socket, usw.). Eine Anwendung, die diese Funktionen aufruft landet in den DLLs des Betriebssystem. Ja klar es gibt Möglichkeiten um Hooks oder LSPs in WinSock einzuschieben, aber das ist recht aufwendig. Jetzt stelle man sich vor, WinSock würde durch ein Interface ersetzt werden:
Delphi-Quellcode:
Die Anwendung bekommt schon beim Start einen Interfacezeiger übergeben.
IWinSock2=Interface(IUnknown)
['xxxx-....xxxx'] function connect(...); function listen(...); .... end; Anstatt die WinSock-DLL zuladen, wird einfach nur dieses Interface benützt (vereinfacht, wir brauchen mehrere Interfaces). Die Anwendung funktioniert genau gleich wie vorher, nur mit dem Unterschied, dass das Betriebssystem seine API-Dienste anbietet anstatt dass die Anwendung festgelegte APIs aufruft. siehe: ![]() Jetzt kommt eine weitere Host-Anwendung, die genau das Interface implementiert und alle Aufrufe zunächst einmal 1:1 an das Interface, das sie seinerseits bekommen hat weiterreicht. Würde nun diese Host-Anwendung eine andere Anwendung starten, dann würde sie sämtliche WinSock-Aufrufe mitbekommen. Jetzt wäre es ein Leichtes, wenn die Host-Anwendung alle Netzwerkaufrufe tunneln würde. Somit wurde die WinSock-API virtualisiert, weil die ursprüngliche Anwendung gar nicht merkt, dass seine Aufrufe abgefangen und verändert werden. Dieses Prinzip könnte man auch auf viele andere APIs anwenden und so viele APIs des Betriebssystem virtualisieren. So könnte man z.B. die API für die serielle Schnittstelle über ein Netzwerk umleiten. Dinge, die bisher nur über Systemtreiber möglich sind, könnten so dem Anwendungsprogrammierer zugänglich werden. Oder man denke nur an Softwaretests und die Möglichkeiten einfach so Mock-Objekte für Windows-API-Aufrufe zu erstellen. Würde es dieses utopische Betriebssystem geben, dann wäre es einfach, alles mögliche umzuleiten und zu verändern. Der Trend geht ganz klar in Richtung Virtualisierung und so darf ruhig ein bisschen darüber nachdenken was denn wäre, wenn alle APIs virtuell wären. (und ohne virtuelle Pflänzchen gleich argumentativ niederzuknüppeln) |
AW: Einfache VPN Verbindung
@RedShakal
Vielleicht bringt es Dir was? ![]() was hälts Du hier von ![]() Ach so, den wolltest du ja selberschreiben. Ob das dann allerdings so funktioniert, Spiel ist bei dir auf deinem Rechner und nun müssen sich alle irgendwie auf den entferten vpnserver einklinken mh... Bin ich echt überfragt! alfold |
AW: Einfache VPN Verbindung
Das Ziel ist es doch eigentlich auf "Knopfdruck" einen VPN-Tunnel herzustellen, ohne das der User - da meist sehr unbedarft - irgendwelche Konfigurationen vornehmen muss.
Somit benötigt er wohl ein Progrämmle, dass auf einem Windows-Rechner eine VPN-Verbindung bei Bedarf erzeugt und dann auch noch startet. (So etwas hat auch die Firma LANCOM mit ihrem VPN-Client gebaut. Das ist lediglich ein Wrapper um die Einrichtung der VPN-Verbindung auf ein Minimum an Benutzer-Eingaben zu reduzieren) Ich vermute mal nicht, dass es hier um die Entwicklung eines Treibers oder Protokolls geht sondern eher darum was Assarbad hier schon aufgezeigt hat: Zitat:
|
AW: Einfache VPN Verbindung
Zitat:
Zitat:
Zitat:
Hab ich es richtig verstanden? Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ich werf ja auch nicht überall ein: "Ach ja, Okapis sehen süß aus", nur weil jemand "API" verwendet und diese Buchstabenkombination im "Okapi" vorkommt. Ähnlich beliebig kommt mir deine Vorstellung von von Virtualisierung bei Erwähnung von "Virtual Private Network" vor. |
AW: Einfache VPN Verbindung
Ich möchte mich erstmal für die ganzen Antworten bedanken. Zugegeben war ich beim lesen doch etwas überfordert:-D
Den oben gezeigten PopTop Server habe ich schon eingerichtet das ist kein Problem. Der VPN selber funktioniert auch Problemlos. Ebenso das Spiel wenn ich über die VPN spiele. Das einzige Problem das sich auftut ist einfach nur, das die meisten Nutzer einfach überfordert sind die Verbindung einzurichten. Und die, die es hinbekommen, meckern dann das sie kein Internet mehr haben weil sie vergessen haben den haken beim default Gateway rauszunehmen. Die Verschlüsselung muss ja auch nicht vorhanden sein - warum auch, es wird lediglich der Traffic von dem Spiel übertagen, keine sensiblen Daten oder ähnliches. Wie ich mir das vorgestellt hatte war einfach ein kleines Programm, das geöffnet wird, sich mit den VPN nach eingabe der Logindaten verbindet, und im Programm selbst den aktuellen Status anzeigt. Ich habe mir jetzt mal die RasDial Funktion näher angeschaut. Am Wochenende werde ich mich nochmals Intensiv damit befassen. Allerdings habe ich die befürchtung das auf Vista / 7 das ganze nicht klappen wird, wegen den Admin rechten. (Oder was mir auch oft passiert, das der Virenscanner anschlägt). |
AW: Einfache VPN Verbindung
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz