跳到主要内容

配置按 App VPN

部署 Apple 的 com.apple.vpn.managed.applayer 载荷并设置 ProviderType=packet-tunnel,这样 Apple 就会选出来自指定 App 的流量,再由 Vylos 通过 WireGuard 承载这些流量。

提供程序范围

Vylos 通过 WireGuard 数据包隧道提供程序支持 AppLayerVPN。Vylos 不包含 App Proxy、IPsec 或 IKEv2 提供程序。

选择 ProviderType=app-proxy 的描述文件需要另一种 VPN 实现方式,Vylos 不支持这种配置。

部署步骤

  1. 按照使用 .mobileconfig 描述文件部署中的说明创建 AppLayerVPN 数据包隧道描述文件。
  2. 为描述文件设置唯一的 VPNUUID;如果希望指定 App 产生网络流量时自动启动隧道,请启用 OnDemandMatchAppEnabled。
  3. 通过 MDM 下发 VPN 描述文件,或在测试时直接安装。
  4. 使用 MDM 将每个目标 App 安装为受管理 App,并为它分配相同的 VPNUUID。
  5. 打开 Vylos,确认受管理隧道显示为 按 App,并列出预期的 App 标识符。
  6. 打开一个已分配的 App,确认它的流量通过 WireGuard,而未分配的 App 仍在隧道之外。

直接安装描述文件可以创建 VPN 条目,但只有 MDM 才能创建用于生产环境的 App 分配关系。

各部分的职责

  • 配置描述文件通过 MDM 或直接安装 .mobileconfig 文件来安装 AppLayerVPN 隧道。
  • MDM将描述文件的 VPNUUID 分配给受管理 App,并负责替换或移除这些分配关系。仅直接安装描述文件无法创建用于生产环境的 App 与 VPN 映射。
  • Apple 操作系统创建来源 App 规则,判断 App 和域名是否匹配,按需启动隧道,并且只将匹配的流量发送给提供程序。
  • Vylos将该 VPN 显示为由描述文件控制的只读受管理隧道,并通过 WireGuard 承载其流量。
  • WireGuard 服务器看到的仍是普通 WireGuard 数据包,不需要专为 AppLayerVPN 实现服务器功能。

在匹配流量到达 Vylos 之前,操作系统已经应用了 App 分配规则。这个路由选择会自动完成,WireGuard 服务器配置与设备范围隧道所用的配置相同。

Vylos 不会创建、编辑或移除用于生产环境的 App 映射。AppLayerVPN 隧道也不会出现在 Siri 快捷指令中,因为它们的生命周期由 MDM 和 Apple 的“设置”管理。

Vylos 中显示的内容

每个隧道详情页面都有一个只读的 App 路由部分:

  • AppLayerVPN 隧道显示 按 App,并列出 Apple 为 MDM 所分配 App 报告的签名标识符。如果规则包含目标筛选条件,Vylos 还会列出匹配域名。由于 Apple 不一定提供每个 App 的显示名称,com.example.corporate-app 之类的标识符可能会按原样显示。
  • 常规的目标 IP 数据包隧道显示 设备范围和 所有 App。这表示符合条件的设备流量会遵循该隧道的路由,而不是表示 Vylos 检查或列举了所有正在运行的 App。
常规受管理 VPN 的详情页面;App 路由显示为设备范围和所有 App
AppLayerVPN 详情页面;按 App 路由列出了已分配 App 的标识符和匹配域名

对于设备范围 VPN,Apple 的数据包隧道 API 不会提供可靠的逐进程列表。因此,Vylos 无法显示当前有哪些 App 正在使用普通 VPN,也不会根据流量计数器推测这类列表。

支持的数据包隧道功能

