雙重堆疊子網路可讓 App Engine 資源透過直連虛擬私有雲輸出,將 IPv4 和 IPv6 流量傳送至虛擬私有雲網路。您可以將現有的「僅限 IPv4」(單一堆疊) 子網路變更為雙重堆疊子網路。
子網路類型
虛擬私有雲網路支援下列 Compute Engine 子網路類型:
僅支援 IPv4 (單一堆疊) 的子網路,僅含 IPv4 子網路範圍
IPv4 和 IPv6 (雙重堆疊) 子網路,同時具有 IPv4 和 IPv6 子網路範圍
雙堆疊限制
變更現有 App Engine 資源的堆疊類型前,請先考量下列限制:
只有自訂模式虛擬私有雲網路中的子網路,才支援雙重堆疊。如要讓雙重堆疊子網路使用內部存取權類型,必須啟用虛擬私有雲網路內部 IPv6 範圍。設定虛擬私有雲網路,或將其轉換為自訂模式。
與僅支援 IPv4 的子網路相比,雙重堆疊子網路的冷啟動延遲時間可能會較長,進而限制應用程式的擴充速度。
系統不支援 NAT64。
事前準備
請務必確認 App Engine 服務代理人具備 Compute 公開 IP 管理員角色 (roles/compute.publicIpAdmin),才能使用具有外部 IPv6 的子網路。
設定雙重堆疊子網路
雙重堆疊子網路同時具有 IPv4 和 IPv6 位址範圍。
如要設定雙堆疊子網路,可以使用 Google Cloud 控制台或 Google Cloud CLI:
控制台
前往 Google Cloud 控制台並啟用 Compute Engine API:
前往「VPC networks」(VPC 網路) 頁面:
如要建立新的自訂模式網路,請按一下「建立虛擬私有雲網路」。如要使用現有虛擬私有雲網路,請按一下虛擬私有雲網路的名稱,顯示其「VPC network details」(虛擬私有雲網路詳細資料) 頁面。
如果您要建立新網路或轉換現有網路,請輸入名稱,並確認「子網路建立模式」設為「自訂」,然後選取「為這個虛擬私有雲網路設定 ULA 內部 IPv6 範圍」。
在「子網路」分頁中,按一下「新增子網路」。在顯示的面板中:
- 提供「Name」(名稱)。
- 選擇「Region」(區域)。
- 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))。
- 輸入 IPv4 範圍。這是子網路的主要 IPv4 範圍。
選取 IPv6 存取權類型。
如果沒有內部選項,但您需要這個選項,請確認網路已指派內部 IPv6 範圍。
按一下「新增」。
gcloud
如要建立支援雙重堆疊子網路的自訂模式網路,請執行
gcloud compute networks create指令。如要在這個網路的任何子網路上設定內部 IPv6 範圍,請使用
--enable-ula-internal-ipv6標記。這個選項會從fd20::/20範圍內指派/48ULA 前置字元,供內部 IPv6 子網路範圍使用。 Google Cloudgcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
將 NETWORK 替換為要包含新子網路的虛擬私有雲網路名稱。
如要轉換為或更新自訂模式網路,使其支援雙重堆疊子網路,請執行下列指令:
gcloud compute networks update NETWORK \ --switch-to-custom-subnet-mode \ --enable-ula-internal-ipv6
將 NETWORK 替換為要包含新子網路的虛擬私有雲網路名稱。
如要建立具有 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 存取類型,可以是
internal或external。 - REGION:新子網路的建立 Google Cloud 區域。
將雙堆疊子網路新增至 App Engine 資源
建立雙堆疊子網路後,請設定 App Engine 服務使用該子網路:
在
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 路徑。
執行下列指令,將應用程式部署至 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