首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android上以编程方式配置VPN?

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

Stack Overflow用户
提问于 2012-05-04 15:44:02
回答 1查看 28.6K关注 0票数 37

我需要实现一个Android应用程序,允许用户配置VPN连接,而不必访问Android设备的本地菜单。对于这个问题,我有两个问题:

我发现了一个叫做VpnService的新组件,它提供了一个钩子来创建一个虚拟网络接口,配置它,并从它拦截/转发数据包到服务器,但是没有像PPTP或IPSec这样的内置

  1. 协议,只有实现它们的可能性。我的问题是,有没有现成的解决方案来使用VpnService?
  2. 在安卓的早期版本中,从我目前所发现的情况来看,使用
  3. 的唯一方法似乎是通过(使用反射)在安卓中封装一些隐藏的api来访问和配置设备的内置VPN解决方案,但这是一个繁琐的解决方案,因为设备需要根,而且隐藏的api实现可能因设备而异,也因操作系统版本而异。有没有更好的方法来编程配置底层linux操作系统的内置VPN?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,或者扩展了其功能。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10444757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档