如何在Android和可用的API列表工作的VPN? (棒糖)

参考:

Android 4.0有一个API来构buildVPN服务。

  1. VPNService(Android文档)
  2. VPNService.Builder(Android文档)
  3. Arne Schawbe为Android实现OpenVPN(github)

一个这样的VPN服务应用是NetMotionMobility®(Google Play)

从“棒棒糖”版本开始,Android提供了一种新的VPNtypes,提供关于VPN连接状态的信息,请求是否通过VPN等。

检测结果

(连接到VPN)

  1. Android <= 5.0(Android棒棒糖)
    1. WIFI(Wlan)和Cellular(rmnet)接口IP连接成功。
    2. VPN(tun)接口IP地址连接成功,但不会获得VPN连接/断开事件。
  2. Android> 5.0(Android Lollipop 5.1和6.0)
    1. 无线(Wlan)和蜂窝(rmnet)接口IP连接不成功。
    2. VPN(Tun)接口IP的地址连接成功,并且还可以获得VPN连接/断开事件。

tun接口IP: SITE本地私人IP()。

  1. ConnectivityManager#TYPE_VPN
  2. NetworkCapabilites#TRANSPORT_VPN
  3. NetworkCapabilities#NET_CAPABILITY_NOT_VPN

表示此networking不是VPN。 此function默认设置,应明确清除VPNnetworking。 常量值:15(0x0000000f)

问题:

  1. 当设备上的VPN服务处于活动状态时,WhatsApp,Skype或浏览器等第三方应用程序的请求是如何工作的?
  2. VPN连接到设备IP堆栈时发生了什么?
  3. Android隧道如何工作?
  4. 什么是绑定到活动IP和发送请求的应用程序的devise?
  5. 棒棒糖(5.0)中的VPN API是否不稳定?
  6. 如果bindProcessToNetwork通过Celluarnetworking完成,WiFi连接到设备,VPN将使用哪个networking?

Solutions Collecting From Web of "如何在Android和可用的API列表工作的VPN? (棒糖)"

将尝试回答几个问题:

1 。 VPN不会影响其他应用程序stream – 它只是“虚拟”将您的设备放置在另一个networking中。 例如一些公司的专用networking。 这意味着通过VPN连接发送的所有请求都将转到该networking,并且在该networking中应用的所有规则/filter都适用于通过电话生成的stream量 – 这可能会导致第三方应用出现问题。

2 。 stream量通过VPN连接时的实际IP地址被VPN服务器分配的VPN IP地址替代。 您连接的Web服务器将不会看到您的真实IP地址; 他们会看到您连接的VPN网关的IP。

5 。 借助Android 5.0 Lollipop,VPN客户端终于可以精确地控制哪些应用程序通过安全networking进行通信,以及哪些应用程序可以直接连接到Internet。 也许这会造成问题。

对于VPN API的使用你可以检查这个项目: Android的OpenVPN