建立及使用 IPv6 子前置碼

本頁說明如何將 IPv6 公用委派前置字元劃分為子前置字元,並指派給特定專案中的資源。建立子前置字元時,設定會包含前置字元長度和模式,決定 IP 位址的使用方式。

支援的模式如下:

  • 如要進一步委派 (--mode=DELEGATION):您可以將子前置碼進一步劃分為更小的子前置碼。您必須先建立非委派模式的子字首,才能將相關聯的 IP 位址指派給資源。

  • 轉送規則 (--mode=EXTERNAL_IPV6_FORWARDING_RULE_CREATION): 可用於轉送規則的區域外部全域單點傳播位址 (GUA) 範圍來源的子字首。建立子字首時,請選擇 IPv6 位址的前置字元長度。轉送規則只能用於外部直通式網路負載平衡器和外部通訊協定轉送。在這個模式下,子字首無法進一步委派。

  • 外部子網路範圍 (--mode=EXTERNAL_IPV6_SUBNETWORK_CREATION):可用於外部子網路範圍的 GUA 來源子前置字串。BYOIP 提供的外部子網路範圍只能供 VM 執行個體使用。在這個模式下,子字首無法進一步委派。

  • 內部子網路範圍 (--mode=INTERNAL_IPV6_SUBNETWORK_CREATION):可用於內部子網路範圍的 GUA 來源子前置字串。指派給內部子網路範圍時,GUA 會私下使用,不會向網際網路通告。這個模式中的子字首無法進一步委派。

不同模式支援不同的前置碼大小和 IPv6 存取類型。詳情請參閱下節說明。

子前置碼模式設定

下表說明各子字首模式的設定和需求。

子前置字串模式或設定 前置長度規格 IPv6 存取權類型
委派的子字首
(--mode=DELEGATION)

可與父項公開委派前置字串大小相同或較小 (前置字串長度較長)

子前置字串的前置字串長度與父項公開委派前置字串的前置字串長度差異不得大於 24

有效長度:/32/40/48/56

  • External
  • Internal
外部轉送規則的子字首
(--mode=EXTERNAL_IPV6_FORWARDING_RULE_CREATION)

可與父項公開委派前置字串大小相同或較小 (前置字串長度較長)

子前置字串的前置字串長度與父項公開委派前置字串的前置字串長度差異不得大於 24

有效長度:/32/40/48/56/64/72

  • External
設定:外部轉送規則可分配的前置字串長度

決定外部轉送規則使用的 IPv6 位址範圍前置字串長度。為外部轉送規則建立 IPv6 子前置字元時指定。

必須小於相關聯的子前置字串,可分配前置字串長度和子前置字串長度之間的差異必須至少為 8,且不得大於 32

有效長度:/48/56/64/72/80/88/96

預設長度:

  • 如果父項子前置字串的長度為 /64/72,則預設可分配的前置字串長度為 /96
  • 否則,預設可分配的前置字串長度為 /64
外部子網路範圍的子前置字元
(--mode=EXTERNAL_IPV6_SUBNETWORK_CREATION)

可與父項公開委派前置字串大小相同或較小 (前置字串長度較長)

子前置字串的前置字串長度與父項公開委派前置字串的前置字串長度差異不得大於 24

有效長度:/32/40/48/56

  • External
內部子網路範圍的子前置字元
(--mode=INTERNAL_IPV6_SUBNETWORK_CREATION)

可與父項公開委派前置字串大小相同或較小 (前置字串長度較長)

子前置字串的前置字串長度與父項公開委派前置字串的前置字串長度差異不得大於 24

有效長度:/32/40/48/56

  • Internal

子前置碼委派

處於委派模式的 IPv6 子前置字元可以轉派為較小的子前置字元。您可以將位址區塊指派給不同專案或區域。子前置字首的子委派作業有以下限制:

  • 公開委派前置字串最多可從公開通告的前置字串次要委派三次。
  • IPv6 子字首只能在委派模式下轉派。
  • 公開委派前置字串和子前置字串會沿用您建立父項公開通告前置字串時指定的存取權類型
  • 委派模式子前置字串的前置字串長度會影響子前置字串的可能模式。這是因為子前置字串必須具有適用於其模式的前置字串長度,且前置字串長度必須與父項相同或小於父項。

