

# 流日志限制
<a name="flow-logs-limitations"></a>

要使用流日志，您需要了解以下限制：
+ 创建流日志后，在您选择的网络接口、子网或 VPC 中有活跃流量之前，将无法看到流日志数据。
+ 您不能为与您的 VPC 对等的 VPC 启用流日志，除非该对等 VPC 在您的账户中。
+ 创建流日志后，将无法更改其配置或者流日志记录格式。例如，您无法将不同的 IAM 角色与流日志关联，或者在流日志记录中添加或删除字段。不过，您可以删除流日志并使用必需的配置创建新的流日志。
+ 如果网络接口有多个 IPv4 地址，并且流量发送到辅助私有 IPv4 地址，则流日志会在 `dstaddr` 字段中显示主要私有 IPv4 地址。要捕获原始目标 IP 地址，请使用 `pkt-dstaddr` 字段创建流日志。
+ 如果流量发送到某个网络接口而目标不是网络接口 IP 地址中的任何一个，则流日志会在 `dstaddr` 字段中显示主要私有 IPv4 地址。要捕获原始目标 IP 地址，请使用 `pkt-dstaddr` 字段创建流日志。
+  如果流量是从某个网络接口发送的，并且源不是任何网络接口的 IP 地址，则当日志记录用于传出流时，流日志会在 `srcaddr` 字段中显示主要私有 IPv4 地址。要捕获原始源 IP 地址，请使用 `pkt-srcaddr` 字段创建流日志。如果日志记录用于进入网络接口的入口流，则网络接口的主要私有 IP 将不会显示在 `srcaddr` 字段中。
+ 当您的网络接口附加到[基于 Nitro 的实例](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)时，无论指定的最大聚合时间间隔为多少，聚合时间间隔始终不超过 1 分钟。
+ 对于 `pkt-srcaddr` 和 `pkt-dstaddr` 字段，如果中间层启用了客户端 IP 地址保留，则此字段可能会显示保留的客户端 IP，而不是中间层的 IP 地址。
+ 对于 `traffic-path` 字段，流经同一 VPC 中资源的流和流经 Outpost 本地网关的流的值相同。
+ 在聚合时间间隔内可能会跳过一些流日志记录（请参阅[可用字段](flow-log-records.md#flow-logs-fields)中的 *log-status*）。这可能是因为存在内部 AWS 容量限制或内部错误。如果使用 AWS Cost Explorer 查看 VPC 流日志费用，并且在流日志聚合时间间隔内跳过了一些流日志，则 AWS Cost Explorer 中报告的流日志数量会高于 Amazon VPC 发布的流日志数量。
+ 如果您使用 [VPC 屏蔽公共访问权限（BPA）](security-vpc-bpa-assess-impact-main.md#security-vpc-bpa-fl)：
  + VPC BPA 的流日志不包括[跳过的记录](flow-logs-records-examples.md#flow-log-example-no-data)。
  + 即使您在流日志中包含 `bytes` 字段，VPC BPA 的流日志也不会包含 [`bytes`](flow-log-records.md#flow-logs-fields)。
+ VPC 流日志支持为每个账户的每个资源创建最多 250 个订阅。如果某个资源的订阅数量已经达到此上限，则需要先删除现有订阅才能为此资源添加其他订阅。

流日志不会捕获所有 IP 流量。以下类型的流量不予以记录：
+ 实例与 Amazon DNS 服务器联系时生成的流量。如果您使用自己的 DNS 服务器，则将记录到该 DNS 服务器的所有流量。
+ Windows 实例为 Amazon Windows 许可证激活而生成的流量。
+ 实例元数据传入和传出 `169.254.169.254` 的流量。
+ Amazon Time Sync Service 的传入和传出 `169.254.169.123` 的流量。
+ DHCP 流量。
+ [镜像](https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-how-it-works.html)源流量的流量。您只会看到镜像目标流量的流量。
+ 到默认 VPC 路由器的预留 IP 地址的流量。
+ 端点网络接口和网络负载均衡器网络接口之间的流量。
+ 地址解析协议（ARP）流量。
+ 短暂性区域 NAT 网关（在创建后几分钟就会被删除）上的流量。

特定于版本 7 中可用的 ECS 字段的限制：
+ 如果底层 ECS 任务不属于流日志订阅的所有者，则不计算 ECS 字段。例如，如果您与其他账户（`AccountB`）共享子网（`SubnetA`），然后为 `SubnetA` 创建流日志订阅，则如果 `AccountB` 在共享子网中启动 ECS 任务，则您的订阅将收到来自 `AccountB` 启动的 ECS 任务的流量日志，但出于安全考虑，将不会计算这些日志的 ECS 字段。
+ 如果在 VPC/子网资源级别创建带有 ECS 字段的流日志订阅，则也会为您的订阅传输为非 ECS 网络接口生成的所有流量。对于非 ECS IP 流量，ECS 字段的值将为“-”。例如，您有一个子网（`subnet-000000`），并且为该子网创建了带有 ECS 字段（`fl-00000000`）的流日志订阅。在 `subnet-000000` 中，您可以启动一个连接到互联网并正在积极生成 IP 流量的 EC2 实例（`i-0000000`）。您还可以在同一子网中启动正在运行的 ECS 任务（`ECS-Task-1`）。由于 `i-0000000` 和 `ECS-Task-1` 都在生成 IP 流量，因此您的流日志订阅 `fl-00000000` 将为两个实体提供流量日志。但是，仅 `ECS-Task-1` 会有您在 logFormat 中包含的 ECS 字段的实际 ECS 元数据。对于 `i-0000000` 相关流量，这些字段的值将为“-”。
+ `ecs-container-id` 和 `ecs-second-container-id` 在 VPC 流日志服务从 ECS 事件流接收它们时进行排序。不能保证它们的顺序与您在 ECS 控制台或 DescribeTask API 调用中看到的顺序相同。如果容器在任务仍在运行时进入“已停止”状态，则它可能会继续出现在您的日志中。
+ ECS 元数据和 IP 流量日志来自两个不同来源。当我们从上游依赖项中获得所有所需信息后，我们立即开始计算您的 ECS 流量。在您启动新任务后，我们将开始计算您的 ECS 字段：1) 当我们收到底层网络接口的 IP 流量时；2) 当我们收到包含您的 ECS 任务元数据的 ECS 事件以表明该任务正在运行时。在您停止任务后，我们会停止计算您的 ECS 字段：1) 当我们不再收到底层网络接口的 IP 流量或收到延迟超过一天的 IP 流量时；2) 当我们收到包含您的 ECS 任务元数据的 ECS 事件以表明您的任务不再运行时。
+ 仅支持在 `awsvpc` [网络模式](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)下启动的 ECS 任务。

特定于 `encryption-status` 字段的限制：
+ 由于某些网络设备对加密状态报告实施了限制，某些流中的加密状态可能为“-”（不可用）。用户在分析中可以忽略这些流量。
+ 在监控模式下显示为加密并不代表在强制模式下允许该流量。反之亦然。
  + 如果流量在监控模式下加密，可能在强制模式下不合规：
    + 如果该流量涉及由某个 AWS 服务创建的 ENI，则该服务需要支持加密控制。
    + 如果该流量通过 VPC 对等连接传输，则对等 VPC 可能不会强制执行加密控制。
  + 如果流量在监控模式下未加密，则在将与该流量相关的服务添加为排除项的前提下，该流量在强制模式下仍可能合规。