预留静态外部 IP 地址
您可以预留静态外部 IP 地址。您还可以列出和释放预留的静态外部 IP 地址。如需为虚拟机实例分配静态外部 IP 地址,请参阅配置静态外部 IP 地址。
外部 IP 地址可以是静态地址或临时地址。如果虚拟机需要固定不变的外部 IP 地址,您可以获取静态外部 IP 地址。您可以预留新的外部 IP 地址,也可以提升现有的临时外部 IP 地址。
如果您需要使用静态内部 IP 地址,请改为参阅预留静态内部 IP 地址。
准备工作
- 了解 IP 地址。
- 了解静态外部 IP 地址的配额和限制。
- 了解外部 IP 地址价格。
- 如果您尚未设置身份验证,请进行设置。
身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式进行身份验证。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得预留和管理静态 IP 地址所需的权限,请让您的管理员为您授予项目的 Compute Network Admin (
roles/compute.networkAdmin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色可提供预留和管理静态 IP 地址所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
预留和管理静态 IP 地址需要以下权限:
-
针对该 IP 地址的
compute.addresses.create
-
针对该 IP 地址的
compute.addresses.createInternal
-
针对网络的
compute.networks.list
-
针对子网的
compute.subnetworks.use
-
针对子网的
compute.subnetworks.list
静态外部 IP 地址简介
静态外部 IP 地址是为您的资源预留直到您决定将其释放的 IP 地址。如果您有一个客户或用户要用来访问服务的 IP 地址,您可以预留该 IP 地址,以仅供您的资源使用。您也可以将临时外部 IP 地址升级为静态外部 IP 地址。
如需了解详情,请参阅 IP 地址。
下表列出了 Google Cloud 支持的静态外部 IP 地址。
IP 地址类型 资源 IP 范围 来源 关联对象: 区域级外部 IPv4 地址 虚拟机和区域级负载均衡器 /32
Google 的外部 IP 地址池 项目 区域级外部 IPv6 地址 虚拟机和支持的区域级负载均衡器 /96
子网的外部 IPv6 地址范围 子网 全球外部 IPv4 地址 全球负载均衡器 /32
Google 的外部 IP 地址池 项目 全球外部 IPv6 地址 全球负载均衡器 /64
Google 的外部 IP 地址池 项目 如需查看区域级和全球负载均衡器列表,请参阅负载均衡器类型摘要。
限制
一次只能有一个资源使用某个静态外部 IP 地址。
IP 地址分配给资源后,无法分辨该 IP 地址是静态地址还是临时地址。您可以将 IP 地址与为相关项目预留的静态外部 IP 地址列表进行比较。如需查看项目可用的静态外部 IP 地址列表,请使用
gcloud compute addresses list
子命令。每个虚拟机都可以有多个网络接口,并且每个接口可以分配有以下 IP 地址:
- 内部 IPv4 地址(必需)
- 外部 IPv4 地址
/96
IPv6 地址范围,可以是内部或外部,但不能同时是两者
您无法更改静态 IP 地址的名称。
分配的外部 IP 地址与虚拟机位于同一物理主机上,并且与虚拟机位于同一区域,可用于包括路由、延迟时间和定价在内的所有用途。无论互联网地理位置查找信息如何,情况都是如此。
注意:网络接口可以接收来自多个转发规则的流量,这些转发规则可能适用于其他外部 IP 地址。任意数量的外部 IP 地址都可以通过这些转发规则来引用某个网络接口,但每个网络接口只能分配有一个外部 IPv4 地址范围和一个外部
/96
IPv6 地址范围。如需详细了解负载均衡和转发规则,请参阅负载均衡文档。
保留新的静态外部 IP 地址
预留该地址后,请在创建新虚拟机时将其分配给新虚拟机,或将其分配给现有虚拟机。
控制台
- 在 Google Cloud 控制台中,进入 IP 地址页面。
- 点击预留外部静态 IP 地址。
- 在名称字段中,输入 IP 地址名称。
- 指定网络服务层级是高级还是标准。 只有优质层级支持 IPv6 静态地址预留。
- 指定此 IP 地址是 IPv4 地址还是 IPv6 地址。
- 指定此 IP 地址是区域还是全球。
- 如果您要为全球负载均衡器预留静态 IP 地址,请选择全球,然后点击预留。
- 如果您要为虚拟机或区域级负载均衡器预留静态 IP 地址,请选择区域级,然后选择要在其中创建该地址的区域。
如果您要预留区域级外部 IPv6 地址,则还要选择以下各项:
- 网络:VPC 网络
- 子网:要从中分配静态区域级 IPv6 地址的子网
- 端点类型:选择虚拟机实例或网络负载均衡器
可选:如果您要为虚拟机预留静态外部 IP 地址,请在附加目标列表中,选择要将该 IP 地址附加到的虚拟机。
点击预留以预留该 IP 地址。
gcloud
如需预留静态外部 IP 地址,请使用
gcloud compute addresses create
命令。请按照以下说明预留静态外部 IPv4 或 IPv6 地址:
全球 IP 地址
如需预留全球 IP 地址,请运行以下命令:gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version [IPV4 | IPV6]
区域外部 IPv4 地址
如需预留区域级外部 IPv4 地址,请运行以下命令:gcloud compute addresses create ADDRESS_NAME \ --region=REGION
区域级外部 IPv6 地址
如需预留区域级外部 IPv6 地址,请运行以下命令:gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=[VM | NETLB]
替换以下内容:
ADDRESS_NAME
:您要与此地址关联的名称。REGION
:对于区域级外部 IP 地址,请指定您要在其中预留此地址的区域。此区域应为您要将 IP 地址附加到的资源所在的区域。SUBNET_NAME
:对于区域级外部 IPv6 地址,请指定要从中分配静态区域级 IPv6 地址的子网。该子网必须具有分配的外部 IPv6 地址范围。[IPV4 | IPV6]
:对于全球 IP 地址,请指定 IP 版本(IPv4 或 IPv6)。对于区域级外部 IPv6 地址,请指定 IPv6。系统会从指定的子网分配/96
IPv6 范围。VM | NETLB
:对于区域级外部 IPv6 地址,请指定端点类型;无论是虚拟机还是网络负载均衡器。
如需查看结果,请使用
gcloud compute addresses describe
命令:gcloud compute addresses describe ADDRESS_NAME
Terraform
您可以使用
google_compute_address
资源创建区域级外部 IP 地址。以下示例展示了如何使用
google_compute_global_address
资源创建全球外部 IPv6 地址:API
如需创建区域 IPv4 地址,请调用区域
addresses.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
请求正文应包含以下内容:
{ "name": "ADDRESS_NAME" }
请替换以下内容:
PROJECT_ID
:此请求的项目 IDREGION
:此请求的区域名称。ADDRESS_NAME
:您要与此地址关联的名称
对于全球静态 IPv4 地址,请调用
globalAddresses.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
请求正文应包含以下内容:
{ "name": "ADDRESS_NAME" }
对于全球静态 IPv6 地址,请调用
globalAddresses.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
请求正文应包含以下内容:
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6" }
如需查看结果,请使用
addresses.get
方法。对于区域级静态 IPv6 地址,请调用
addresses.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
请求正文应包含以下内容:
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6", "ipv6EndpointType": "VM|LB", "networkTier": "PREMIUM", "subnetwork": "SUBNET" }
将
SUBNET
替换为此项目的子网。如需查看结果,请使用
addresses.get
方法。
Go
Java
Python
升级临时外部 IP 地址
如果实例具有临时外部 IP 地址,并且您要将该 IP 地址永久分配给项目,请将该临时外部 IP 地址提升为静态外部 IP 地址。将临时外部 IP 地址升级为预留的外部 IP 地址不会导致 Google Cloud 丢弃发送到实例的数据包。这包括直接发送或通过负载均衡器发送到实例的数据包。
控制台
- 转到 IP 地址页面。
- 点击外部 IP 地址。
- 可选:在过滤条件字段中,搜索要提升的临时 IP 地址。
- 在要提升的 IP 地址的更多操作菜单 ( ) 中,选择提升为静态 IP 地址。
- 输入新静态 IP 地址的名称,然后点击预留。
gcloud
请按照以下说明提升静态外部 IPv4 或 IPv6 地址:
如需将临时外部 IPv4 地址提升为静态外部 IPv4 地址,请通过将
--addresses
标志与compute addresses create
命令结合使用来提供临时外部 IP 地址。 可以使用region
标志升级临时区域 IP 地址,或者可以使用global
标志升级临时全球 IP 地址。gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \ [--region=REGION | --global]
替换以下内容:
ADDRESS_NAME
:您要与此地址关联的名称。IP_ADDRESS
:您要提升的 IP 地址。REGION
是区域级 IP 地址所属的区域。
如需将临时区域级外部 IPv6 地址提升为静态区域级外部 IPv6 地址,请通过将
--addresses
标志与gcloud compute addresses create
命令结合使用来提供临时外部 IP 地址。gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --addresses=IPV6_ADDRESS \ --prefix-length=96
替换以下内容:
ADDRESS_NAME
:IP 地址资源的名称REGION
:IPv6 地址资源的区域IPV6_ADDRESS
:您要升级的 IPv6 地址。
API
如需升级临时地区 IP 地址,请调用
addresses.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
如需升级临时全球 IP 地址,请向以下 URI 发出
POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
为请求正文的必填字段指定值:
对于 IPv4 地址,请求正文应包含以下字段:
{ "name": "ADDRESS_NAME", "address": "IPV4_ADDRESS" "addressType": "EXTERNAL" }
对于 IPv6 地址,请求正文应包含以下字段:
{ "name": "ADDRESS_NAME", "address": "IPV6_ADDRESS" "prefixLength": 96 "addressType": "EXTERNAL" }
替换以下内容:
ADDRESS_NAME
:您要与此地址关联的名称IPV4_ADDRESS|IPV6_ADDRESS
:您要提升的 IPv4 或 IPv6 地址REGION
:IPv4 或 IPv6 地址所属的区域PROJECT_ID
:此请求的项目 ID
Go
Java
Python
在外部 IP 地址升级为静态外部 IP 地址后,该地址仍然会附加到该实例。如果您需要将这个新升级的静态外部 IP 地址分配给另一个资源,请为现有实例取消分配该静态外部 IP 地址。
列出静态外部 IP 地址
如需列出您为项目预留的静态外部 IP 地址,请按照以下步骤操作。
控制台
在 Google Cloud 控制台中,进入 IP 地址页面。
点击外部 IP 地址。
gcloud
使用
gcloud compute addresses list
命令:如需列出所有 IP 地址,请使用以下命令:
gcloud compute addresses list
如需列出所有全球 IP 地址,请使用以下命令:
gcloud compute addresses list --global
如需列出给定区域中的所有区域级 IP 地址,请使用以下命令:
gcloud compute addresses list \ --regions=REGION
将
REGION
替换为要列出其地址的区域。您可以通过指定以英文逗号分隔的区域名称来列出多个区域的地址:gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
API
如需列出区域级 IPv4 或 IPv6 地址,请调用
addresses.list
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
替换以下内容:
PROJECT_ID
:此请求的项目 IDREGION
:此请求的地区名称
如需列出所有区域中的所有地址,请调用
addresses.aggregatedList
方法。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
如需列出全球 IPv4 或 IPv6 地址,请调用
globalAddresses.list
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
请替换以下内容:
PROJECT_ID
:此请求的项目 ID
Go
Java
Python
描述静态外部 IP 地址
如需获取有关静态外部 IP 地址的信息,请按照以下步骤操作。
控制台
在 Google Cloud 控制台中,进入 IP 地址页面。
点击外部 IP 地址。
点击要获取其详细信息的 IP 地址。
gcloud
使用
gcloud compute addresses describe
命令并将ADDRESS_NAME
替换为您要描述的外部 IP 地址的名称。对于全球 IPv4 或 IPv6 地址,请使用以下命令:
gcloud compute addresses describe ADDRESS_NAME --global
对于区域级 IPv4 或 IPv6 地址,请使用以下命令:
gcloud compute addresses describe ADDRESS_NAME --region=REGION
API
如需描述区域级 IPv4 或 IPv6 地址,请调用
addresses.get
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
替换以下内容:
PROJECT_ID
:请求的项目 ID。REGION
:此请求的区域名称ADDRESS_NAME
:IP 地址的名称
如需描述全球 IPv4 或 IPv6 地址,请调用
globalAddresses.get
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
替换以下内容:
PROJECT_ID
:请求的项目 ID。ADDRESS_NAME
:IP 地址的名称
Go
Java
Python
释放静态外部 IP 地址
如果您不再需要某个静态外部 IPv4 或 IPv6 地址,可以通过删除 IP 地址资源来释放该 IP 地址。
如果您使用 Google Cloud 控制台,则只有在静态 IP 地址未被其他资源使用时,才能释放该地址。
如果您使用 gcloud CLI 或 API,则无论 IP 地址是否正被其他资源使用,都可以释放该 IP 地址。
如果 IP 地址未被资源使用,则会返回到可用外部 IP 地址池中。
如果 IP 地址正在被资源使用,则在资源被删除前,该 IP 地址会一直与该资源关联。
控制台
在 Google Cloud 控制台中,进入 IP 地址页面。
点击外部 IP 地址。
可选:在过滤条件字段中,输入
static
,然后从下拉列表中选择静态:类型。选择要释放的静态外部 IP 地址。
点击释放静态地址。
如果您没有看到此选项,请点击顶部菜单栏中的更多操作菜单 (
),然后从列表中选择释放静态地址。
gcloud
使用
compute addresses delete
命令:gcloud compute addresses delete ADDRESS_NAME
将
ADDRESS_NAME
替换为要释放的 IPv4 或 IPv6 地址的名称。API
如需释放区域级 IPv4 或 IPv6 地址,请调用
addresses.delete
方法:DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
替换以下内容:
PROJECT_ID
:此请求的项目 IDREGION
:此请求的地区名称ADDRESS_NAME
:IP 地址的名称
如需释放全球 IPv4 或 IPv6 地址,请调用
globalAddresses.delete
方法:DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
请替换以下内容:
ADDRESS_NAME
:IP 地址的名称PROJECT_ID
:此请求的项目 ID
Go
Java
Python
后续步骤
- 了解如何为新虚拟机或现有虚拟机配置静态外部 IP 地址。
- 参阅转发规则概览,了解转发规则的 IP 地址规范以及如何使用转发规则。
- 详细了解 IP 地址。
- 查看 VPC 价格。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-18。