以下範例示範多層級委派。每個步驟都遵守子前置字串模式表格中詳述的前置字串長度和模式限制。如果您有外部存取公開通告前置字串,且 IP 位址範圍為 2001:db8::/32,可以執行下列操作:

  1. 您可以從上層公開通告的前置字串,建立一或多個頂層公開委派前置字串。頂層委派的公開前置字串大小可與父項公開宣傳前置字串相同或較小,且必須處於委派模式。在這個範例中,父項前置字串的整個 IP 位址範圍都會委派 (2001:db8::/32)。

  2. 您可以從頂層公開委派前置字串建立一或多個子前置字串。子前置字串的大小可以與父項公開委派前置字串相同或較小,且可採用與存取類型相容的任何模式。在本範例中,系統會使用 IP 位址範圍 2001:db8::/48 建立另一個委派模式子前置字元。

  3. 您可以從先前的前置碼建立一或多個子前置碼。如要讓資源使用這些 IP 位址,前置碼必須處於非委派模式,例如轉送規則或子網路建立模式。在本範例中,我們建立了兩個子字首:一個用於外部子網路範圍,IP 位址範圍為 2001:db8:0:0::/56;另一個用於外部轉送規則,IP 位址範圍為 2001:db8:1:0::/64

此時,您無法進一步劃分使用 2001:db8:0:0::/562001:db8:1:0::/64 範圍的子前置字串。如果子前置字串處於非委派模式,或是已從上層公開通告的前置字串委派三層,就無法分割。在本例中,這兩個條件都成立。

事前準備

  1. 建立 IPv6 公開宣傳的前置字元
  2. 建立 IPv6 公開委派前置字串

角色

