如果没有 Android API,OpenVPN 等如何创建 VPN 连接?
How OpenVPN etc create VPN connection if there is no Android API for that?
SO 上有很多答案已经声称您不能以编程方式在 Android 设备上配置 VPN 配置文件。 Android 的 VpnService API 只允许在您自己的应用程序中使用 VPN,没有其他 API 可用。
OpenVPN Android 等应用程序如何实现这一点?我可以通过 OpenVPN 应用程序配置配置文件,其他应用程序将能够使用此连接。
您误解了 VpnService.Builder
的 establish()
方法返回的 handle/file 描述符的性质和用途。您可能想再次阅读 API 描述。
它的要点是它是一个 TUN 设备的文件描述符,Android 通过策略路由将来自其他应用程序的网络流量定向到该设备(受影响的 apps/traffic 可以通过建设者)。然后应用程序可以使用文件描述符来读取其他应用程序发送的数据包,例如通过 VPN 连接转发它们(使用常规 UDP/TCP 套接字)。通过写入 TUN 设备的文件描述符,同样可以将来自 VPN 连接的返回流量重新注入系统。
SO 上有很多答案已经声称您不能以编程方式在 Android 设备上配置 VPN 配置文件。 Android 的 VpnService API 只允许在您自己的应用程序中使用 VPN,没有其他 API 可用。
OpenVPN Android 等应用程序如何实现这一点?我可以通过 OpenVPN 应用程序配置配置文件,其他应用程序将能够使用此连接。
您误解了 VpnService.Builder
的 establish()
方法返回的 handle/file 描述符的性质和用途。您可能想再次阅读 API 描述。
它的要点是它是一个 TUN 设备的文件描述符,Android 通过策略路由将来自其他应用程序的网络流量定向到该设备(受影响的 apps/traffic 可以通过建设者)。然后应用程序可以使用文件描述符来读取其他应用程序发送的数据包,例如通过 VPN 连接转发它们(使用常规 UDP/TCP 套接字)。通过写入 TUN 设备的文件描述符,同样可以将来自 VPN 连接的返回流量重新注入系统。