デュアルスタック(IPv4 と IPv6)を設定する

デュアルスタック サブネットを使用すると、App Engine リソースはダイレクト VPC 下り(外向き)を使用して VPC ネットワークに IPv4 トラフィックと IPv6 トラフィックを送信できます。既存の IPv4 のみ(シングルスタック)のサブネットをデュアルスタック サブネットに変更できます。

サブネットのタイプ

VPC ネットワークは、次の Compute Engine サブネット タイプをサポートしています。

  • IPv4 のみ(単一スタック)のサブネット(IPv4 サブネット範囲のみ)

  • IPv4 と IPv6(デュアル スタック)のサブネット(IPv4 と IPv6 の両方のサブネット範囲)

デュアルスタックの制限事項

既存の App Engine リソースのスタックタイプを変更する前に、次の制限事項を考慮してください。

  • デュアルスタック サポートは、カスタムモードの VPC ネットワークのサブネットでのみ使用できます。デュアルスタック サブネットで内部アクセスタイプを使用できるようにするには、VPC ネットワークの内部 IPv6 範囲を有効にする必要があります。VPC ネットワークをカスタムモードに設定または変換します。

  • IPv4 のみのサブネットと比較して、デュアルスタック サブネットではコールド スタートのレイテンシが増加し、アプリケーションのスケールアップ速度が制限される可能性があります。

  • NAT64 はサポートされていません。

始める前に

外部 IPv6 でサブネットを使用するには、App Engine サービス エージェントに Compute パブリック IP 管理者ロール(roles/compute.publicIpAdminがあることを確認してください。

デュアルスタック サブネットを設定する

デュアルスタック サブネットには、IPv4 アドレス範囲と IPv6 アドレス範囲の両方が存在します。

デュアルスタック サブネットを設定するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

  1. Google Cloud コンソールに移動して、Compute Engine API を有効にします。

    Compute Engine API を有効にする

  2. [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  3. 新しいカスタムモード ネットワークを作成する場合は、[VPC ネットワークを作成] をクリックします。既存の VPC ネットワークを使用している場合は、VPC ネットワークの名前をクリックして、[VPC ネットワークの詳細] ページを表示します。

  4. 新しいネットワークを作成する場合や既存のネットワークを変換する場合は、名前を入力し、[サブネット作成モード] が [カスタム] に設定されていることを確認してから、[この VPC ネットワークの ULA 内部 IPv6 範囲を構成する] を選択します。

  5. [サブネット] タブから [サブネットを追加] をクリックします。表示されるパネルで、次の手順を実施します。

    1. 名前を入力します。
    2. リージョンを選択します。
    3. [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。
    4. IPv4 範囲を入力します。これはサブネットのプライマリ IPv4 範囲です。
    5. [IPv6 アクセスタイプ] を選択します。

      [内部] オプションを使用できない場合は、ネットワークに内部 IPv6 範囲が割り当てられていることを確認します。

    6. [追加] をクリックします。

gcloud

  1. デュアルスタック サブネットをサポートするカスタムモード ネットワークを作成するには、gcloud compute networks create コマンドを実行します。

    このネットワークのサブネットで内部 IPv6 範囲を構成するには、--enable-ula-internal-ipv6 フラグを使用します。このオプションでは、 Google Cloud が内部 IPv6 サブネット範囲に使用する fd20::/20 範囲内の /48 ULA 接頭辞を割り当てます。

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

    NETWORK は、新しいサブネットを含む VPC ネットワークの名前に置き換えます。

  2. デュアルスタック サブネットをサポートするようにカスタムモード ネットワークを変換または更新するには、次のコマンドを実行します。

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

    NETWORK は、新しいサブネットを含む VPC ネットワークの名前に置き換えます。

  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: 新しいサブネットが追加される VPC ネットワークの名前。
    • PRIMARY_IPv4_RANGE: 新しいサブネットのプライマリ IPv4 範囲(CIDR 表記)。詳細については、IPv4 サブネットの範囲をご覧ください。
    • IPV6_ACCESS_TYPE: 新しいサブネットの IPv6 アクセスタイプ(internal または external)。
    • 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: すべてのアウトバウンド リクエストが VPC ネットワーク経由でルーティングされます。
      • private-ranges-only(デフォルト): 内部 IP アドレスへのトラフィックのみが VPC ネットワーク経由で転送されます。インターネット トラフィックはデフォルトの App Engine パスを使用します。
  2. 次のコマンドを実行して、App Engine にデプロイします。

    gcloud beta app deploy

サブネットをシングルスタックからデュアルスタックに変更する

カスタムモードの VPC ネットワークの既存の IPv4 のみのサブネットに IPv6 サブネット範囲を追加するには、サブネットのスタックタイプをデュアルスタックに変更するをご覧ください。次に、デュアルスタック サブネットに App Engine サービスをデプロイします。

サブネットをデュアルスタックからシングルスタックに変更する

リソースのデュアルスタック サブネットをシングルスタック サブネットに変更するには、デュアルスタック サブネットを IPv4 のみに変更するをご覧ください。次に、デュアルスタック サブネットに App Engine サービスをデプロイします。

ネットワークとサブネットを確認する

リソースが VPC ネットワーク上にあることを確認するには、次のコマンドを実行します。

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