You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找AWS VPC子网内所有可用的私有IP地址

如何查找AWS VPC子网内所有可用的私有IP地址

要找出子网内未被使用的私有IP,需要先获取子网的完整IP范围,再排除已被占用的IP,同时还要注意AWS预留的IP地址。以下是具体步骤:

1. 获取目标子网的CIDR地址

首先用AWS CLI获取子网的CIDR范围,替换<subnet-id>和<aws-region>为你的实际值:

aws ec2 describe-subnets --subnet-ids <subnet-id> --region <aws-region> --query 'Subnets[0].CidrBlock' --output text

示例输出:10.0.1.0/24

2. 生成CIDR内的所有私有IP列表

可以用nmap快速生成该CIDR下的所有IP地址(需提前安装nmap):

nmap -sL -n <your-cidr> | grep "Nmap scan report for" | awk '{print $NF}' | sort > all_ips.txt

或者用ipcalc工具生成:

ipcalc -r <your-cidr> | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | sort > all_ips.txt

3. 获取子网内已使用的IP列表

使用你提供的命令提取已被占用的IP,替换占位符后执行:

aws ec2 describe-network-interfaces --filters "Name=subnet-id,Values=<subnet-id>" --region <aws-region> | jq -r '.NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress' | sort > used_ips.txt

4. 计算可用IP地址

用comm命令对比两个列表,找出仅存在于all_ips.txt中的IP(即未被使用的):

comm -23 all_ips.txt used_ips.txt

注意事项

AWS会为每个子网保留5个IP地址,这些地址即使未被占用也无法使用:

  • 子网的网络地址(如10.0.1.0)
  • 子网的VPC路由器地址(如10.0.1.1)
  • VPC DNS服务器地址(如10.0.1.2)
  • 预留用于未来使用的地址(如10.0.1.3)
  • 子网的广播地址(如10.0.1.255)
    所以最终结果中需要手动排除这些地址,或者在生成all_ips.txt时直接过滤掉。

内容的提问来源于stack exchange,提问作者xpetta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:33:26