如要取得完成本指南中工作所需的權限,請要求管理員授予您專案的「Compute Public IP 管理員 」(roles/compute.publicIpAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

建立 IPv6 子前置碼

建立 IPv6 子字首時,子字首中的所有 IP 位址都會變成可用,沒有保留的網路位址或廣播位址。

子字首的模式無法變更。如有需要,可以刪除並重新建立。如要刪除子字首,必須確保沒有任何資源使用該字首。

你無法編輯子字首來變更名稱。最佳做法是選擇不需要變更的通用名稱,例如 sub-2001-db8-0-0-0-0-0-0-40,其中 sub 表示資源類型,2001-db8-0-0-0-0-0-0-40 則表示特定前置字串和前置字串長度。

控制台

  1. 前往 Google Cloud 控制台的「Bring your own IP」(自備 IP)

    前往「自備 IP」

  2. 按一下要細分的公開委派前置字串。

  3. 按一下「建立子前置字元」

  4. 輸入子字首名稱,並視需要輸入說明。

  5. 在「Prefix length」(前置字元長度) 清單中,選取子前置字元的前置字元長度。

  6. 輸入要指派給子前置碼的 IPv6 位址範圍。

  7. 在「這個 PDP 的使用方式」部分,執行下列操作:

    • 如要建立子前置,以便進一步委派,請選取「細分為更小的 PDP」
    • 如要建立子前置字元,並將位址指派給資源,請選取「分配要使用的 IPv6 位址範圍」,然後指定 IP 位址的使用方式:
      • 如要為外部直通式網路負載平衡器和外部通訊協定轉送建立外部轉送規則,請選取「外部網路負載平衡器轉送規則」,然後選取「可分配的前置字元長度」
      • 如要使用只能代管 VM 的外部子網路範圍,請選取「VM 的外部子網路範圍」
      • 如要使用內部子網路範圍,請選取「內部子網路範圍」
  8. 在「專案」選單中,選取要使用子前置字元的專案。

  9. 點選「建立」

gcloud

使用 gcloud compute public-delegated-prefixes create 指令。

gcloud compute public-delegated-prefixes create SUB_PREFIX_NAME \
    --range=SUB_PREFIX_RANGE \
    --mode=MODE \
    --public-delegated-prefix=PDP_NAME \
    --region=PDP_REGION \
    --project=PROJECT_ID \
    [--allocatable-prefix-length=PREFIX_LENGTH]

更改下列內容:

  • SUB_PREFIX_NAME:這個子字首的名稱

  • SUB_PREFIX_RANGE:這個子前置字元的 IP 位址範圍,以 CIDR 標記法表示

  • MODE:這個子字首的 mode,必須是下列其中一種:

    • DELEGATION
    • EXTERNAL_IPV6_FORWARDING_RULE_CREATION
    • EXTERNAL_IPV6_SUBNETWORK_CREATION
    • INTERNAL_IPV6_SUBNETWORK_CREATION

    模式必須與父項公開委派前置字元的存取類型相容。

  • PDP_NAME:這個子前置字串的父項公開委派前置字串

  • PDP_REGION:這個子字首的區域

  • PROJECT_ID:要將子字首委派給的專案

    如果省略 --project 旗標,系統會在與上層委派公開前置字串相同的專案中建立子前置字串。

  • PREFIX_LENGTH:轉送規則使用的 IPv6 位址範圍前置字元長度

    請只在 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 模式下使用這個旗標。 預設值和可能的值取決於 SUB_PREFIX_RANGE 的前置字元長度。詳情請參閱轉送規則可分配的前置字元長度

指派 IPv6 子網路範圍

您可以使用子前置字元指派外部或內部 IPv6 子網路範圍。從子前置碼建立的 IPv6 子網路範圍會使用全域單點播送位址 (GUA)。您使用指派範圍的方式取決於子前置字串的存取類型和模式:

  • 外部子網路範圍是從 EXTERNAL_IPV6_SUBNETWORK_CREATION 模式子前置字串指派。BYOIP 提供的外部子網路範圍只能用於保留 VM 端點類型的靜態外部 IP 位址,以及將靜態或臨時外部位址指派給 VM 執行個體。

  • 內部子網路範圍是從 INTERNAL_IPV6_SUBNETWORK_CREATION 模式子前置字串指派。系統會使用私用 GUA 設定 BYOIP 提供的內部子網路範圍,且不會向網際網路宣傳。這些位址的使用方式與 Google 提供的 ULA 內部子網路範圍相同。

使用 IPv6 BYOIP 範圍建立子網路

建立新子網路時,您可以從子前置字元分配 IPv6 位址範圍。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 如要查看「虛擬私有雲網路詳細資料」頁面,請按一下虛擬私有雲網路的名稱。

  3. 在「子網路」分頁中,按一下「新增子網路」。 在顯示的面板中:

    1. 提供名稱。
    2. 請選取區域。
    3. 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊)) 或「IPv6 (single-stack)」(IPv6 (單一堆疊))
    4. 如要建立雙重堆疊子網路,請輸入 IPv4 範圍。
    5. 在「IPv6 存取權類型」中,選取要指派給子網路的子前置字元存取權類型。
    6. 勾選「From PDP」(來自 PDP) 核取方塊。
    7. 在「PDP」PDP清單中,選取要用於將 IP 位址分配給子網路的子字首。
    8. 選用:輸入要指派給子網路的特定 IPv6 CIDR 範圍。 如要讓 Google Cloud 自動選取 地址區塊,請略過這個步驟。
    9. 按一下「新增」。

gcloud

使用 gcloud compute networks subnets create 指令。

gcloud compute networks subnets create SUBNET \
    --network=NETWORK \
    --stack-type=STACK_TYPE \
    --ipv6-access-type=ACCESS_TYPE \
    --region=REGION \
    --ip-collection=PDP_NAME \
    {--external-ipv6-prefix=EXTERNAL_IPV6_RANGE | --internal-ipv6-prefix=INTERNAL_IPV6_RANGE}
    [--range=PRIMARY_IPv4_RANGE]

更改下列內容:

  • SUBNET:新子網路的名稱
  • NETWORK:虛擬私有雲網路的名稱,此網路將包含新的子網路
  • STACK_TYPE:子網路的堆疊類型

    堆疊類型可以是 IPV4_IPV6IPV6_ONLY。如果您使用 IPV4_IPV6,請務必使用 --range 標記指定主要 IPv4 範圍。

  • ACCESS_TYPE:您要指派給這個子網路的子首碼存取類型。輸入 EXTERNAL,為子網路指派外部 GUA 子網路範圍。輸入 INTERNAL,為子網路指派私用內部 GUA 子網路範圍。

  • REGION:建立新子網路的 Google Cloud 區域,必須與這個子網路的子前置字元位於相同區域

  • PDP_NAMEEXTERNAL_IPV6_SUBNETWORK_CREATIONINTERNAL_IPV6_SUBNETWORK_CREATION 模式中的 IPv6 子前置字元名稱,用於將 IP 位址指派給這個子網路

  • EXTERNAL_IPV6_RANGEINTERNAL_IPV6_RANGE:要指派給這個子網路的選用 /64 IPv6 CIDR 範圍

    該範圍必須與子網路的子字首相關聯。如果留空, Google Cloud 會從相關聯子字首的 CIDR 區塊中,為子網路指派隨機 /64 範圍。

  • PRIMARY_IPv4_RANGE:適用於雙堆疊子網路,新子網路的主要 IPv4 範圍 (採用 CIDR 標記法)

