我正在开发 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/