数据包镜像概览

数据包镜像会克隆 Virtual Private Cloud (VPC) 网络中特定实例的流量,并将其转发以供检查。数据包镜像可捕获所有入站和出站流量以及数据包数据,例如载荷和标头。镜像发生在虚拟机实例而非网络上。因此,数据包镜像会占用主机上额外的带宽。

当您需要监控和分析安全状态时,数据包镜像非常有用。它会导出所有流量,而不仅仅是采样期间的流量。例如,您可以借助用于分析镜像流量的安全软件来检测所有威胁或异常情况。此外,您还可以检查所有流量,以检测应用性能问题。如需了解详情,请参阅示例使用场景

工作原理

数据包镜像会复制来自镜像的来源的流量,并将其发送至收集器目标。如需配置数据包镜像,您需要创建用于指定来源和目标的数据包镜像政策。

  • 镜像的来源为 Compute Engine 实例,您可以通过指定子网、网络标记或实例名称来进行选择。如果您指定某个子网,则该子网中的所有现有实例及未来实例都将被镜像。您可以指定一个或多个来源类型;如果某实例与其中至少一个类型匹配,则会对其进行镜像。

    数据包镜像会从应用了数据包镜像政策的网络中的实例网络接口收集流量。如果某个实例具有多个网络接口,除非已配置允许对这些接口进行镜像的其他政策,否则不会进行此操作。

  • 收集器目标是位于内部负载平衡器后端的实例组。该实例组中的实例称为收集器实例。对于实例组,我们建议您使用托管实例组,因为它可提供自动扩缩和自动修复功能。

    指定收集器目标时,请输入与内部负载平衡器关联的转发规则的名称。然后,Google Cloud 会将镜像流量转发到这些收集器实例。数据包镜像的内部负载平衡器与其他内部负载平衡器类似,不同之处在于前者必须针对数据包镜像配置转发规则。发送到负载平衡器的所有非镜像的流量都会被丢弃。

过滤

默认情况下,数据包镜像会收集镜像实例的所有传入和传出流量。您可以使用过滤条件来缩小镜像流量的范围,而不是收集所有流量。使用过滤条件可以帮助您限制镜像实例上的带宽使用量。

您可以配置过滤条件,以根据协议和/或 IP 地址范围来收集流量。您可以使用过滤条件仅指定要收集的镜像流量,而不是指定要排除的流量。

政策顺序

一个实例可以应用多项数据包镜像政策。Google Cloud 会根据每项政策的过滤条件,为每个流选择一项政策。如果您有不同的政策,则 Google Cloud 会使用与镜像流量匹配的相应政策。例如,您可能有一个政策具有过滤条件 198.51.100.3/24:TCP,另一个政策具有过滤条件 203.0.113.2/24:UDP。由于各项政策不同,Google Cloud 使用的政策没有歧义。

但是,如果您的政策存在重叠,Google Cloud 会评估其过滤条件进行选择。例如,您可能有两个政策,一个具有针对 10.0.0.0/24:TCP 的过滤条件,另一个具有针对 10.0.0.0/16:TCP 的过滤条件。这些政策重叠,因为它们的 CIDR 范围重叠。

在选择政策时,Google Cloud 会通过比较政策过滤条件的 CIDR 范围大小来确定其优先级。

Google Cloud 会根据过滤条件来选择政策:

  • 如果政策具有不同的 CIDR 范围(但有所重叠)和完全相同的协议,Google Cloud 会选择 IP 地址范围最具体的政策。假设离开镜像实例的 TCP 数据包的目标为 10.240.1.4,并且存在两个具有过滤条件 10.240.1.0/24:ALL10.240.0.0/16:TCP 的政策。由于 10.240.1.4 的最具体的匹配项是 10.240.1.0/24:ALL,因此 Google Cloud 会使用具有过滤条件 10.240.1.0/24:ALL 的政策。

  • 如果政策指定的 CIDR 范围完全相同,但协议有所重叠,则 Google Cloud 会使用协议最具体的政策。例如,过滤条件 10.240.1.0/24:TCP10.240.1.0/24:ALL 范围相同,但协议重叠。对于匹配的 TCP 流量,Google Cloud 会使用 10.240.1.0/24:TCP 政策。10.240.1.0/24:ALL 政策适用于所有其他协议的匹配流量。

  • 如果政策的 CIDR 范围完全相同,但协议不同,则这些政策不会重叠。Google Cloud 会使用与镜像流量的协议相对应的政策。例如,您可能有一个针对 10.240.1.0/24:TCP 的政策和一个针对 10.240.1.0/24:UDP 的政策。Google Cloud 会使用 TCP 或 UDP 政策,具体取决于镜像流量的协议。

  • 如果政策存在重叠,且具有完全相同的过滤条件,Google Cloud 会使用非确定性方法选择一项。每次针对这些政策重新评估匹配的流量时,Google Cloud 可能会选择同一政策,也可能显示不同的政策。

