java - Android OpenVPN 连接

标签 java android sdk vpn openvpn

我正在开发 Android 应用程序并希望它连接到 OpenVPN 服务器。 自 Android 4.0 以来,有一个 VPNService类(class)。然而,此类需要拦截所有网络数据包(并需要特殊权限),因为它显然是在 Internet 协议(protocol)上运行。但是据我所知,OpenVPN 运行在 TCP 或 UDP 之上(我的服务器配置为使用 UDP)。我只需要通过 VPN 隧道传输来 self 自己的应用程序的流量。

  • 理论上是否应该可以避免这种情况(因为我不需要拦截所有流量,而只需拦截针对我的应用程序的 UDP-OpenVPN 数据包)?
  • 您知道满足我需求的 Android 库吗?
  • 如果不是,是否可以在不需要 VPNService 的情况下在 UDP 之上的 Android 中实现 OpenVPN 协议(protocol)?上课?

我找到了 follwing project: ics-openvpn .但是它也使用 VPNService类并拦截所有包。

最佳答案

当然,您可以理论上在用户空间/您的应用内执行 UDP/OpenVPN。但是您需要在您的应用程序中实现整个 TCP/IP,因为您需要模拟整个 VPN 堆栈。

对于类似解决方案的单应用 VPN,您可能最好使用 SOCKS/HTTP 代理等库。

关于java - Android OpenVPN 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696827/

相关文章:

java - 搜索一个属性String类型,一些带有hql的字符用于hibernate

android - Cordova 应用程序已在 Android 模拟器中停止问题

java - 大疆桥应用程序?

java - 如何隐藏密码第一提示

iphone sdk tabbar 查看 socket 未设置

java - Spring 框架: correct way to handle multiple requestmappings with different pathvariables

java - 提高性能一致性的方法

java - 如何使实现多个接口(interface)的 Java 类更易于阅读

android - fragment 中的 MergeAdapter 布局问题

java - 有没有办法在 android studio 中更新 listView 项目布局?