App Proxy Provider 和 Packet Tunnel Provider 之间的区别

Difference between App Proxy Provider and Packet Tunnel Provider

我正在阅读 App Proxy Provider and the Packet Tunnel Provider 的文档,有点困惑。

文档指出数据包隧道提供商发送和接收数据包 from/to 系统,而应用程序代理提供商 send/receive 流向 to/from 系统。

我似乎无法理解的是数据包隧道提供程序文档中的以下句子:

Packet tunnel providers can run in destination IP mode or source-application mode. The latter is one form of per-app VPN (the other form is an App Proxy Provider).

但是在 NETunnelProvider class 它说:

The default is NETunnelProviderRoutingMethodDestinationIP.

所以默认情况下,Packet Tunnel Provider 实际上是一个 App Proxy Provider?我错过了什么?有人可以解释一下他们的区别吗?

AppProxy 和 PacketTunnel 是实现 VPN 的选项。

AppProxy 与所谓的 Flow objects 一起工作,每个流都由某个应用程序启动。 AppProxy 接收 流并将其转发到某个地方。

PacketTunnel 处理数据包。它 接收 数据包并可以在它进入网络之前对其进行一些处理(例如,修改)。

现在,可能给您带来麻烦的文档部分与以下问题有关:AppProxy 和 PacketTunnel 接收 的 flows/packets 究竟是做什么的?

AppProxy:

The NEAppProxyProvider class provides access to flows of network data in the form of NEAppProxyFlow objects. Each NEAppProxyFlow object corresponds to a socket opened by an app that matches the app rules specified in the current App Proxy configuration.

这意味着,您将让所有符合您的规则的流首先进入您的 class 方法,然后路由到某个新地址。

数据包隧道:

Packet tunnel providers can run in destination IP mode or source-application mode.

这意味着,您可以设置规则,例如“每个数据包去往,我希望您通过我的 class 方法然后进入隧道”- 这将是目标 IP 模式。

或者你可以设置这样的规则“所有来自应用程序的包ID为com.my.app的数据包现在先进入我的class方法然后进入隧道”这是source-application模式.

这(PacketTunnelProvider 的源应用模式)是per-app VPN 形式之一,因为它专注于产生流量的应用。

AppProxy 也专注于产生流量的应用程序,因此它是 per-app VPN 的另一种形式,但它会给你 object 应用程序产生的流量,而不是带有 ip 和tcp/udp headers.