如果所选政策具有不确定性,则 Google Cloud 可能会捕获多个负载平衡器中的镜像流量。如需以可预测的方式持续向单个负载平衡器发送镜像流量,请创建其过滤条件的地址范围不重叠的政策。如果范围重叠,请设置唯一的过滤条件协议。

VPC 流日志

如果镜像实例位于也启用了 VPC 流日志的子网中,则 VPC 流日志不会报告克隆的数据包。VPC 流日志仅记录非镜像流量。

但是,如果收集器实例位于启用了 VPC 流日志的子网中,则 VPC 流日志会捕获镜像实例和收集器实例之间的流。日志会将来源 IP 地址和目标 IP 地址显示为镜像实例和收集器实例。如需停止收集镜像流量的日志,请在收集器实例子网上停用 VPC 流日志功能。

如需了解详情,请参阅使用 VPC 流日志

关键属性

以下所列各项介绍了您在使用数据包镜像之前,需要了解的相关限制或行为:

  • 您只能对 TCP、UDP 和 ICMP 流量进行镜像。

  • 镜像的来源和收集器目标必须位于同一区域。如果它们通过 VPC 网络对等互连连接,则可以位于不同的 VPC 网络中。

  • 您无法对虚拟机实例的同一网络接口执行镜像和流量收集操作,因为这会导致镜像循环。

  • 镜像流量会占用镜像实例的带宽。例如,如果某镜像实例遇到 1 Gbps 的入站流量和 1 Gbps 的出站流量,则该实例的总流量为 1 Gbps 的入站流量和 3 Gbps 的出站流量(1 Gbps 的正常出站流量和 2 Gbps 的镜像出站流量)。如需限制所收集的流量,您可使用过滤条件。

  • 数据包镜像的具体费用取决于从镜像实例传输到实例组的出站流量以及流量是否在各地区之间传输。

  • 数据包镜像对入站和出站方向均适用。如果两个镜像虚拟机实例互相发送流量,则 Google Cloud 会收集同一数据包的两个版本。

  • 您可以为项目创建的数据包镜像政策数量创建上限。如需了解详情,请参阅配额页面上每个项目的配额。

  • 对于每个数据包镜像政策,您可以指定的镜像来源的数量上限取决于来源类型:

    • 5 个子网
    • 5 个标签
    • 50 个实例
  • 数据包镜像过滤条件的数量上限为 30,即 IP 地址范围的数量乘以协议数量。例如,您可以指定 30 个范围和 1 个协议,过滤条件的数量则为 30。但您不能指定 30 个范围和 2 个协议,此时过滤条件数量为 60,超过了最大值。

  • 您需要为数据包镜像处理的数据量付费,如需了解详情,请参阅数据包镜像价格。

    您还需要为与数据包镜像相关的所有必备组件和出站流量付费。例如,收集流量的实例按正常费率收费。此外,如果数据包镜像流量在不同地区之间传输,则您需要为出站流量付费。如需详细了解价格信息,请参阅相关的价格页面

使用场景

以下部分介绍了一些真实场景,说明了为何建议您使用数据包镜像。

企业级安全

安全和网络工程团队必须确保能够捕获所有可能指示存在安全漏洞和入侵的异常情况和威胁。他们会对所有流量进行镜像,以全面检查可疑的流。由于攻击可能涉及多个数据包,因此安全团队必须能够获取每个流的所有数据包。

例如,以下安全工具要求您捕获多个数据包:

  • 入侵检测系统 (IDS) 工具,它们需要单个流的多个数据包来匹配签名,以便能够检测持续出现的威胁。

  • 深度数据包检测引擎,负责检查数据包载荷以检测协议异常情况。

  • 针对 PCI 合规性及其他法规使用场景的网络取证工具。数据包镜像提供了一种针对不同攻击途径进行捕获的解决方案,例如不频繁的通信或尝试失败的通信。

应用性能监控

网络工程师可以使用镜像流量来排查应用和数据库团队报告的性能问题。为了检查网络问题,网络工程师可以查看传输的内容,而不是依赖应用日志。

例如,网络工程师可以使用数据包镜像中的数据来完成以下任务:

  • 分析协议和行为,以便找到并解决诸如数据包丢失或 TCP 重置等问题。

  • (实时)分析来自远程桌面、VoIP 和其他交互式应用的流量模式。网络工程师可以搜索影响应用用户体验的问题,如多次重新发送数据包或超出预期的重新连接次数。

收集器目标拓扑示例

您可以在各种设置中使用数据包镜像。以下示例展示了收集器目标的位置及其针对不同数据包镜像配置(例如 VPC 网络对等互连和共享 VPC)的政策。

