【问题标题】:Android: Sample Code to connect to VPN in Android 4.0 using VPNService API [closed]Android:使用 VPNService API 在 Android 4.0 中连接到 VPN 的示例代码 [关闭]
【发布时间】:2012-10-22 01:36:10
【问题描述】:

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

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

有示例代码吗?

【问题讨论】:

    标签: android android-vpn-service


    【解决方案1】:

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

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

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

    谢谢

    【讨论】:

    • 感谢您的回复。我很困惑 openvpn 是否是一个 android 项目。我下载了openvpn源,但t只有c文件,我不知道如何使用t..你能解决我的疑问..提前谢谢
    • 如果你能分享一个使用 VpnServices 和 OpenVpn 的 android 项目将会很有帮助。这将帮助我理解和处理它。
    • 我六月编译了代码并在我的 android 设备中运行它。应用程序启动良好,但我不知道如何测试应用程序。是否有任何公共测试服务器和凭证来测试这个应用程序。你能分享链接吗.. 我搜索了但我找不到任何有用的东西
    • 请不要将 openvpn 的链接更改为另一个版本的 openvpn for android,该版本已不再维护。该软件的作者和我大约在同一时间发布了我们的软件。
    • 我只是说github.com/kghost/ics-openvpncode.google.com/p/ics-openvpn 是不同的项目。后者是我的项目。
    【解决方案2】:

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

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

    这两个都需要 Android SDKNDK

    【讨论】:

      【解决方案3】:

      我不知道为什么我用谷歌搜索了一千次,但没有github 的搜索。找了好久,终于找到一篇写的漂亮了。代码真的很漂亮,很少见:

      https://github.com/hexene/LocalVPN

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

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

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

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

      【讨论】:

      • 这是否意味着您需要在互联网上使用真正的 vpn 服务器?如果我理解正确是因为 android 提供了隧道,那么 localvpn 会看到所有流量吗?如果我想简单地解析传入的 tcp 连接怎么办?
      • @narb 如果我没记错的话,不,你不需要VPN服务器,我也用它来解析数据包。当数据包到达时,它们只是被发送到目的地。
      • 差不多一年前 :) 感谢您的回答。我将尝试使用 loadvpn 代码,但必须使用 vpn api 来解析包是很奇怪的。有一个像 api 这样的 pcap 会更好。
      • 它也支持openvpn吗?
      • @AhmadShahwaiz 它不支持任何东西。它只是为安卓 VPN 的界面提供了一个更好、更简单的 java-ish 界面。你最终得到的是一些原始的字节包。您可以做任何您喜欢的事情,例如将它们发送到 OpenVPN(在实现 OpenVPN 的接口之后)
      猜你喜欢
      • 2017-11-09
      • 2012-04-30
      • 2012-08-20
      • 2012-07-21
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多