我在我的 NAT 网关的 VPC 流日志中看到有入站流量。我的 NAT 网关是否在接受来自互联网的入站流量?

上次更新时间:2019 年 7 月 22 日

我的 VPC 流日志显示来自公有 IP 地址的入站流量为 Action = ACCEPT。但我的理解是,NAT 网关不接受来自互联网的流量。我的 NAT 网关是否在接受来自互联网的入站流量?

解决方法

AWS 管理的 NAT 网关不接受从互联网发起的流量。但两个原因可能导致您的 VPC 流日志中显示接受的入站流量来自互联网。

原因 1:您的安全组或网络 ACL 允许入站互联网流量

如果您的安全组或网络访问控制列表 (ACL) 允许入站互联网流量,则该流量将在 VPC 流日志中显示为接受。如果附加到 NAT 网关的网络 ACL 没有显式拒绝来自互联网的流量,则发送到 NAT 网关的互联网流量将显示为接受。但是,实际流量并未被 NAT 网关接受,而是被丢弃。请执行下列操作以进行确认:

1.打开 Amazon CloudWatch console (Amazon CloudWatch 控制台)

2.在导航窗格中,选择 Insights

3.从下拉列表中,选择包含 NAT 网关的弹性网络接口和私有实例的弹性网络接口的日志组。

4.运行下面的查询。

filter (dstAddr like 'xxx.xxx' and srcAddr like 'public IP')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| limit 10   

注意:您可以仅使用搜索筛选条件中的前两个八位字节来分析 VPC 中的所有网络接口。在上例中,将 xxx.xxx 替换为您的 VPC CIDR 的前两个八位字节。然后将 public IP 替换为您在 VPC 流日志条目中看到的公有 IP。

查询结果应显示该 NAT 网关私有 IP 上有来自该公有 IP 的流量,但 VPC 中的其他私有 IP 上没有流量。这些结果确认入站流量属于未经请求的流量。但是,如果您确实在私有实例的 IP 上看到流量,请执行原因 2 中的步骤。

原因 2:从私有实例发起到公有 IP 的流量

如果有实例将 NAT 网关用于互联网访问,则 VPC 流日志中的流量可能代表来自公有 IP 的应答流量。要确认到公用 IP 的流量有某个私有实例发起,请运行以下查询。

注意:运行查询之前,请确保:

  • 选择与您在 VPC 流日志中观察到流量的时间对应的时间范围。
  • 如果您的 VPC 中有多个日志组,请选择相应的日志组。
filter (dstAddr like 'public IP' and srcAddr like 'xxx.xxx')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| limit 10 

注意:在上例中,将 xxx.xxx 替换为您的 VPC CIDR 的前两个八位字节。然后将 public IP 替换为您在 VPC 流日志条目中看到的公有 IP。如果您的 VPC 中超过 10 个资源启动了到该公有 IP 的流量,则增加限制


VPC 流日志

查询示例 (适用于 CloudWatch Logs Insights)

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?