預留靜態內部 IP 位址
本頁說明如何在虛擬私有雲 (VPC) 網路中預留及管理靜態內部 IPv4 或 IPv6 位址。
透過靜態內部 IP 位址,即可在子網路上設定的 IP 位址範圍中保留內部 IP 位址,然後視需要將這些保留的內部 IP 位址指派給資源。預約內部 IP 位址後,該位址就會從動態分配集區中移出,避免系統自動分配該位址。保留靜態內部 IP 位址需要特定的身分與存取權管理 (IAM) 權限,只有獲得授權的使用者才能保留靜態內部 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
compute.addresses.create
-
compute.addresses.createInternal
-
compute.networks.list
-
compute.subnetworks.use
-
compute.subnetworks.list
同時間只有一個資源可以使用靜態內部 IP 位址。
保留靜態內部 IP 位址的功能僅支援虛擬私有雲 (VPC) 網路,不支援舊版模式的網路。
刪除資源並不會自動釋出靜態內部 IP 位址。因此,您不再需要靜態內部 IP 位址時,請以手動方式釋出。
每個 VM 都可以有多個網路介面,且每個介面可根據堆疊類型指派下列 IP 位址:
- 僅限 IPv4 的介面:
- 內部 IPv4 位址 (必要)
- 外部 IPv4 位址 (選用)
- 雙重堆疊 (IPv4 和 IPv6) 介面:
- 內部 IPv4 位址 (必要)
- 外部 IPv4 位址 (選用)
/96
IPv6 位址範圍 (內部或外部,但不能同時使用兩者) (必要)
- 僅限 IPv6 的介面 (搶先版):
/96
IPv6 位址範圍 (內部或外部,但不能同時使用兩者) (必要)
- 僅限 IPv4 的介面:
您無法取消指派或變更下列項目:
- 現有資源的內部 IPv4 位址。舉例來說,您無法將新的靜態內部 IP 位址指派給執行中或已停止的 VM 執行個體。
- 僅含 IPv6 網路介面的 VM 內部 IPv6 位址。
不過,您可以將資源的臨時內部 IP 位址升級為靜態內部 IP 位址,這樣即使資源遭到刪除,您仍可保留該位址。
您無法變更靜態 IP 位址的名稱。
靜態內部 IP 位址屬於區域資源,因此只能在保留的區域中使用。舉例來說,如果
Region A
中有預留的靜態內部 IP 位址,您只能在Region A
中使用該 IP 位址。- 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
- 按一下「保留內部靜態 IP 位址」。你可能需要點選「更多動作」 選單,才能看到這個按鈕。
- 在「Name」欄位中輸入 IP 位址名稱。
- 在「IP version」(IP 版本) 清單中,選取所需的 IP 版本:
- 如要預留靜態內部 IPv4 位址,請選取「IPv4」IPv4。
- 如要保留靜態內部 IPv6 位址,請選取「IPv6」IPv6。
- 在「Network」(網路) 和「Subnetwork」(子網路) 清單中,分別選取虛擬私有雲網路和子網路。
- 指定要如何保留 IP 位址:
- 如要指定要保留的靜態內部 IPv4 位址,請在「Static IP address」中選取「Let me choose」,然後輸入自訂 IP 位址。否則,系統會自動為您指派子網路中的靜態內部 IPv4 位址。
- 如果是 IPv6 位址,系統會從子網路的內部 IPv6 位址範圍,自動指派靜態內部 IPv6 位址。
選用:如要在不同前端共用靜態內部 IPv4 位址,請在「用途」清單中選擇「共用」。預設選取項目為「非共用」。
按一下「保留」。
如要保留內部 IPv4 位址,請使用
compute addresses create
指令:gcloud compute addresses create ADDRESS_NAMES \ --region REGION --subnet SUBNETWORK \ --addresses IP_ADDRESS
更改下列內容:
ADDRESS_NAMES
:要建立的一或多個[--purpose=SHARED_LOADBALANCER_VIP]
位址名稱。如有數個地址,請以空格分隔,將所有地址指定為清單,例如example-address-1 example-address-2 example-address-3
REGION
:這項要求中的地區。SUBNETWORK
:這個內部 IP 位址所屬的子網路。IP_ADDRESS
:要保留的 IP 位址,必須位於子網路的主要 IP 範圍內。如未指定,系統會從子網路中自動分配 IP 位址。
如要保留內部 IPv6 位址,請使用
compute addresses create
指令。將IPV6
指定為--ip-version
的值:gcloud compute addresses create ADDRESS_NAMES \ --region REGION --subnet SUBNETWORK \ --ip-version IPV6
更改下列內容:
ADDRESS_NAMES
:要保留的一或多個位址名稱。如有數個地址,請以空格分隔,將所有地址指定為清單,例如example-address-1 example-address-2 example-address-3
REGION
:這項要求中的地區。SUBNETWORK
:這個內部 IPv6 位址所屬的子網路。
與內部 IPv4 保留不同,內部 IPv6 保留不支援從子網路保留特定 IP 位址。系統會從子網路的
/64
內部 IPv6 位址範圍,自動分配/96
內部 IPv6 位址。保留子網路中自動分配的內部 IPv4 位址:
gcloud compute addresses create example-address-1 \ --region us-central1 \ --subnet subnet-1
如要保留子網路中的特定內部 IPv4 位址:
gcloud compute addresses create example-address-1 \ --region us-central1 \ --subnet subnet-1 \ --addresses 10.128.0.12
從子網路保留靜態內部 IPv6 位址:
gcloud compute addresses create example-address-1 \ --region us-central1 \ --subnet subnet-1 \ --ip-version IPV6
提供一個以上的 IPv4 位址名稱,即可建立多個 IPv4 位址;所有位址都會保留在相同的子網路中:
gcloud compute addresses create example-address-1 example-address-2 \ --region us-central1 \ --subnet subnet-1 \ --addresses 10.128.0.12,10.128.0.13
前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
在清單中找到該地址,並查看「類型」欄中的 IP 位址類型。
- 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
- 按一下「內部 IP 位址」。
- 選用步驟:在「Filter」(篩選器) 欄位中,輸入
ephemeral
即可搜尋暫時性 IP 位址,然後從下拉式清單中選取「Ephermal : Type」(暫時性:類型)。 - 選取要推送的內部 IP 位址。
- 在所選 IP 位址顯示列結尾的「更多動作」選單 ( ) 中,選取「升級為靜態 IP 位址」。
- 輸入新的靜態 IP 位址名稱,然後按一下「保留」。
升級現有臨時內部 IPv6 位址之前,您需要知道該 IP 位址的值。使用 Google Cloud CLI 對資源提出
describe
要求,取得 IP 位址值。如要為具有 IPv4 位址的執行個體設定,請使用下列指令:
gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"
如要為具有 IPv6 位址的執行個體執行這項操作,請使用下列指令:
gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "ipv6Address"
如為區域轉送規則,請使用下列指令:
gcloud compute forwarding-rules describe FORWARDING_RULE_NAME --region REGION | grep "IPAddress"
如果是全域轉送規則,請使用
--global
旗標,而不是--region
旗標。
升級地址:
如要升級一或多個現有的內部 IPv4 位址,請使用
compute addresses create
指令,並透過--addresses
旗標提供您要升級的具體內部 IP 位址:gcloud compute addresses create IPV4_ADDRESS_NAMES \ --addresses IPV4_ADDRESSES \ --region REGION \ --prefix-length PREFIX_LENGTH \ --subnet SUBNETWORK
更改下列內容:
IPV4_ADDRESS_NAMES
: IPv4 位址的名稱。如有數個地址,請以空格分隔,將所有地址名稱指定為清單,例如example-address-name-1 example-address-name-2 example-address-name-3
。請按照宣告 IP 位址的順序來宣告這些名稱。舉例來說,假設您將位址名稱指定為example-address-name-1 example-address-name-2 example-address-name-3
,並將 IPv4 位址指定為192.0.2.0 192.0.2.1 192.0.2.2
。在這種情況下,Compute Engine 會以以下方式對應名稱和地址:example-address-name-1
:192.0.2.0
example-address-name-2
:192.0.2.1
example-address-name-3
:192.0.2.2
IPV4_ADDRESSES
:要升級的 IPv4 位址。 如有數個地址,請以空格分隔所有地址,例如192.0.2.0 192.0.2.1 192.0.2.2
。REGION
:您要保留這個位址的地區。PREFIX_LENGTH
:選用。IPv4 位址範圍的前置碼長度。值必須是介於 7 和 31 之間的整數。 只有在指定位址範圍時,才需要加入這個欄位。如果指定的 IPv4 位址是單一 IP 位址,請排除該欄位。SUBNETWORK
:這項要求中的子網路。
如要升級一或多個現有的內部 IPv6 位址,請使用
compute addresses create
指令,並透過--addresses
旗標提供具體的內部 IPv6 位址:gcloud compute addresses create IPV6_ADDRESS_NAMES \ --addresses IPV6_ADDRESSES \ --region REGION \ --prefix-length PREFIX_LENGTH \ --subnet SUBNETWORK
更改下列內容:
IPV6_ADDRESS_NAMES
:地址名稱。 請按照宣告 IPv6 位址的順序來宣告這些名稱。在這種情況下,IPV6_ADDRESS_NAME_1
會對應到IPV6_ADDRESS_1
,而IPV6_ADDRESS_NAME_2
會對應到IPV6_ADDRESS_2
。IPV6_ADDRESS_1,[IPV6_ADDRESS_2,...]
: 要以 CIDR 格式升級的 IPv6 位址。PREFIX_LENGTH_1,[PREFIX_LENGTH_2,...]
: IPv6 位址的前置碼長度。REGION
:您要保留這個位址的地區。SUBNETWORK
:這項要求中的子網路。
即使將內部 IPv6 位址推送為靜態內部 IPv6 位址,該位址仍會連結到現有執行個體。如要將新推送的靜態內部 IPv6 位址指派給其他資源,請先從現有執行個體取消指派靜態內部 IPv6 位址。
要求主體 (用於推送內部 IPv4 位址):
{ "name": "ADDRESS_NAME", "addressType": "INTERNAL", "address": "IP_ADDRESS", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" }
例如:
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "name": "example-IPv4-address-1", "addressType": "INTERNAL", "address": "10.128.0.2", "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet" }
要求主體,用於升級內部 IPv6 位址:
{ "name": "ADDRESS_NAME", "addressType": "INTERNAL", "address": "IP_ADDRESS", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" "prefixLength": 96 }
例如:
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "name": "example-IPv6-address-1", "addressType": "INTERNAL", "address": "fd20:0:0::", "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet" "prefixLength": 96 }
前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
按一下「內部 IP 位址」。
PROJECT_ID
:這項要求的專案 IDREGION
:這項要求的區域名稱如果資源未使用該 IP 位址,該位址就會回歸到可用內部 IP 位址集區中。
如果某項資源正在使用該 IP 位址,那麼在資源遭到刪除之前,該位址都會與資源保持連結。
- 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
- 選取「內部 IP 位址」分頁標籤。
- 選用:在「Filter」(篩選器) 欄位中輸入
static
,然後從下拉式清單中選取「Static : Type」(靜態:類型)。 - 選取要釋出的靜態內部 IP 位址。
按一下「釋放靜態位址」,然後在對話方塊中按一下「釋放」,確認這項操作。
如果沒有看到這個選項,請按一下頂端選單列中的「更多動作」選單 (
),然後從清單中選取「釋出靜態位址」。ADDRESS_NAME
:要刪除的位址名稱。REGION
:地址所屬的地區。- 瞭解如何為 VM 設定靜態內部 IP 位址。
建立使用靜態內部 IPv4 位址的內部負載平衡器:
。進一步瞭解 IP 位址。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得保留及管理靜態 IP 位址所需的權限,請要求管理員授予您專案的Compute Network Admin (
roles/compute.networkAdmin
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備保留及管理靜態 IP 位址所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要保留及管理靜態 IP 位址,您必須具備下列權限:
限制
保留新的靜態內部 IPv4 或 IPv6 位址
您必須先建立有子網路的 VPC 網路,才能保留新的靜態內部 IP 位址。
如要保留新的靜態內部 IPv6 位址,VPC 網路必須啟用 ULA 內部 IPv6 範圍。 此外,該子網路必須是雙重堆疊子網路,且具有
INTERNAL
IPv6 存取權類型。如要保留獨立內部 IP 位址,請完成下列步驟。
主控台
gcloud
範例
Terraform
您可以使用 Terraform 模組建立內部 IP 位址。
在下列範例中,Terraform 引數含有可變更的範例值。這個範例會建立兩個特定內部 IP 位址:
下列範例會建立兩個動態分配的內部 IP 位址:
API
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
對於 IPv4 和 IPv6 位址,要求的主體必須包含
addressType
欄位 (必須為INTERNAL
)、位址的name
,以及 IP 位址所屬的subnetwork
。要求主體可以視需要包含內部 IP 位址的purpose
。此外,對於內部 IPv4 位址,您可以讓系統自動為您分配 IP 位址,也可以使用
address
指定內部 IPv4 位址。IPv4 位址必須屬於子網路的主要 IP 位址範圍。{ "addressType": "INTERNAL", "name": "IPV4_ADDRESS_NAME", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK", "address": "IPV4_ADDRESS" "purpose": "GCE_ENDPOINT" }
例如:
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "addressType": "INTERNAL", "name": "example-ipv4-address-1", "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet", "address": "10.128.0.12" "purpose": "GCE_ENDPOINT" }
如果是內部 IPv6 位址,您也必須指定
ipVersion
為IPV6
。 系統會從子網路的內部 IPv6 位址範圍,自動指派靜態內部 IPv6 位址。{ "addressType": "INTERNAL", "name": "IPV6_ADDRESS_NAME", "ipVersion": "IPV6", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK", "purpose": "GCE_ENDPOINT" }
例如:
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "addressType": "INTERNAL", "name": "example-ipv6-address-1", "ipVersion": "IPV6" "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet", "purpose": "GCE_ENDPOINT" }
為採用 Cloud Interconnect 的高可用性 VPN 保留靜態內部 IP 位址範圍
您可以保留靜態內部 IP 位址範圍,透過 Cloud Interconnect 使用 HA VPN。
建立靜態內部 IP 位址時,您必須指定
--purpose=IPSEC_INTERCONNECT
標記,以及介於 26 至 29 之間的前置長度 (--prefix-length
)。您預留的區域內部 IPv4 位址會套用至 Cloud Interconnect 使用的高可用性 VPN 閘道。
詳情請參閱「將內部 IP 位址範圍指派給 HA VPN 閘道」。
判斷內部 IPv4 或 IPv6 位址是臨時還是靜態
在大多數情況下,靜態和臨時內部 IP 位址的行為和顯示方式相同。不過,使用靜態內部 IP 位址時,即使刪除並重新建立資源,也能為相同的資源一律使用同一個 IP 位址。一般來說,如果您停止或刪除資源,系統會釋出臨時 IP 位址。
如要判斷位址是靜態還是臨時,請按照下列步驟操作:
將使用中的臨時內部 IPv4 或 IPv6 位址升級為靜態位址
如果您有正在使用的臨時內部 IP 位址,可以將這些位址升級為靜態內部 IP 位址,這樣這些位址就會保留在專案中,直到您主動移除為止。
如要將臨時內部 IP 位址升級為靜態內部 IP 位址,請完成下列步驟。
主控台
gcloud
API
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
對於 IPv4 和 IPv6 位址,要求的主體必須包含
addressType
(必須為INTERNAL
)、位址的name
、要升級的address
,以及 IP 位址所屬的subnetwork
。如果是 IPv6 位址,要求主體還必須包含prefixLength
,並將96
設為值。在共用 VPC 中使用靜態內部 IPv4 或 IPv6 位址
您可以在共用虛擬私有雲網路的共用子網路中,建立已保留的靜態內部 IP 位址。IP 位址物件本身是在與要使用該物件的資源相同的服務專案中建立,即使其值來自共用虛擬私有雲網路所選共用子網路的可用 IP 位址範圍也一樣。如要進一步瞭解這個用途,請參閱下列資源:
列出靜態內部 IPv4 或 IPv6 位址
如要查看所有現有的靜態內部 IP 位址,請完成下列步驟。
主控台
gcloud
使用
gcloud compute addresses list
指令:gcloud compute addresses list
API
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
更改下列內容:
如要列出所有地區的所有位址,請使用
addresses.aggregatedList
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
釋出靜態內部 IPv4 或 IPv6 位址
如果不再需要靜態內部 IP 位址,可以刪除 IP 位址資源來釋出該位址。
如果您使用 Google Cloud 控制台,只有在其他資源未使用靜態 IP 位址的情況下,才能釋出該 IP 位址。
如果您使用 gcloud CLI 或 API,無論 IP 位址是否由其他資源使用,都可以釋出該位址。
如要釋出靜態內部 IPv4 或 IPv6 位址,請完成下列步驟。
主控台
gcloud
使用
compute addresses delete
指令:gcloud compute addresses delete ADDRESS_NAME \ --region REGION
更改下列內容:
例如:
gcloud compute addresses delete example-address-to-delete \ --region us-west1
API
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
這個範例會刪除
us-west1
地區中的位址:DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-09 (世界標準時間)。
-