收集器目标位于同一网络中

以下示例展示了镜像来源和收集器目标位于同一 VPC 网络中时的数据包镜像配置。

在上图中,数据包镜像政策配置为对 mirrored-subnet 进行镜像,并将镜像流量发送到内部负载平衡器。Google Cloud 会对该子网中的现有和未来实例上的流量进行镜像。对进出互联网、本地主机或 Google 服务的所有流量进行镜像。

收集器目标位于对等网络中

您可以构建集中式收集器模型,其中不同 VPC 网络中的实例将镜像流量发送到中央 VPC 网络。这样,您便无需在每个网络中构建目标收集器。该中央 VPC 网络托管一个或多个收集器目标,所有镜像流量都发送到此。

您可以使用 VPC 网络对等互连来实现此场景。所有包含镜像来源的 VPC 网络都必须与该中央网络建立对等互连。

VPC 网络可以位于同一项目中,也可以位于不同项目中。对于每个对等 VPC 网络,您都必须创建一个数据包镜像政策。在这种情况下,该政策位于包含该中央网络的项目中。该政策还可以位于其网络与该中央网络对等互连的项目中。

在上图中,收集器目标会收集两个不同网络中的子网的镜像流量。所有资源(来源和目标)必须位于同一区域。network-a 中的设置与示例类似,其中镜像来源和收集器目标位于同一 VPC 网络中policy-1 配置为收集来自 subnet-a 的流量并将其发送到 collector-ilb

policy-2project-a 中进行配置,但将 subnet-b 指定为镜像来源。由于 network-anetwork-b 已建立对等互连,因此目标收集器可以收集来自 subnet-b 的流量。

这些网络位于不同的项目中,可能具有不同的所有者。如果所有者拥有相应权限,则可以创建数据包镜像政策:

  • 如果 project-a 的所有者创建了数据包镜像政策,则必须在网络、子网或实例上拥有 compute.packetMirroringAdmin 角色才能在 project-b 中镜像。

  • 如果 project-b 的所有者创建了数据包镜像政策,则他们必须在 project-a 中拥有 compute.packetMirroringUser 角色。

如需详细了解如何在两个 VPC 网络之间启用专用连接,请参阅 VPC 网络对等互连

共享 VPC

在以下共享 VPC 场景中,收集器目标的镜像实例均位于同一共享 VPC 网络中。即使资源都位于同一网络中,它们也可以位于不同的项目中,例如宿主项目或多个不同的服务项目。以下示例展示了必须创建数据包镜像政策的位置及其创建者。

如果镜像来源和收集器目标均位于同一项目中,则无论它们位于宿主项目中还是服务项目中,设置均与所有资源都位于同一 VPC 网络中时类似。项目所有者可以创建所有资源并在该项目中设置所需权限。

如需了解详情,请参阅共享 VPC 概览

收集器目标位于服务项目中

在以下示例中,收集器目标位于使用宿主项目中的子网的服务项目中。在这种情况下,政策也位于服务项目中。该政策也位于宿主项目中。

在上图中,服务项目包含使用共享 VPC 网络中的收集器子网的收集器实例。数据包镜像政策在服务项目中创建,并配置为对具有 subnet-mirrored 中网络接口的实例进行镜像。

服务项目或宿主项目用户可以创建数据包镜像政策。为此,用户必须在收集器目标所在的服务项目中具有 compute.packetMirroringUser 角色。此外,用户还必须对镜像来源具有 compute.packetMirroringAdmin 角色。

收集器目标位于宿主项目中

在以下示例中,收集器目标位于宿主项目中,而镜像实例位于服务项目中。

此示例可能适用于开发者在服务项目中部署应用并使用共享 VPC 网络的场景。他们无需管理网络基础架构或数据包镜像。相反,控制宿主项目和共享 VPC 网络的集中式网络或安全团队负责预配数据包镜像政策。

在上图中,数据包镜像政策是在收集器目标所在的宿主项目中创建的。该政策配置为对镜像子网中的实例进行镜像。服务项目中的虚拟机实例可以使用镜像子网,并对它们的流量进行镜像。

服务项目或宿主项目用户可以创建数据包镜像政策。为此,服务项目中的用户必须在宿主项目中具有 compute.packetMirroringUser 角色。宿主项目中的用户需要对服务项目中的镜像来源具有 compute.packetMirroringAdmin 角色。

多接口虚拟机实例

您可以在数据包镜像政策中添加具有多个网络接口的虚拟机实例。由于政策可以对单个网络中的资源进行镜像,因此您无法创建一个政策来对实例的所有网络接口的流量进行镜像。如果要对其他网络接口进行镜像,您必须为每个接口创建一项政策,因为每个接口都位于不同的网络中。

后续步骤