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

2022-09-01 07:03:57

###Reference:

Android 4.0有一个API来构建VPN服务。

  1. VPNService (Android Docs)
  2. VPNService.Builder (Android Docs)
  3. Arne Schawbe's Implementation of OpenVPN for Android (github)

一个具有VPN服务的应用程序是NetMotion Mobility®(Google Play)

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

###Test 结果

(连接到 VPN)

  1. 安卓<=5.0(安卓棒棒糖)
  2. 使用 WIFI(无线局域网)和蜂窝(rmnet)接口 IP 的连接成功。
  3. 使用 VPN(tun) 接口 IP 地址连接成功,但未获取 VPN 连接/断开连接事件。
  4. 安卓> 5.0(安卓棒棒糖 5.1 和 6.0)
  5. 使用 WIFI(无线局域网)和蜂窝(rmnet)接口 IP 的连接成功。
  6. 使用 VPN(tun) 接口 IP 的地址连接成功,并且还获取 VPN 连接/断开连接事件。

调谐接口 IP:SITE local Private IP().

  1. ConnectivityManager#TYPE_VPN
  2. 网络资本#TRANSPORT_VPN
  3. 网络能力#NET_CAPABILITY_NOT_VPN

指示此网络不是 VPN。默认情况下设置此功能,应为 VPN 网络显式清除此功能。常量值:15 (0x0000000f)

###Questions:

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

答案 1

将尝试回答几个问题:

1.VPN不会影响其他应用程序流 - 它只是“虚拟”地将您的设备置于另一个网络中。例如,某些公司专用网络。这意味着通过VPN连接发送的所有请求都将转到该网络,并且该网络内部应用的所有规则/过滤器都适用于手机生成的流量 - 这可能会导致第三方应用程序出现问题。

2. 流量通过VPN连接时的真实IP地址将替换为VPN服务器分配的VPN IP地址。您连接的Web服务器将看不到您的真实IP地址;他们将看到您通过连接的VPN网络网关的IP。

5. 借助 Android 5.0 Lollipop,VPN 客户端最终可以精细控制哪些应用通过安全网络进行通信,以及哪些应用直接连接到互联网。也许这会导致问题。

对于VPN API的使用,您可以检查此项目:适用于Android的OpenVPN


答案 2