gpt4 book ai didi

android - 如何在 Android 上以编程方式配置 VPN?

转载 作者:IT老高 更新时间:2023-10-28 21:49:24 24 4
gpt4 key购买 nike

我需要实现一个 Android 应用程序,该应用程序允许用户配置 VPN 连接,而无需访问 Android 设备的 native 菜单。有了这个我有两个问题:

  1. 在 Android 4.0 +(api 级别 14 及更高版本)中,我发现有一个名为 VpnService 的新组件,它提供了一个用于创建虚拟网络接口(interface)、配置它以及从它拦截/转发包到 VPN 的钩子(Hook)服务器,但没有像 PPTP 或 IPSec 这样的内置 vpn 协议(protocol),只有实现它们的可能性。我的问题是是否有任何现成的解决方案可以让 PPTP 和 IPSec 与 VpnService 一起使用?

  2. 在 Android 的早期版本中,从我目前的发现来看,使用 VPN 的唯一方法似乎是通过包装(使用反射)一些隐藏的 API 来访问和配置设备的内置 vpn 解决方案在 android 中,但这是一个繁琐的解决方案,因为设备需要 Root ,隐藏的 api 实现也可能因设备和操作系统版本而异。有没有更好的方法以编程方式配置底层 linux 操作系统的内置 VPN?

最佳答案

1) 我不知道 Android 4.x ICS VpnService 的任何开源 PPTP 或 IPSec 实现。 VpnService 旨在创建自定义协议(protocol) VPN 应用程序(理论上可以是 pptp 或 IPSec)。我发现利用这个新 API 的唯一开源实现是 OpenVPN:

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

这提供了一种潜在的 VPN 解决方案,您可以完全控制(服务器也是开源的),但它不是 PPTP 或 IPSec。如果你了解 PPTP 协议(protocol),应该可以以此为模型来实现这样的 VPN 客户端。

2) 是的,确实在早期版本中,唯一的方法是通过私有(private) API。事实上,即使你想在以后的版本中使用内置的 VPN 支持(即内置的 PPTP 或 IPSec 支持),你也必须利用这些隐藏的 API。也许可以使用底层的 linux 内核在较低级别执行此操作,但这需要 root 操作系统并绕过 Android 应用程序范例。这不一定是使用私有(private) API 的更好选择。

有关如何使用这些 API 配置 VPN 的一些信息:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/net/vpn/PptpProfile.java(PPTP 配置文件对象的示例,需要传递到 API)

How to programmatically create a new VPN interface with Android 4.0? (解释如何在系统上存储这个新的 VPN 配置文件)

我不确定这些 API 的一致性和可靠性如何。我希望它们能够在大多数 Android 设备上工作,因为供应商不太可能重新实现基本的 VPN 实现,尽管他们可能已经添加了自己的。他们还可能更改了启用此类配置文件所需的 API,或扩展了其功能。

关于android - 如何在 Android 上以编程方式配置 VPN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com