![在 AWS 中,如何检查哪些资源正在使用 VPC IP 地址](https://linux22.com/image/698570/%E5%9C%A8%20AWS%20%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E5%93%AA%E4%BA%9B%E8%B5%84%E6%BA%90%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%20VPC%20IP%20%E5%9C%B0%E5%9D%80.png)
根据 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 地址(就像我的一样),这将使您的生活更加轻松!