Frage

kann ich, dass viel von Programmen wie OpenVPN und Teamviewer für ihre VPN-Verbindung sehen creat eine virtuelle Netzwerkverbindung an den Fenstern. Ich möchte für Testzwecke einen für mich schaffen.

Ist es möglich, eine programmatisch zu erstellen oder so?

War es hilfreich?

Lösung

Es klingt wie Sie für die Tap-Win32-Treiber suchen. Es ist der Treiber OpenVPN unter Windows verwendet die virtuelle Schnittstelle, die Sie sehen, und in der Tat ein Teil von das OpenVPN-Paket . Dieses Subsystem ist auch auf vielen * nixes.

Die Schnittstelle zu diesem TAP-Treiber ist in etwa gleich auf allen Betriebssystemen. Sie öffnen eine spezielle Datei, und schreiben rohes Ethernet-Frames auf diese Datei. Der Treiber fügt dann diesen Rahmen in die virtuelle Schnittstelle. Im Gegensatz dazu, wird alle Pakete, die auf der virtuellen Schnittstelle übertragen werden, können von der speziellen Datei als Ausgang Ethernet-Frames gelesen werden.

Die meisten Implementierungen auch eine TUN-Modus haben, die auf der Schicht arbeitet 3 statt Schicht 2. Sie werden also rawIP liest, IPv6, usw. Pakete anstelle von Ethernet-Frames.

Ich habe keine Erfahrung mit diesem auf Windows, so dass ich durch schnelles Abschöpfen des Quellcodes hier gehe. OpenVPN geht durch die meisten dieser Schritte in tun.c Funktion open_tun. Sie werden mehrere Definitionen dieser Funktion zu finden, aber sie sind # ifdef'd für verschiedene Betriebssysteme (so die Suche nach Createfile). Der einfachste Weg, dies unter Windows zu arbeiten scheint, ist:

  1. Bevor eine Anwendung einen TAP-Schnittstelle Betrieb gestartet wird, eine oder mehr virtuellen Schnittstellen sind bereits erstellt (vom Installateur?). Diese Schnittstellen beginnen getrennt.
  2. Ihre Anwendung gestartet und hat einen speziellen Aufruf Create auf „\\. \ Global \ GUID.tap“. Wo GUID durch den GUID ersetzt, die die spezifische virtuelle Schnittstelle beschreibt. Virtuelle Schnittstellen kann im Registrierungsschlüssel wiederholt werden, die als ADAPTER_KEY in „tap-win32 \ common.h“ in dem OpenVPN-Quellcode definiert ist.
  3. Ihre Anwendung kann einige DeviceIoControl Anrufe durchführen. OpenVPN verwendet diese ein paar Mal die Treiberversion zu erhalten, erhalten MTU, setzen TUN-Modus und andere misc Dinge.
  4. An diesem Punkt wird die Schnittstelle zeigt wahrscheinlich als verbunden in Windows, und Sie könnten sogar DHCP-Anfragen werden Lesen Sie von Windows sind Empfangen sich bereits. OpenVPN geht durch eine große Menge an Tamtam die Schnittstelle mit anderen Teilen des Windows-Netzwerk-APIs zu konfigurieren, aber dies ist für die TAP-Treiber nicht spezifisch.

Während also die API ist wirklich nur eine spezielle Datei und somit recht einfach, es gibt eine Menge, um die Schnittstelle tatsächlich zu verwalten. Aber wenn Sie nur in es für die Prüfung sind, kann dies gut genug sein. Anschließend können Sie Ihre Testschnittstelle in Windows manuell konfigurieren.

Andere Tipps

MSDN Ras Dial Funktion

Dies könnte ein Schritt in der richtigen Richtung sein?

Auf der Seite:

  

Der Remote Access Service (RAS) unterstützt Virtual Private Network (VPN) zusätzlich zu den konventionellen RAS-Verbindungen, die Point-to-Point Protocol (PPP) verwenden. In einer VPN-Verbindung werden die VPN-Pakete in IP-Pakete eingekapselt und über ein IP-Netzwerk wie das Internet gesendet werden. Daher ist der Zugang zu einem IP-Netzwerk ist eine Voraussetzung, um eine VPN-Verbindung herzustellen. Wenn der Client-Computer verfügt über eine ständige Verbindung zu einem IP-Netzwerk, beispielsweise eine Verbindung zu einem IP-LAN, kann der Client die VPN-Verbindung mit einem einzigen Aufruf an die RasDial Funktion einzurichten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top