設定雙重堆疊 (IPv4 和 IPv6)

雙重堆疊子網路可讓 App Engine 資源透過直連虛擬私有雲輸出,將 IPv4 和 IPv6 流量傳送至虛擬私有雲網路。您可以將現有的「僅限 IPv4」(單一堆疊) 子網路變更為雙重堆疊子網路。

子網路類型

虛擬私有雲網路支援下列 Compute Engine 子網路類型

雙堆疊限制

變更現有 App Engine 資源的堆疊類型前,請先考量下列限制:

  • 只有自訂模式虛擬私有雲網路中的子網路,才支援雙重堆疊。如要讓雙重堆疊子網路使用內部存取權類型,必須啟用虛擬私有雲網路內部 IPv6 範圍。設定虛擬私有雲網路,或將其轉換為自訂模式。

  • 與僅支援 IPv4 的子網路相比,雙重堆疊子網路的冷啟動延遲時間可能會較長,進而限制應用程式的擴充速度。

  • 系統不支援 NAT64

事前準備

請務必確認 App Engine 服務代理人具備 Compute 公開 IP 管理員角色 (roles/compute.publicIpAdmin),才能使用具有外部 IPv6 的子網路。

設定雙重堆疊子網路

雙重堆疊子網路同時具有 IPv4 和 IPv6 位址範圍。

如要設定雙堆疊子網路,可以使用 Google Cloud 控制台或 Google Cloud CLI:

控制台

  1. 前往 Google Cloud 控制台並啟用 Compute Engine API:

    啟用 Compute Engine API

  2. 前往「VPC networks」(VPC 網路) 頁面:

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

  3. 如要建立新的自訂模式網路,請按一下「建立虛擬私有雲網路」。如要使用現有虛擬私有雲網路,請按一下虛擬私有雲網路的名稱,顯示其「VPC network details」(虛擬私有雲網路詳細資料) 頁面。

  4. 如果您要建立新網路或轉換現有網路,請輸入名稱,並確認「子網路建立模式」設為「自訂」,然後選取「為這個虛擬私有雲網路設定 ULA 內部 IPv6 範圍」

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

    1. 提供「Name」(名稱)
    2. 選擇「Region」(區域)
    3. 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))
    4. 輸入 IPv4 範圍。這是子網路的主要 IPv4 範圍
    5. 選取 IPv6 存取權類型

      如果沒有內部選項,但您需要這個選項,請確認網路已指派內部 IPv6 範圍。

    6. 按一下「新增」。

gcloud

  1. 如要建立支援雙重堆疊子網路的自訂模式網路,請執行 gcloud compute networks create 指令。

    如要在這個網路的任何子網路上設定內部 IPv6 範圍,請使用 --enable-ula-internal-ipv6 標記。這個選項會從 fd20::/20 範圍內指派 /48 ULA 前置字元,供內部 IPv6 子網路範圍使用。 Google Cloud

    gcloud compute networks create NETWORK \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6

    NETWORK 替換為要包含新子網路的虛擬私有雲網路名稱。

  2. 如要轉換為或更新自訂模式網路,使其支援雙重堆疊子網路,請執行下列指令:

    gcloud compute networks update NETWORK \
      --switch-to-custom-subnet-mode \
      --enable-ula-internal-ipv6

    NETWORK 替換為要包含新子網路的虛擬私有雲網路名稱。

  3. 如要建立具有 IPv6 範圍的雙堆疊子網路,請使用雙堆疊設定執行 subnets create 指令

    gcloud compute networks subnets create SUBNET \
      --network=NETWORK \
      --range=PRIMARY_IPv4_RANGE \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=IPV6_ACCESS_TYPE \
      --region=REGION

    更改下列內容:

    • SUBNET:新子網路的名稱。
    • NETWORK:虛擬私有雲網路的名稱,此網路將包含新的子網路。
    • PRIMARY_IPv4_RANGE:新子網路的主要 IPv4 範圍,採用 CIDR 標記法。詳情請參閱「IPv4 子網路範圍」。
    • IPV6_ACCESS_TYPE:新子網路的 IPv6 存取類型,可以是 internalexternal
    • REGION:新子網路的建立 Google Cloud 區域。

將雙堆疊子網路新增至 App Engine 資源

建立雙堆疊子網路後,請設定 App Engine 服務使用該子網路:

  1. app.yaml 檔案中,於 vpc_access 欄位中指定網路和子網路:

    vpc_access:
      network_interface:
        network: NETWORK
        subnet: SUBNET
      vpc_egress: EGRESS_SETTING

    更改下列內容:

    • NETWORK:您在上一個步驟中建立的網路名稱。

    • SUBNET:您在上一個步驟中建立的子網路名稱。

    • 選用:EGRESS_SETTING:控管傳出流量的轉送方式。這個欄位支援下列設定:

      • all-traffic:所有輸出要求都會透過虛擬私有雲網路轉送。
      • private-ranges-only (預設):只有前往內部 IP 位址的流量會透過虛擬私有雲網路傳輸。網際網路流量會使用預設的 App Engine 路徑。
  2. 執行下列指令,將應用程式部署至 App Engine:

    gcloud beta app deploy

將子網路從單一堆疊變更為雙重堆疊

如要在自訂模式虛擬私有雲網路中,將 IPv6 子網路範圍新增至現有的僅限 IPv4 子網路,請參閱「將子網路的堆疊類型變更為雙重堆疊」。接著,在雙重堆疊子網路上部署 App Engine 服務。

將子網路從雙重堆疊變更為單一堆疊

如要將資源的雙重堆疊子網路變更為單一堆疊子網路,請參閱「將雙重堆疊子網路變更為僅限 IPv4」。然後,在雙堆疊子網路上部署 App Engine 服務。

確認網路和子網路

如要確認資源是否位於虛擬私有雲網路中,請執行下列指令:

gcloud beta app versions describe VERSION --service=SERVICE

更改下列內容:

  • VERSION:服務的已部署版本
  • SERVICE:已部署的服務

以下範例輸出內容顯示您的網路和子網路:

  vpcAccess:
  networkInterfaces:
  - network: projects/YOUR_PROJECT/global/networks/YOUR_NETWORK
    subnet: projects/YOUR_PROJECT/regions/YOUR_REGION/subnetworks/YOUR_SUBNET
  vpcEgress: ALL_TRAFFIC/PRIVATE_RANGES_ONLY