我在我的 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 的流量,则增加限制。