Hallo, hab folgendes Problem: ich würde gerne einen virtuellen Netzwerkadapter mit C softwaremäßig implementieren. Ich hab irgendwo gelesen, dass es möglich ist, Daten von einem virtuellen Netzwerkadapter mithilfe einer VPN-Software zu verschlüsseln und einer physikalischen Netzwerkkarte zu übergeben. Hat jemand Erfahrung wie eine solche VPN-Software aufgebaut ist, bzw. Ideen wie man sowas programmieren könnte? Mein Ziel ist es IP-Pakete zu verschicken ohne Ethernet-Rahmen, sondern mit einem eigenen Schicht 2-Rahmen/Protokoll. Könnte das vlt. auch mit WinSock funktionieren bzw. mit einer Open-Socket-Programmieren (gibt es sowas?) Vlt. auch eine Art Windows-/Linus-Treiber-Programmierung? Über Ideen und Anregungen wäre ich sehr erfreut;) Schönes WE euch!
Vielen Dank erstmal. Ich werd zunächst mal sehen, ob das was für mich ist;) Grüße
Ist sowas vlt. auch unter Windows möglich? Die Hardware, die ich verwende, verwendet wiederum Windows-kompatible Software bzw. Quellcode der nur Windows-spezifisch ist (Zum Beispiel wird die WinAPI teilw. verwendet). Kann mir da jmd. helfen? Vielen Dank
Iceman schrieb: > Mein Ziel ist es IP-Pakete zu > verschicken ohne Ethernet-Rahmen, sondern mit einem eigenen Schicht > 2-Rahmen/Protokoll. > [...] Linus [...] Unter Linux gibts tun/tap, damit kannst Du virtuelle Netzwerkadapter erzeugen, die Daten landen dann in Deinem Programm. Handhabung ist einfach, Dokumentation in den Manual Pages ausreichend. Wird IIRR von manchen VPN-Implementierungen verwendet. Stephan
Danke Stephan für die Info;) Ich muss mich nochmal in meiner Fragestellung korrigieren. Es spielt bei meiner Übertragung keine Rolle, ob es sich um IP-Pakete handelt. Die Technologie sollte jedoch kompatibel zu Ethernet (802.3 oder 802.11) sein. Dazu müsste ich dann das TAP verwenden. Kannst du OpenVPN empfehlen? Da soll das tun/tap schon dabei sein? Viele Grüße
Iceman schrieb: > Dazu müsste ich dann das TAP verwenden. Jup. > Kannst du OpenVPN empfehlen? Da > soll das tun/tap schon dabei sein? "tun/tap schon dabei sein" schön&gut, OpenVPN ist ja auch nur ne Software für einen gaaanz besonderen Zweck. Das heisst: - Hinter "tun"/"tap" verstecken sich im Prinzip Treiber, die der Linux-Kernel zur Verfügung stellt. Was Du/er/sie/es damit anfänsgt bleibt Dir/ihm/ihr/ihnen überlassen. - OpenVPN nutzt tap zur Übertragung von Datenpaketen gemäß des GRE-Protokolls. Das ist eine mögliche Anwendung des tap-Devices. Wie auch immer man griffig auf Deutsch sagen würde, im englischen hiesse es in etwa "OpenVPN complements the kernel-side tap device with user-space functionality to build up a virtual private network between two (or more) peers". (Das Wort des Tages ist hier `complements'). Sprich: tap ist ein generischer (d.h. allgemein verwendbarer kernelseitiger Gerätetreiber) und OpenVPN eine Userspace-Anwendung, die dieses Gerät in spezieller Weise benutzt und dabei auf ganz bestimmten Semantiken dieses Gerätes aufbaut. In diesem Sinne bietet tap nur eine (von vielen) Möglichkeiten, quasi beliebige Datenpakete zu übertragen; tap ist halt IIRR auf Ethernet-Frames als Layer-X-Protokoll festgenagelt. Wie das ganze unter Windows aussieht? Bestimmt ganz anders, keine Ahnung :-) Stephan
Auf youtube habe ich das Sample geholt. einfach in youtube nach Winsocket suchen. Gruss Holger.
Auf youtube habe ich das Sample geholt. einfach in youtube nach Winsocket suchen. Gruss Holger.
Warum geht der Anhang nicht. lvjlej clödfvlkdfjvljlvje Immer nach der Vorschau ist der Anhang weg.
Hallo Stephan, das Winsock Beispiel konnt ich problemlos runterladen;) Danke dafür. Allerdings wird mir das wahrscheinlilch nicht so sehr weiterhelfen, wenn ich doch unter Linux den virtuellen Netzwerkadapter programmiere... Ich werd mal sehen wie sich das entwickelt. Hast du noch Infos/Tools/Literatur über die tun/tap Geschichte, die mir weiterhelfen könnten? Danke im Voraus Gruss
OpenVPN nutzt unter Windows ebenfalls tun/tap und bringt passenderweise den entsprechenden virtuellen Netzwerkkartentreiber TAP-Win32 gleich selbst mit. Und dank Open Source kann man sich den dann auch noch im Quellcode anschauen. Der Urahn von TAP-Win32 war wohl Cipe: http://cipe-linux.sourceforge.net http://cipe-win32.sourceforge.net http://de.wikipedia.org/wiki/TUN/TAP http://en.wikipedia.org/wiki/TUN/TAP
Hallo zusammen, Ich bin beim stöbern auf diesen Thread gestoßen und habe eigentlich ein ganz ähnliches Problem wie Iceman. Um das Problem zu verdeutlichen habe ich schon mal ein Blockbild angehangen. Ich möchte ebenfalls über Ethernet/IP von außen auf ein privates (drahtloses) Netzwerk mit eigenem Protokollstapel zugreifen. Dieses Netzwerk ist per USB-Adapter mit meinem Rechner (Linux) verbunden. Über ein zu erstellendes C-Programm soll nun eine Kommunikation zwischen eigenem drahtlosen Netzwerk und dem virtuellen Netzwerkadapter (VTUN) hergestellt werden (Übergabe der Nutzdaten, Hinzufügen/Entfernen der entsprechen Header etc.). Meine Fragen sind nun eigentlich, ob dieser Denkansatz und die Verwendung eines virtuellen Netzwerkadapters richtig ist, und ob die Kommunikation und das Weiterleiten der Pakete zwischen virtueller und realer Netzwerkkarte automatisch (durch den Kernel oder VTun?!) übernommen wird? Vielen Dank schon mal.
Christoph P. schrieb: > ob die > Kommunikation und das Weiterleiten der Pakete zwischen virtueller und > realer Netzwerkkarte automatisch (durch den Kernel oder VTun?!) > übernommen wird? Ja, müssen halt entsprechende Routes, NAT rules, etc eingestellt sein. Christoph P. schrieb: > ob dieser Denkansatz und die > Verwendung eines virtuellen Netzwerkadapters richtig ist Eigentlich nicht. Was du willst ist eigentlich ein Kernel-Treiber der dein USB-Gerät als Netzwerk-Device verfügbar macht. Dein Ansatz kopiert die Daten erstmal über Tun/Tap vom Kernel- in den Userspace, nur damit der "Treiber" dort es wieder zurück, über die USB-Devicenodes, in den Kernel-Space verschiebt. Wenn du das USB-Device selber entwickelst: Mal an CDC-Ethernet gedacht?
Hallo Ernst und danke erstmal für die aufschlussreiche Antwort. Ich hatte im Grunde auch schon die Ahnung, dass mein Weg etwas umständlich ist und es evtl. andere Umsetzungsmöglichkeiten gibt. CDC Ethernet kannte ich noch nicht, werde ich mir am Montag aber gleichmal genauer anschauen und mich dann zur gegebenen Zeit zurückmelden. Schönes Wochenende noch!
Hallo, Ich habe mir CDC Ethernet mal angeschaut. Da es eigentlich nicht angedacht ist, die USB-Firmware bzw. den Stack anzupassen (und um CDC Ethernet zu erweitern), ist das wohl nicht ganz der passende Ansatzpunkt. Zweite Idee war folgende: Zwar kann ich wohl auch von Haus aus dem Linux-Kernel sagen, dass er meinem USB-Gerät eine IP-Adresse geben soll und als Netzwerkgerät einhängt, müsste dann aber auch in diesem Fall wieder die Geräte-Firmware um einen IP-Stack erweitern. Hm, da beißt sich die Katze wohl ein bisschen in den Schwanz. Gibt es keine reine PC-seitige Softwarelösung?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.