我刚刚从 iOS 切换到 Android,发现随着 Android 12 的发布,Google 取消了对 L2TP VPN 协议的支持。我一直在寻找仍然支持 L2TP 的第三方 VPN 应用程序,但没有找到任何选项。
根据我的理解,L2TP是第2层协议。 Android 是否限制对较低网络层的访问,导致开发人员在第三方应用程序中实现 L2TP VPN 在技术上变得困难? Android 网络堆栈中是否存在阻止这种情况发生的特定限制?
Android 的安全模型使得实施 VPN 更具挑战性。核心问题是 VPN 实现(通常)需要能够以明文形式查看其他应用程序的数据包,以便将它们加密和/或封装到 VPN 中。在 Linux 上,root 或内核可以轻松完成此操作,但在 Android 上,普通应用程序不会获得任何特殊的 root 权限。
Google 预见到了这个问题,并创建了一个用于实施 VPN 的 API。 请参阅:https://developer.android.com/develop/connectivity/vpn
所以,是的,现在第 3 方 VPN 可以作为可安装的应用程序提供,如果您愿意,您可以自己开发一个。
据我了解,L2TP是第2层协议...
它是在 IP/UDP 上运行的第 4 层[-ish] 协议。它主要用于隧道 PPP,这是一种 L2[-ish] 协议。 PPP 本身主要用于 IP(通过其 IPCP 子层),但 PPP 过去也用于其他事物的隧道传输。作为历史记录,除了 PPP(IP -> PPP -> L2TP -> UDP -> IP)之外,一些供应商和运营商实际上还使用 L2TP 直接建立以太网隧道(以太网 -> L2TP -> UDP -> IP)。
因此,实际上,Android 问题并不是真正涉及访问较低层(L2TP 会像任何 IP/UDP 应用程序一样出现),而是能够作为 VPN 插入 Android 以便访问数据包来自想要使用隧道的应用程序。我上面链接的 API 解决了这个问题。