Vylos 的数据包隧道路由支持以下 AppLayerVPN 功能:

  • MDM 受管理 App 的 VPNUUID 关联。
  • 当已分配的 App 开始网络通信时,通过 OnDemandMatchAppEnabled 自动激活隧道。
  • 由 Apple 操作系统提供的来源 App 路由。
  • AssociatedDomains、ExcludedDomains 和 SafariDomains,但须符合 Apple 的平台及域名关联要求。
  • Apple 在相应平台上提供的 SMBDomains 及特定服务的域名字段。
  • 用于指示操作系统在何种情况下让匹配 App 绕过隧道的“断开连接”按需规则。
  • 对最终生成的受管理隧道,Vylos 提供只读状态、当前 WireGuard 握手、流量计数器、带宽历史记录、日志及通知名称。
  • 操作系统报告的只读 App 签名标识符和匹配域名。

Apple 会在数据包到达 Vylos 之前判断 App 和域名规则。因此,这些描述文件字段仍由 MDM 控制,不会显示为可在 Vylos 中编辑的按需规则。

创建 VPN 描述文件

按照 .mobileconfig 描述文件参考页面创建 AppLayerVPN 载荷。Vylos 的提供程序标识符、VPNUUID、WireGuard 配置传输方式及完整描述文件示例均以该页面为准。

如果希望已分配 App 的流量自动启动隧道,请将 OnDemandMatchAppEnabled 设为 true。

OnDemandMatchAppEnabled 可以保证自动激活,但不能保证 iOS 在已分配的 App 关闭后立即断开隧道。系统可能会保持隧道连接以便再次使用,但 App 规则仍会限制哪些 App 可以通过它发送流量。

匹配的“断开连接”按需规则控制相应网络条件下的绕过行为。

分配 App

iOS、iPadOS 和 visionOS

将每个目标 App 安装为受管理 App,并为它分配 AppLayerVPN 载荷所用的同一个 VPNUUID。操作系统会为每个匹配的受管理 App 分配关系创建一条 App 规则。

Safari 是一种特殊情况:Apple 使用 SafariDomains 选择通过隧道访问的网站。通用映射无法让所有 Apple 系统 App 都通过按 App VPN。

替换或移除分配关系

在 iOS、iPadOS 和 visionOS 上,App 与 VPN 的关系是一个受管理 App 属性,与 AppLayerVPN 配置描述文件彼此独立。因此,仅替换或移除 VPN 描述文件不会清除 App 现有的 VPNUUID 关系。

分配关系发生变化时,MDM 服务必须更新目标 App 的 ApplicationAttributes,使旧的 VPNUUID 不再存在。如果 MDM 控制台显示分配已移除,但 Vylos 仍列出该 App,请重新发送或更新该受管理 App 的安装或配置分配。

不同 MDM 产品可能将这个操作标为 重新安装、更新或重新发送安装命令。不要仅仅为了隐藏过时的 App 规则而移除 VPN 描述文件。

Vylos 显示的是操作系统当前报告的规则。只有当 Apple 移除受管理 App 属性以及由此生成的 App 规则后,才会显示 未分配 App。

如果 MDM 服务提供 Apple 的 ManagedApplicationAttributes 查询,管理员可以用它来确认设备是否仍为该 App 报告 VPNUUID。

macOS

将 com.apple.vpn.managed.appmapping 载荷与 AppLayerVPN 载荷一并部署。每个映射都需要提供目标 App 的软件包标识符、签名标识符、指定要求以及匹配的 VPNUUID。

如果只想让某个 App 启动的特定辅助工具使用 VPN,可以使用可选的 MatchTools 数组。例如,管理员可以映射由“终端”启动且已签名的命令行工具,而无需映射“终端”的所有连接。

不支持的提供程序类型

Vylos 不支持 ProviderType=app-proxy,因为它需要单独的流转发提供程序和服务器。Vylos 改为通过 ProviderType=packet-tunnel 承载 WireGuard IP 数据包。

Vylos 也不提供 Apple 内建的 IPsec 或 IKEv2 实现。这些协议的描述文件使用操作系统内建的 VPN 提供程序,而不是 Vylos 扩展。

有关 Apple 的平台规则和载荷字段,请参阅 AppLayerVPN 载荷参考、App 与按 App VPN 映射载荷、ApplicationAttributes 设置参考、ManagedApplicationAttributes 查询和 VPN 流量路由指南。