在 AWS 中,如何检查哪些资源正在使用 VPC IP 地址

在 AWS 中,如何检查哪些资源正在使用 VPC IP 地址

根据 Amazon 和我的测试,/24 VPC 子网允许 251 个可用 IP 地址。该 VPC 中还有另外 2 个子网,似乎没有 EC2 正在使用的 IP,可用 IP 字段显示只有 250 个可用。我已检查

我试图找出哪些资源正在使用这些 IP,但 AWS 似乎不允许这种查询。

我希望看到的是使用特定 VPC 子网的 IP 的资源列表。

如果有人可以阐明除 EC2 之外哪些 AWS 服务可以使用子网 IP,这也会有所帮助。

谢谢。

答案1

在 EC2 控制台左侧的导航窗格中,单击网络接口

所有具有 IP 地址的设备(EC2 实例、ELB、NAT 网关、RDS 实例(仅列举一些较常见的设备))都至少有一个虚拟 NIC,称为弹性网络接口(埃尼)。

每个 ENI 通常有一个主要私有 IPv4 地址,并且可能有一个或多个辅助 IPv4 地址。

您的 VPC 中的 IP 地址不应有任何未出现在此处的内容。

例外情况是未显示的不可用和保留地址。全零的“网络”地址和全一的“广播”地址根据子网划分规则不可用,网络地址 +1、+2 和 +3(/24 中的 .1、.2、.3)是由 VPC 基础设施保留。这 (256 -2 -3 = 251) 建立了 251 个地址的 /24 网络可用的基线最大值。

您的配置中缺少的地址可能是您的 NAT 网关,但无论如何您都应该能够在网络接口下找到它。

轻负载下的 ELB 还将在其配置的每个子网中建立 1 个 ENI。如果 ELB 在负载下自动大幅扩展,则需要建立更多 ENI,这是不应仅根据预测的实例数量来调整子网大小的一个重要原因。


可能值得一提的是:VPC 硬件 VPN 和 AWS Direct Connect 的对等地址是从 IPv4 链路本地地址空间 169.254.0.0/16 分配的。这些连接可以访问但实际上并不在任何 VPC 子网上,因此它们不会占用您 VPC 私有地址空间中的任何地址。

答案2

根据 @Michael-sqlbot 的出色回答(由于我的评级,我无法将其添加为评论),您可以使用 AWS CLI 获取在您的 VPC 中分配的 IP 地址列表:

aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>" | grep "PrivateIpAddress:"

...并快速计算出已分配 IP 的总数:

aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>" | grep "PrivateIpAddress:" | wc -l

如果您的 VPC 中的任何实体使用多个辅助 IP 地址(就像我的一样),这将使您的生活更加轻松!

相关内容