Android OpenVPN连接

时间:2015-07-29 09:45:22

标签: java android sdk vpn openvpn

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

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

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

2 个答案:

答案 0 :(得分:4)

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

对于一个类似VPN的解决方案,您可能更擅长使用SOCKS / HTTP代理等库。

答案 1 :(得分:1)

您需要使用VpnService来创建OpenVPN应用程序,该应用程序将ovpn文件作为客户端配置的输入,如OpenVPN Connect。所以任何人都可以根据自己的需要改变配置。此外,您必须为OpenVPN配置服务器。使用AWS EC2或任何其他服务器。在服务器端follow this link上配置VPN时。