it-swarm.com.de

Android: Beispielcode für die Verwendung einer eigenen VPN-Verbindung in Android 4.0 mit VPNService API

Ich bin neu in Android und ich versuche, eine Verbindung zu unseren eigenen vpn aufzubauen und herzustellen (nicht die standardmäßigen vpn Anbieter, dh PPTP , L2TP Etc was im Android Setting -> Wireless and Networks) Programmatisch vorhanden ist.

Mein Szenario ist, dass ich eine Schaltfläche habe und wenn ich auf die Schaltfläche klicke, die ich zum Konfigurieren meines eigenen vpn benötige, sollte ein Link (z. B. www.google.com) die von mir konfigurierte VPN durchlaufen .

Gibt es einen Beispielcode?

19
Sudarshan

Ich weiß nicht, warum ich tausendmal gegoogelt habe, habe aber nicht githubs Suche. Auf der Suche nach Ewigkeiten habe ich endlich eine geschrieben gefunden wunderschön. Der Code ist buchstäblich schön, was selten vorkommt:

https://github.com/hexene/LocalVPN

Das Projekt verwendet nicht NDK oder einen nativen Code, nur Java, was es zu einem perfekten Start für ein einfaches Projekt macht (nicht, dass es für ein komplexes nicht gut ist). Und der Workflow ist ganz einfach:

  • Wenn eine App eine ausgehende Anfrage stellt (Anfrage von Android an einen Server im Internet), kommt die Anfrage an LocalVPNService.class
  • Bei LocalVPNService wird das TCP/UDP-Paket untersucht und Quell- und Ziel-IP werden extrahiert (Packet.class Wird dafür verwendet).
  • Der LocalVPNService stellt eine Verbindung im Namen der App her, die die Anforderung startet, und ruft VpnService.protect() für neu erstellte Verbindungen auf, um Schleifen zu vermeiden.
  • Die Verbindungen werden dann an Handler übergeben, die einfach Bytes von/an die beiden Verbindungen in einer Schleife übergeben. Die Threads für UDP/TCP In/Out werden in verschiedenen Arbeiterklassen und Threads verwaltet.

Wie Sie sehen können, hat Hexen die ganze harte Arbeit und das schwere Heben bereits erledigt.

Alle oben genannten Klassen befinden sich im Projektverzeichnis. Ich hatte einen kurzen Blick in den Quellcode von Github, der hier diskutierte Workflow ist möglicherweise nicht korrekt.

32
hkoosha

Sie können auf die Beispielanwendung ToyVpn verweisen, die mit Ihrem Android= SDK mitgeliefert wurde. Gehen Sie also einfach zu Beispielen und beziehen Sie sich auf diese Anwendung. Siehe auch this

Zusätzlich können Sie den Quellcode von Openvpn herunterladen. Hier ist der Link dazu

https://github.com/kghost/ics-openvpn

Vielen Dank

8
Juned
4
gunwin