24

我是 android 新手,我正在尝试以编程方式建立并连接到我们自己的(不是Android 中存在vpn的默认vpn提供程序,即PPTP,等)。L2TPSetting -> Wireless and Networks

我的情况是,我有按钮,当我单击按钮时,我需要配置自己的按钮,vpn并且链接(比如 www.google.com)应该通过VPN我配置的链接。

有没有示例代码?

4

3 回答 3

41

我不知道为什么我google了上千次,但没有github的搜索。找了好久,终于找到一篇写得很漂亮的。该代码实际上很漂亮,这是很少见的:

https://github.com/hexene/LocalVPN

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

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

如您所见,己烯已经完成了所有艰苦的工作和繁重的工作。

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

于 2016-04-09T15:26:19.170 回答
8

您可以参考与您的 android SDK 捆绑在一起的示例应用程序 ToyVpn。因此,只需查看示例并参考该应用程序。另请参阅

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

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

谢谢

于 2012-11-01T13:15:22.733 回答
4

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

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

这两个都需要 Android SDKNDK

于 2014-10-28T19:24:40.627 回答