將 IPv6 BYOIP 範圍新增至僅支援 IPv4 的子網路

您可以將僅支援 IPv4 的子網路變更為雙重堆疊子網路,並使用子前置字元的 IPv6 位址範圍。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下包含要更新子網路的 VPC 網路名稱。

  3. 按一下「子網路」,然後按一下要更新的子網路名稱。

  4. 按一下 [編輯]

  5. 在「IP stack type」(IP 堆疊類型) 區段中,選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))

  6. 在「IPv6 存取權類型」中,選取要指派給子網路的子前置字元存取權類型。

  7. 按一下「從 PDP」核取方塊。

  8. 在「PDP」PDP清單中,選取要用於將 IP 位址分配給子網路的子字首。

  9. 選用:輸入要指派給子網路的特定 IPv6 位址範圍。

  10. 按一下 [儲存]

gcloud

使用 gcloud compute networks subnets update 指令。

gcloud compute networks subnets update SUBNET \
    --ipv6-access-type=ACCESS_TYPE \
    --stack-type=IPV4_IPV6 \
    --ip-collection=PDP_NAME \
    --region=REGION \
    {--external-ipv6-prefix=EXTERNAL_IPV6_RANGE | --internal-ipv6-prefix=INTERNAL_IPV6_RANGE}

更改下列內容:

  • SUBNET:新子網路的名稱
  • ACCESS_TYPE:您要指派給這個子網路的子首碼存取類型。輸入 EXTERNAL,為子網路指派外部 GUA 子網路範圍。輸入 INTERNAL,為子網路指派私用內部 GUA 子網路範圍。
  • PDP_NAMEEXTERNAL_IPV6_SUBNETWORK_CREATIONINTERNAL_IPV6_SUBNETWORK_CREATION 模式中的 IPv6 子前置字元名稱,用於將 IP 位址指派給這個子網路
  • REGION:建立新子網路的 Google Cloud 區域,必須與這個子網路的子前置字元位於相同區域
  • EXTERNAL_IPV6_RANGEINTERNAL_IPV6_RANGE:要指派給這個子網路的選用 /64 IPv6 CIDR 範圍

    該範圍必須與子網路的子字首相關聯。如果留空, Google Cloud 會從相關聯子字首的 CIDR 區塊中,為子網路指派隨機 /64 範圍。

在具有 IPv6 BYOIP 範圍的子網路中部署資源

使用 BYOIP 提供的範圍建立或更新子網路後,您就可以部署使用該範圍 IP 位址的資源。

如要瞭解如何為執行個體指派靜態和臨時 IPv6 位址的一般資訊,請參閱「為執行個體設定 IPv6 位址」。

如要瞭解如何將靜態外部 IPv6 位址指派給 VM 執行個體,請參閱下列文章:

如要瞭解如何將內部 IPv6 位址指派給 VM 執行個體或轉送規則,請參閱下列文章:

建立外部轉送規則

您可以使用處於 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 模式的子字首,建立具有區域外部 IPv6 位址範圍的轉送規則。轉送規則只能用於外部直通式網路負載平衡器和外部通訊協定轉送。

如要瞭解詳情,請參考下列資源:

清單前置字串

您可以列出專案中的所有公開通告前置字串和公開委派前置字串 (包括子前置字串)。

控制台

  1. 前往 Google Cloud 控制台的「Bring your own IP」(自備 IP)

    前往「自備 IP」

  2. 系統會顯示所有公開通告的前置字串、公開委派前置字串和子前置字串。

gcloud

如要列出公開委派前置字串 (包括子前置字串),請使用 public-delegated-prefixes list 指令

gcloud compute public-delegated-prefixes list

後續步驟