Android:示例代码,使用VPNService API在Android 4.0中使用自己的VPN连接

时间:2012-11-01 12:54:07

标签: android vpn openvpn

我是Android新手,我正在尝试建立并连接到我们自己的vpn(不是默认的vpn提供商,即PPTPL2TP等,这是以编程方式出现在Android Setting -> Wireless and Networks中。

我的情况是,我有按钮,当我点击按钮时,我需要配置我自己的vpn和一个链接(比如说www.google.com)应该通过我VPN构造

是否有示例代码?

3 个答案:

答案 0 :(得分:27)

我不知道为什么我用Google搜索了一千次,但没有 github的搜索。现在寻找年龄,我终于找到了一个写得很漂亮的 。这段代码非常漂亮,很少见:

https://github.com/hexene/LocalVPN

该项目使用NDK或任何本机代码,纯粹的java,这使它成为一个简单项目的完美开始(不是它对复杂的项目不好)。工作流程非常简单:

  • 当应用程序发出出站请求(从Android操作系统请求到互联网上的某个服务器)时,请求到达LocalVPNService.class
  • LocalVPNService处调查TCP / UDP数据包并提取源IP和目标IP(Packet.class用于此目的)。
  • LocalVPNService代表启动请求的应用程序建立连接,并在新创建的连接上调用VpnService.protect()以避免循环。
  • 然后将连接传递给处理程序,这些处理程序只是在循环中从/向两个连接传递字节。 UDP / TCP In / Out的线程在不同的工作类和线程中进行管理。

正如你所看到的,己烯已经完成了所有艰苦的工作和繁重的工作。

上面引用的所有类都可以在projects目录中找到。 我快速浏览了github的源代码,这里讨论的工作流程可能不准确。

答案 1 :(得分:7)

您可以参考与您的Android SDK捆绑在一起的示例应用程序ToyVpn。所以,只需转到示例并参考该应用程序。另请参阅this

除此之外,您还可以下载Openvpn的源代码。这是

的链接

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

由于

答案 2 :(得分:3)

OpenSwan解决方案: https://wiki.strongswan.org/projects/strongswan/wiki/AndroidVPNClient

OpenVPN解决方案: https://code.google.com/p/ics-openvpn/

这两项都需要Android SDKNDK