保留靜態外部 IP 位址
您可以預留靜態外部 IP 位址。您也可以列出及釋出預留的靜態外部 IP 位址。如要將靜態外部 IP 位址指派給虛擬機器 (VM) 執行個體,請參閱「設定靜態外部 IP 位址」。
外部 IP 位址可以是靜態或臨時。如果 VM 需要固定的外部 IP 位址,您可以取得靜態外部 IP 位址。您可以預留新的外部 IP 位址,或將現有的臨時外部 IP 位址升級。
如需靜態內部 IP 位址,請改為參閱「預留靜態內部 IP 位址」。
本頁面說明如何從 Google 的外部 IP 位址集區保留靜態外部 IP 位址。如要瞭解如何保留透過自備 IP (BYOIP) 位址匯入的靜態外部 IP 位址,請參閱「自備 IP 位址」。
事前準備
- 瞭解 IP 位址。
- 瞭解靜態外部 IP 位址的配額和限制。
- 瞭解外部 IP 位址定價。
- 如果尚未設定驗證,請先完成設定。驗證是驗證身分的程序,可讓您存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以按照下列步驟進行驗證。
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。
gcloud
安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:
gcloud init如果採用外部識別資訊提供者 (IdP),必須先 使用聯合身分登入 gcloud CLI。
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用的是本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用的是 Cloud Shell,則不必執行這項操作。
如果系統傳回驗證錯誤,且您使用的是外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果採用外部識別資訊提供者 (IdP),必須先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
-
必要的角色
如要取得保留及管理靜態 IP 位址所需的權限,請要求管理員授予您專案的 Compute 網路管理員 (roles/compute.networkAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備預留及管理靜態 IP 位址所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
必須具備下列權限,才能預留及管理靜態 IP 位址:
-
compute.addresses.createIP 位址 -
compute.addresses.createInternalIP 位址 -
compute.networks.list網路 -
compute.subnetworks.use子網路 -
compute.subnetworks.list子網路
關於靜態外部 IP 位址
靜態外部 IP 位址是一種資源,可保留 IP 位址供專案中的其他資源使用。保留的位址會維持固定,並可供客戶和服務使用,直到您決定釋出為止。您也可以將臨時外部 IP 位址升級為靜態外部 IP 位址。
詳情請參閱「IP 位址」。
下表列出Google Cloud支援的靜態外部 IP 位址。
| IP 位址類型 | 資源 | IP 範圍 | 來源 | 關聯資源數 |
|---|---|---|---|---|
| 區域性外部 IPv4 位址 | VM 和區域性負載平衡器 | /32 |
Google 的外部 IP 位址集區,或透過 BYOIP 匯入 | 專案 |
| 區域性外部 IPv6 位址 | VM 和支援的區域性負載平衡器 | /96 |
子網路的外部 IPv6 位址範圍,可來自 Google 的外部 IP 位址集區,或透過 BYOIP 匯入 | 子網路 |
| 全域外部 IPv4 位址 | 全域負載平衡器 | /32 |
Google 的外部 IP 位址集區,或透過 BYOIP 匯入 | 專案 |
| 全域外部 IPv6 位址 | 全域負載平衡器 | /64 |
Google 的外部 IP 位址集區 | 專案 |
如需區域性和全域負載平衡器清單,請參閱「負載平衡器類型摘要」。
指派的外部 IP 位址與 VM 位於相同的實體主機,且與 VM 位於相同的區域,適用於所有用途,包括轉送、延遲和定價。無論網際網路地理位置查詢資訊為何,都是如此。
限制
一次只有一個資源可使用靜態外部 IP 位址。
每個運算執行個體可以有多個網路介面,每個介面可以根據其堆疊類型指派下列 IP 位址:
- 僅限 IPv4 的介面:
- 內部 IPv4 位址 (必要)
- 外部 IPv4 位址 (選用)
- 雙重堆疊 (IPv4 和 IPv6) 介面:
- 內部 IPv4 位址 (必要)
- 外部 IPv4 位址 (選用)
/96IPv6 位址範圍,內部或外部,但不能兩者皆有 (必要)
- 僅限 IPv6 的介面:
/96IPv6 位址範圍,可以是內部或外部,但不能兩者皆是 (必要)
- 僅限 IPv4 的介面:
如果運算執行個體具有僅限 IPv6 的網路介面,您就無法取消指派或變更外部 IPv6 位址。不過,您可以將資源的臨時外部 IP 位址升級為靜態外部 IP 位址,這樣即使資源刪除後,位址仍會保留。
靜態 IP 位址的名稱無法變更。
附註:網路介面可接收來自多個轉送規則的流量,這些規則可能適用於其他外部 IP 位址。任意數量的外部 IP 位址都可以透過這些轉送規則參照網路介面,但每個網路介面只能指派一個外部 IPv4 位址和一個外部 /96 IPv6 位址範圍。
如要進一步瞭解負載平衡和轉送規則,請參閱負載平衡文件。
預留新的靜態外部 IP 位址
保留位址後,請在建立新 VM 時指派位址,或指派給現有 VM。
控制台
- 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
- 按一下「保留外部」。
- 在「Name」(名稱) 欄位中,輸入 IP 位址名稱。
- 指定網路服務級別為「Premium」或「Standard」。
- 指定 IPv4 或 IPv6 位址。
- 指定這個 IP 位址是「區域性」還是「全域」。
- 如要為全域負載平衡器保留靜態 IP 位址,請選擇「Global」(全域),然後按一下「Reserve」(保留)。
- 如要為 VM 或區域性負載平衡器保留靜態 IP 位址,請選擇「Regional」(區域性),然後選取要建立位址的區域。
如要保留區域性外部 IPv6 位址,請一併選擇下列項目:
- 網路:虛擬私有雲網路
- 子網路:要從中指派靜態區域 IPv6 位址的子網路
「Static IPv6 range」(靜態 IPv6 範圍):如要指定要保留的靜態外部 IPv6 位址範圍,請選取「Let me choose」(讓我選擇),然後從子網路的
/64外部 IPv6 位址範圍輸入自訂/96IPv6 位址範圍。否則,系統會自動在子網路中為您指派靜態外部 IPv6 位址範圍。如果是 Google 提供的外部 IPv6 子網路範圍,VM 的 IP 位址必須來自子網路
/64外部 IPv6 位址範圍的前半部 (/65),負載平衡的 IP 位址則必須來自後半部 (/65)。詳情請參閱「外部 IPv6 規格」。「端點類型」:選擇「VM 執行個體」或「外部直通式網路負載平衡器」
選用:如要為 VM 保留靜態外部 IP 位址,請在「Attached to」(連結至) 清單中,選取要連結 IP 位址的 VM。
按一下「Reserve」(保留),保留 IP 位址。
gcloud
如要保留靜態外部 IP 位址,請使用 gcloud compute addresses create 指令。
請按照下列操作說明,保留靜態外部 IPv4 或 IPv6 位址:
如要保留全域外部 IP 位址,請使用
--global旗標:gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version=IP_VERSION
更改下列內容:
ADDRESS_NAME:要與這個位址建立關聯的名稱。IP_VERSION:IP 版本,可以是IPv4或IPv6。
如要保留區域性外部 IPv4 位址,請使用
--region旗標指定區域:gcloud compute addresses create ADDRESS_NAME \ --region=REGION
更改下列內容:
ADDRESS_NAME:要與這個位址建立關聯的名稱。REGION:IP 位址的區域。
如要保留區域性外部 IPv6 位址,請執行下列任一操作:
- 如要從子網路自動分配區域性外部 IPv6 位址,請為
--ip-version旗標指定IPV6:
gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=ENDPOINT_TYPE- 如要從子網路保留特定區域性外部 IPv6 位址,請指定
--addresses旗標。請勿加入--ip-version旗標:
gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET_NAME \ --endpoint-type=ENDPOINT_TYPE \ --addresses=IPV6_ADDRESS更改下列內容:
ADDRESS_NAME:要與這個位址建立關聯的名稱。REGION:IP 位址的區域。SUBNET_NAME:要從中指派靜態區域 IPv6 位址的子網路。子網路必須指派外部 IPv6 位址範圍。ENDPOINT_TYPE:如果是區域性外部 IPv6 位址,請指定端點類型,VM或NETLB。IPV6_ADDRESS:要保留的 IPv6 位址,必須是子網路中的/96IPv6 位址範圍。如果是 Google 提供的外部 IPv6 子網路範圍,VM 的 IP 位址必須來自子網路
/64外部 IPv6 位址範圍的前半部 (/65),負載平衡的 IP 位址則必須來自後半部 (/65)。詳情請參閱「外部 IPv6 規格」。
- 如要從子網路自動分配區域性外部 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": "IPV6_NETWORK_TIER", "subnetwork": "SUBNET" "address": "IPV6_ADDRESS" }更改下列內容:
IPV6_NETWORK_TIER:子網路的網路服務級別。可以是STANDARD(預先發布版) 或PREMIUM。SUBNET:這項專案的子網路。IPV6_ADDRESS:要保留的 IPv6 位址,必須是子網路中的/96IPv6 位址範圍。如未指定,系統會自動分配 IP 位址。如果是 Google 提供的外部 IPv6 子網路範圍,VM 的 IP 位址必須來自子網路
/64外部 IPv6 位址範圍的前半部 (/65),負載平衡的 IP 位址則必須來自後半部 (/65)。詳情請參閱「外部 IPv6 規格」。
如要查看結果,請使用
addresses.get方法。
Go
Java
Python
升級暫時外部 IP 位址
如果 VM 具有臨時外部 IP 位址,且您想將該 IP 位址永久指派給專案,請將臨時外部 IP 位址升級為靜態外部 IP 位址。將臨時外部 IP 位址升級為保留位址,不會導致 Google Cloud 捨棄傳送至 VM 的封包。包括直接傳送至 VM 或透過負載平衡器傳送的封包。
控制台
- 前往「IP addresses」(IP 位址) 頁面。
- 按一下「外部 IP 位址」。
- 選用:在「Filter」(篩選器) 欄位中,搜尋要升級的臨時 IP 位址。
- 在要升級的 IP 位址「More actions」(更多動作) 選單 () 中,選取「Promote to static IP address」(升級為靜態 IP 位址)。
- 輸入新的靜態 IP 位址名稱,然後按一下「Reserve」(預留)。
gcloud
請按照下列操作說明,將靜態外部 IPv4 或 IPv6 位址升級:
如要將臨時外部 IPv4 位址升級為靜態外部 IPv4 位址,請使用
compute addresses create指令搭配--addresses旗標,提供臨時外部 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 位址,請使用
gcloud compute addresses create指令搭配--addresses旗標,提供臨時外部 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 位址,仍會保持附加至 VM。如要將新升級的靜態外部 IP 位址指派給其他資源,請取消指派現有 VM 的靜態外部 IP 位址。
列出靜態外部 IP 位址
如要列出您為專案保留的靜態外部 IP 位址,請按照下列步驟操作。
控制台
前往 Google Cloud 控制台的「IP addresses」(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 addresses」(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:要求的專案 IDREGION:要求的區域名稱ADDRESS_NAME:IP 位址的名稱
如要描述全域 IPv4 或 IPv6 位址,請呼叫
globalAddresses.get方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
更改下列內容:
PROJECT_ID:要求的專案 IDADDRESS_NAME:IP 位址的名稱
Go
Java
Python
釋出靜態外部 IP 位址
如果不再需要靜態外部 IPv4 或 IPv6 位址,可以刪除 IP 位址資源,釋出 IP 位址。
如果使用 Google Cloud 控制台,只有在其他資源未使用靜態 IP 位址時,才能釋出該位址。
如果使用 gcloud CLI 或 API,無論 IP 位址是否由其他資源使用,您都可以釋出該位址。
如果資源未使用該 IP 位址,系統會將該 IP 位址傳回可用的外部 IP 位址集區。
如果 IP 位址正由資源使用,則會保持附加至資源,直到資源刪除為止。
控制台
前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。
按一下「外部 IP 位址」。
選用:在「Filter」(篩選器) 欄位中輸入
static,然後從下拉式選單中選取「Static : Type」(靜態:類型)。選取要釋出的靜態外部 IP 位址。
按一下「釋出靜態位址」。
如果沒有看到這個選項,請按一下頂端選單列中的「More actions」(更多動作) 選單 (),然後從清單中選取「Release static address」(釋出靜態位址)。
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
後續步驟
- 瞭解如何為新的或現有的 VM 設定靜態外部 IP 位址。
- 如要瞭解轉送規則的 IP 位址規格,以及如何使用轉送規則,請參閱「轉送規則總覽」。
- 進一步瞭解 IP 位址。