我正在开发一个Android应用程序,并希望它连接到OpenVPN服务器.
自Android 4.0以来,有一个VPNService类.但是,该类需要拦截所有网络数据包(并需要特殊权限),因为它在Internet协议上运行.但据我所知,OpenVPN运行在TCP或UDP之上(我的服务器配置为使用UDP).我只需要通过VPN隧道从我自己的应用程序隧道传输流量.
>理论上不应该避免这种情况(因为我不需要拦截所有流量,而只需要拦截针对我的应用程序的UDP-OpenVPN数据包)?
>你知道一个满足我需求的Android库吗?
>如果没有,是否可以在Android上安装OpenVPN协议而不需要VPNService类?
我找到了follwing project: ics-openvpn.但是它也使用了VPNService类并拦截了所有的包.
解决方法:
当然,理论上你可以在应用程序的用户空间/内部进行UDP / OpenVPN.但是您需要在应用程序内部实现整个TCP / IP,因为您需要模拟整个VPN堆栈.
对于一个类似VPN的解决方案,您可能更好地使用SOCKS / HTTP代理等库.