移动应用程序中的 VPN 终止开关如何实际工作?

信息安全 网络 安卓 虚拟专用网 IOS
2021-09-09 03:52:56

据我了解,VPN 终止开关会修改路由以确保所有流量都必须通过 VPN 的隧道接口发送,否则互联网访问会受到限制。在桌面应用程序上,如何实现这一点似乎很明显,因为提供此类服务的应用程序无论如何都具有管理员权限并且可以修改路由表。

然而,当它进入移动平台时,应用程序没有这些权限,所以我对这样的终止开关如何操作感到困惑。许多 VPN 服务提供商(以 Surfshark 为例)在所有平台(包括 iOS 和 Android)上的应用程序中都支持终止开关。

在 Android 上,在 Android 8.0+ 之前甚至不可能阻止 VPN 连接之外的流量(在 7.0+ 上也可以设置永远在线选项),但这些应用程序支持 Android 5.0+。此外,此设置必须由用户手动打开,这在应用程序中不会发生。

在 iOS 上,似乎任何版本都无法使用终止开关:https : //developer.apple.com/forums/thread/113636我确实知道自 iOS 6 以来可以配置一个始终开启的设置(如 Android),即使这绝不是一个终止开关,这些应用程序可以启用这些设置吗?

我只是好奇,如果这样的应用程序没有修改路由选项的必要权限,它们如何声称可以通过终止开关来保护此类数据泄漏?在这种情况下,他们是否会使用操作系统功能(例如“始终在线”连接)并将其作为终止开关传递,因为理论上您应该始终保持连接?或者,如果检测到 IP 发生变化,他们是否真的可以在整个设备上禁用互联网?

我希望这是发布此类问题的正确位置,如果有人有任何关于这可能如何工作的详细信息,将不胜感激。

1个回答

安卓VPN API

Android 4.0(API 级别 14)引入了 VPN API,以便应用程序开发人员可以提供自己的 VPN 解决方案。AndroidVpnService将 android 系统范围的网络连接到 VPN 网关。Android 7.0(API 级别 24)在 VpnService 中引入了Always-on VPN包。永远在线的 VPN 可以阻止不使用 VPN 的连接。

VpnService 如何将 Android 网络连接到 VPN 网关

永远在线的 VPN 允许使用设备的人阻止任何不使用 VPN 的网络连接。打开此选项时,设置应用程序会在 VPN 连接之前警告人们他们没有互联网连接。设置应用程序会提示使用设备的人继续或取消。

阻塞的连接

使用该设备的人可以强制所有流量使用 VPN。系统会阻止任何不使用 VPN 的网络流量。使用该设备的人可以在“设置”的“VPN 选项”面板中找到“不使用 VPN 阻止连接”开关。

应用无需提升权限即可访问系统 API。某些 API 需要用户授权才能授予访问权限。系统 UI 还使使用设备的人知道活动的 VPN 连接。


Android 开发者 > 文档 > 指南 > VPN

Android 开发者 > 文档 > 参考 > VpnService

setAlwaysOnVpnPackage