我需要实现一个Android应用程序,允许用户配置VPN连接,而不必访问Android设备的本地菜单。对于这个问题,我有两个问题:
我发现了一个叫做VpnService的新组件,它提供了一个钩子来创建一个虚拟网络接口,配置它,并从它拦截/转发数据包到服务器,但是没有像PPTP或IPSec这样的内置
发布于 2012-12-04 08:24:28
1)我不知道任何针对Android4.xICS VpnService的开源PPTP或IPSec实现。VpnService设计用于创建自定义协议的虚拟专用网应用程序(理论上可以是pptp或IPSec)。我发现的唯一利用这个新应用程序接口的开源实现是针对OpenVPN的:
https://github.com/schwabe/ics-openvpn
这提供了一个您完全可以控制的潜在虚拟专用网解决方案(服务器也是开源的),但它不是PPTP或IPSec。如果您了解PPTP协议,应该可以将其用作实现此类VPN客户端的模型。
2)是的,在早期版本中,唯一的方法是通过私有接口。事实上,即使您想在以后的版本中使用内置的VPN支持(即内置的PPTP或IPSec支持),您也必须利用这些隐藏的API。也许可以使用底层的linux内核在较低的级别上实现这一点,但这将需要在操作系统上建立根并绕过Android应用程序范例。与使用私有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 profile对象示例,需要传入接口)
How to programmatically create a new VPN interface with Android 4.0? (说明如何在系统上存储此新的VPN配置文件)
我不确定这些API的一致性和可靠性。我希望它们能在大多数Android设备上工作,因为供应商不太可能重新实现基本的VPN实现,尽管他们可能已经添加了自己的VPN实现。他们还可能更改了启用此类配置文件所需的API,或者扩展了其功能。
https://stackoverflow.com/questions/10444757
复制相似问题