如何在Google Cloud子网中列出所有已使用IP及使用者?
GCP子网已使用IP及使用者查询方法(无需ping)
以下是两种无需扫描子网(ping)就能获取GCP子网内已分配IP及对应资源的方法,适配控制台可视化操作和命令行批量场景:
一、Google Cloud 控制台操作步骤
- 登录GCP控制台,进入VPC网络 > 子网页面
- 在子网列表中找到目标子网,点击子网名称进入详情页
- 切换到已分配的IP地址标签页,即可查看该子网下所有已被使用的IP地址,包括:
- IP地址本身
- 资源类型(虚拟机、静态IP预留、负载均衡器等)
- 资源名称与所属项目信息
二、gcloud 命令行操作
1. 查询子网内所有内部IP(含静态/动态分配、各类资源)
替换命令中的[REGION]和[SUBNET_NAME]为你的子网区域和名称,执行后会返回完整的已分配IP列表及使用者:
gcloud compute addresses list --filter="subnetwork:(regions/[REGION]/subnetworks/[SUBNET_NAME]) AND addressType=INTERNAL" --format="table(address, name, status, users)"
address:已分配的IP地址name:IP资源的名称(静态IP会显示预留名称,动态IP会关联实例名)users:使用该IP的资源路径(比如虚拟机实例的完整资源标识)
2. 仅查询子网内虚拟机的内部IP
如果只关注虚拟机占用的IP,用这个更简洁的命令:
gcloud compute instances list --filter="networkInterfaces.subnetwork:(regions/[REGION]/subnetworks/[SUBNET_NAME])" --format="table(name, networkInterfaces[0].networkIP, zone)"
3. 查询子网内虚拟机绑定的外部IP
若需要查看虚拟机对应的公网IP,可执行:
gcloud compute instances list --filter="networkInterfaces.subnetwork:(regions/[REGION]/subnetworks/[SUBNET_NAME])" --format="table(name, networkInterfaces[0].accessConfigs[0].natIP, zone)"
这些命令直接调用GCP底层API获取已记录的分配信息,完全不需要扫描子网,在大型环境下效率极高,和Azure Portal的查询逻辑一致。
内容的提问来源于stack exchange,提问作者souser
相关产品推荐
相关产品推荐

