インスタンスとインスタンス テンプレートでの IPv6 の構成


インスタンスが接続されているサブネットに IPv6 範囲が構成されている場合は、Compute Engine インスタンスに IPv6 アドレスを構成できます。

IPv6 の詳細については、IPv6 サブネットの範囲をご覧ください。

仕様

  • IPv4 と IPv6 の両方の構成を持つコンピューティング インスタンスはデュアルスタックです。IPv6 アドレスは、ネットワーク インターフェースで構成されている IPv4 アドレスに追加で構成されるものです。

  • デュアルスタック インスタンスまたは IPv6 専用インスタンスのインターフェースには、IPv6 アドレスの /96 範囲が 1 つ割り振られます。範囲(/128)内の最初の IPv6 アドレスはインターフェース上で構成されます。

  • インスタンス上の任意のインターフェースに IPv6 アドレスを構成できます。複数のネットワーク インターフェースの構成の詳細については、複数のネットワーク インターフェースの概要をご覧ください。

  • VM のネットワーク インターフェースのスタックタイプによって、接続できるサブネットのタイプが決まります。

    • IPv4 のみのインターフェースは、デュアルスタック サブネットと IPv4 のみのサブネットに接続できます。
    • デュアルスタック インターフェースは、デュアルスタック サブネットに接続できます。
    • IPv6 専用インターフェースは、デュアルスタック サブネットと IPv6 専用サブネット(プレビュー)に接続できます。
  • ネットワーク インターフェースに IPv6 アドレスを構成するには、インターフェースをデュアルスタックまたは IPv6 専用のサブネットプレビュー)に接続する必要があります。

  • サブネットの IPv6 アクセスタイプの構成により、サブネットに内部 IPv6 範囲と外部 IPv6 範囲のどちらが存在するかが決まります。接続されたインスタンスは、サブネットから IPv6 アクセスタイプを継承します。

  • IPv6 のみのインスタンス(プレビュー版)は、Ubuntu と Debian OS でのみサポートされます。

IPv6 アドレスを使用してインスタンスにアクセスする

暗黙の IPv6 拒否上り(内向き)ファイアウォール ルールは、IPv6 アドレスへの受信接続をブロックすることでインスタンスを保護します。IPv6 アドレスを使用してインスタンスにアクセスするには、受信アクセスを許可する優先度の高いルールが必要です。

ファイアウォール ルールの詳細については、VPC ファイアウォールの概要階層型ファイアウォール ポリシーの概要をご覧ください。

VPC ファイアウォール ルールの例については、一般的なユースケースのファイアウォール ルールを構成するをご覧ください。

IPv6 アドレスを割り当てる

次のリストに、IPv6 アドレスがコンピューティング インスタンスに割り当てられる方法を示します。

  • コンピューティング インスタンスには、DHCPv6 を使用して IPv6 アドレスが割り当てられます。メタデータ サーバーは、インスタンスの DHCPv6 リクエストに応答します。応答では、割り振られた /96 範囲から最初の IPv6 アドレス(/128)が送信されます。

  • メタデータ サーバーは、ルート アドバタイズを使用してデフォルト ルートをインスタンスに公開します。これにより、インスタンスはすべての IPv6 トラフィックにこのデフォルト ルートを使用できます。

    インスタンスのネットワーク インターフェースのデフォルト ルートは、インスタンスに接続してメタデータ サーバーに gateway-ipv6 エントリのクエリを送信することで確認できます。

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/gateway-ipv6 -H "Metadata-Flavor: Google"
    

    メタデータ サーバーの詳細については、インスタンス メタデータのクエリをご覧ください。

  • Compute インスタンスには、fe80::/10 範囲から割り当てられたリンクローカル IP アドレスが構成されますが、近隣探索にのみ使用されます。

  • インスタンスのネットワーク インターフェースの MTU 構成は、IPv4 と IPv6 の両方のパケットに適用されますが、すべての状況ですべての MTU 値がサポートされるわけではありません。詳細については、最大伝送単位の概要をご覧ください。

IPv6 アドレスを使用するインスタンスを作成する

IPv4 アドレスと IPv6 アドレスの組み合わせ(デュアルスタック)を使用するインスタンス、または IPv6 アドレスのみを使用するインスタンスを作成できます。

デュアルスタック インスタンスを作成する

デュアルスタック インスタンスを作成するには、コンピューティング インスタンスをデュアルスタック サブネットに接続します。

共有 VPC を使用していて、共有サブネットに接続するデュアルスタック インスタンスを作成する場合は、共有 VPC のドキュメントでインスタンスを作成するをご覧ください。

コンソール

  1. [インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. インスタンスの名前を入力します。

  3. IPv6 範囲が構成されたサブネットを含むリージョンを選択します。

  4. ゾーンを選択します。

  5. [詳細オプション] セクションを開きます。

  6. [ネットワーキング] を開いて、次の操作を行います。

    1. [ネットワーク インターフェース] セクションで、ネットワーク インターフェースをクリックして開き、編集します。

    2. [ネットワーク] と [サブネットワーク] で、使用するネットワークとサブネットワークを選択します。

      IPv6 範囲が構成されているサブネットを選択します。サブネットの IPv6 アクセスタイプによって、インスタンスが内部 IPv6 アドレスを受け取るのか、外部 IPv6 アドレスを受け取るのかが決まります。

    3. [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。

    4. [プライマリ内部 IPv4 アドレス] で次のいずれかを選択します。

      • エフェメラル: 新しいエフェメラル IPv4 内部アドレスを割り振ります。
      • * リストから予約された IPv4 アドレス
      • * 静的: 新しい静的 IPv4 アドレスを割り当てます。
    5. IPv6 アドレスの場合、ネットワーク インターフェースで使用されるサブネットのアクセスタイプに応じて、次のようになります。

    6. [プライマリ内部 IPv6 アドレス] で次のいずれかを選択します。

      • 自動割り当て: 新しいエフェメラル内部 IPv6 アドレスを割り当てます。
      • リストから予約された静的内部 IPv6 アドレス。
      • 静的内部 IPv6 アドレスを予約: 新しい静的内部 IPv6 アドレスを予約して割り当てます。
    7. [外部 IPv6 アドレス] で、次のいずれかを選択します。

      • 自動割り当て: 新しいエフェメラル外部 IPv6 アドレスを割り当てます。
      • リストから予約された静的外部 IPv6 アドレス。
      • 静的外部 IPv6 アドレスを予約: 新しい静的外部 IPv6 アドレスを予約して割り当てます。
    8. [外部 IPv4 アドレス] で、次のいずれかを選択します。

      • エフェメラル: 新しいエフェメラル IPv4 アドレスを割り当てます。
      • なし: 外部 IPv4 アドレスを割り当てません。
      • リストから予約された IPv4 アドレス。
      • 新しい IP アドレスを作成: 新しい静的 IPv4 アドレスを割り当てます。
    9. ネットワーク インターフェースの変更を終了するには、[完了] をクリックします。

  7. インスタンス作成処理を続けます。

  8. [作成] をクリックします。

gcloud

gcloud compute instances create コマンドを使用してインスタンスを作成します。

gcloud compute instances create INSTANCE_NAME \
    --subnet=SUBNET_NAME \
    --zone=ZONE \
    --stack-type=IPV4_IPV6

次のように置き換えます。

  • INSTANCE_NAME: インスタンスの名前。
  • SUBNET_NAME: インスタンスの接続先のサブネット。サブネットには IPv6 サブネット範囲が必要です。
  • ZONE: インスタンスをデプロイするゾーン。

REST

  1. イメージを選択します。イメージまたはイメージ ファミリーの名前と、イメージを含むプロジェクトの名前をメモしておきます。
  2. instances.insert メソッドを使用して、イメージ ファミリーまたは特定のバージョンの OS イメージからインスタンスを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    

    次のように置き換えます。

    • PROJECT_ID: インスタンスの作成先とするプロジェクトの ID
    • ZONE: インスタンスの作成先とするゾーン。

    リクエスト本文の例:

    {
     "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
     "name": "INSTANCE_NAME",
     "networkInterfaces": [
       {
         "subnetwork": "regions/REGION/subnetworks/SUBNET",
         "stackType": "IPV4_IPV6"
       }
     ],
     "disks": [
       {
         "initializeParams": {
           "sourceImage": "IMAGE_URI"
         },
         "boot": true
       }
     ],
    }
    

    次のように置き換えます。

    • MACHINE_TYPE_ZONE: 新しいインスタンスに使用するマシンタイプを含むゾーン
    • MACHINE_TYPE: 新しいインスタンスのマシンタイプ(事前定義またはカスタム)。例: n1-standard-1
    • INSTANCE_NAME: 新しいインスタンスの名前。
    • SUBNET: IPv6 が構成されたサブネット。
    • REGION: サブネットのリージョン。
    • IMAGE_URI: 使用するイメージの URI。

      たとえば、"sourceImage": "projects/debian-cloud/global/images/family/debian-10" を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンからコンピューティング インスタンスを作成します。

IPv6 専用インスタンスを作成する

IPv6 専用インスタンスを作成するには、このセクションの手順を行います。

単一のネットワーク インターフェースを持つ Compute Engine インスタンスの場合、インターフェースが接続されているサブネットの IPv6 アクセスタイプに応じて、インスタンスに内部 IPv6 アドレスまたは外部 IPv6 アドレスを設定できます。IPv6 アドレス範囲を持つサブネットを持つカスタムモードの VPC ネットワークを作成する必要があります。

内部 IPv6 アドレスと外部 IPv6 アドレスの両方を使用するマルチ NIC VM インスタンスを作成する前に、次のものを作成する必要があります。

  • IPv6 ULA が有効になっているカスタムモードの VPC ネットワーク、IPv6 アドレス範囲を持つサブネット、アクセスタイプが internal に設定されている。
  • 2 番目のカスタムモードの VPC ネットワーク、IPv6 アドレス範囲を持つ 2 番目のサブネット、アクセスタイプが external に設定されている。

インスタンスを作成するときに、2 つのネットワーク インターフェースを構成します。1 つは内部 IPv6 アドレス範囲のサブネットに接続し、もう 1 つは外部アドレス範囲のサブネットに接続します。

共有 VPC を使用していて、共有サブネットに接続する IPv6 専用インスタンスを作成する場合は、共有 VPC のドキュメントでインスタンスの作成をご覧ください。

コンソール

  1. [インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. インスタンスの名前を入力します。

  3. IPv6 範囲が構成されたサブネットを含むリージョンを選択します。

  4. (省略可)このインスタンスのゾーンを変更します。[任意] を選択すると、マシンタイプと可用性に基づいてゾーンが自動的に選択されます。

  5. [詳細オプション] セクションを開きます。

  6. [ネットワーキング] を開いて、次の操作を行います。

    1. [ネットワーク インターフェース] セクションで、ネットワーク インターフェース名をクリックして、ネットワーク インターフェースの設定を編集します。

    2. [ネットワーク] と [サブネットワーク] で、使用するネットワークとサブネットワークを選択します。

    IPv6 範囲が構成されているサブネットを選択します。サブネットの IPv6 アクセスタイプによって、インスタンスが内部 IPv6 アドレスを受け取るか、外部 IPv6 アドレスを受け取るかが決まります。

    1. [IP スタックタイプ] で [IPv6(シングルスタック)] を選択します。

    2. [プライマリ内部 IPv6 アドレス] で次のいずれかを選択します。

      • 自動割り当て(/96): 新しいエフェメラル IPv6 アドレスを割り当てます。
      • リストから予約された IPv6 アドレス。
      • 静的内部 IPv6 アドレスを予約して、新しい静的 IPv6 アドレスを割り当てます。
    3. 省略可: 外部 IPv6 アドレスを追加するには、[ネットワーク インターフェースを追加] を選択します。

      1. [ネットワーク] と [サブネットワーク] で、外部 IPv6 アドレス用に構成したネットワークとサブネットワークを選択します。
      2. [外部 IPv6 アドレス] で、次のいずれかを選択します。

        • 自動割り当て: 新しいエフェメラル IPv6 アドレスを割り当てます。
        • リストから予約された IPv6 アドレス。
        • 静的外部 IPv6 アドレスを予約して、新しい静的 IPv6 アドレスを割り当てます。
    4. ネットワーク インターフェースの変更を終了するには、[完了] をクリックします。

  7. インスタンス作成処理を続けます。

  8. [作成] をクリックします。

gcloud

gcloud compute instances create コマンドを使用してインスタンスを作成します。内部 IPv6 アドレスと外部 IPv6 アドレスの両方を割り当てるには、少なくとも 2 つのネットワーク インターフェースを持つインスタンスを作成する必要があります。

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --machine-type=MACHINE_TYPE \
    --create-disk=boot=yes,image='projects/IMAGE_PROJECT/global/images/IMAGE',size=SIZE \
    --network-interface=network=NETWORK_INTERNAL_NAME,subnet=SUBNET_INTERNAL_NAME,stack-type=IPV6_ONLY \
    --network-interface=network=NETWORK_EXTERNAL_NAME,subnet=SUBNET_EXTERNAL_NAME,stack-type=IPV6_ONLY,ipv6-network-tier=PREMIUM

次のように置き換えます。

  • INSTANCE_NAME: インスタンスの名前
  • ZONE: インスタンスを作成するゾーン(europe-west1-b など)。インスタンスのリージョンはこのゾーンから推測されます。
  • MACHINE_TYPE: 省略可。インスタンスに使用するマシンタイプ。
  • IMAGE_PROJECT: 省略可。イメージを含むイメージ プロジェクト
  • IMAGE: 省略可。次のいずれかを指定します。
    • OS イメージの特定のバージョン。例: debian-12-bookworm-v202410095
    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージからインスタンスが作成されます。たとえば、family/debian-12 を指定すると、Compute Engine は Debian 12 イメージ ファミリーの OS イメージの最新バージョンを使用してインスタンスを作成します。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
  • SIZE: 省略可。新しいディスクのサイズ。この値は整数である必要があります。デフォルトの測定単位は GiB です。
  • NETWORK_EXTERNAL_NAME または NETWORK_INTERNAL_NAME: 内部 IP アドレスまたは外部 IP アドレス用に構成されたネットワークの名前
  • SUBNET_EXTERNAL_NAME または SUBNET_INTERNAL_NAME: インスタンスで使用する内部 IP アドレスまたは外部 IP アドレス用に構成されたサブネットの名前。

REST

  1. イメージを選択します。イメージまたはイメージ ファミリーの名前と、イメージを含むプロジェクトの名前をメモしておきます。
  2. instances.insert メソッドを使用して、イメージ ファミリーまたは特定のバージョンの OS イメージからインスタンスを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    

    次のように置き換えます。

    • PROJECT_ID: インスタンスの作成先とするプロジェクトの ID
    • ZONE: インスタンスの作成先とするゾーン。

    リクエスト本文の例:

    {
     "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
     "name": "INSTANCE_NAME",
     "disks": [
       {
         "initializeParams": {
           "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
         },
         "boot": true
       }
     ],
     "networkInterfaces": [
       {
         "subnetwork": "regions/REGION/subnetworks/SUBNET_INTERNAL",
         "stackType": "IPV6_ONLY"
       },
       {
         "subnetwork": "regions/REGION/subnetworks/SUBNET_EXTERNAL",
         "stackType": "IPV6_ONLY"
       }
     ]
    }
    

    次のように置き換えます。

    • MACHINE_TYPE_ZONE: 新しいインスタンスに使用するマシンタイプを含むゾーン
    • MACHINE_TYPE: 新しいインスタンスのマシンタイプ(事前定義またはカスタム)。例: c3-standard-4
    • INSTANCE_NAME: 新しいインスタンスの名前。
    • IMAGE_PROJECT: 省略可。イメージを含むイメージ プロジェクト
    • IMAGE: 省略可。次のいずれかを指定します。
      • OS イメージの特定のバージョン。例: debian-12-bookworm-v20241009
      • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージからインスタンスが作成されます。たとえば、family/debian-12 を指定すると、Compute Engine は Debian 12 イメージ ファミリーの OS イメージの最新バージョンを使用してインスタンスを作成します。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
    • REGION: サブネットのリージョン。
    • SUBNET_INTERNAL: 内部 IPv6 アドレスが構成されたサブネット。
    • SUBNET_EXTERNAL: 外部 IPv6 アドレスが構成されているサブネット。

インスタンスのスタックタイプを変更する

既存の Compute Engine インスタンスのスタックタイプを変更できます。スタックタイプは次のいずれかに設定できます。

  • IPv4 のみ(シングル スタック)
  • IPv4 と IPv6(デュアル スタック)

スタックタイプをデュアルスタックに変更する場合、インスタンスがデュアルスタック サブネットに接続されている必要があります。インスタンスが接続されているサブネットを変更する必要がある場合は、インスタンスを停止してサブネットを変更します。サブネットが更新されたら、インスタンスの IP スタックタイプを変更できます。

IPv6 のみのインスタンス(プレビュー)のスタックタイプは変更できません。

コンソール

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. IPv6 アドレスを割り当てるインスタンスの名前をクリックします。

  3. インスタンスの詳細ページで、次の手順を実行します。

    1. [編集] をクリックします。
    2. [ネットワーク インターフェース] で、編集するインターフェースを開きます。
    3. [IP スタックタイプ] で [IPv4 (シングルスタック)] または [IPv4 と IPv6(デュアルスタック)] を選択します。
    4. [完了] をクリックします。
  4. [保存] をクリックします。

gcloud

gcloud compute instances network-interfaces update コマンドを使用してインスタンスのスタックタイプを更新します。

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --stack-type=STACK_TYPE \
    --zone=ZONE

次のように置き換えます。

  • INSTANCE_NAME: インスタンスの名前。
  • STACK_TYPE: インスタンスのスタックタイプ(IPV4_ONLY または IPV4_IPV6)。
  • ZONE: インスタンスがデプロイされるゾーン。

REST

instances.updateNetworkInterface メソッドPATCH リクエストを送信して、インスタンスのスタックタイプを更新します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface

次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれているプロジェクトの ID。
  • ZONE: インスタンスがデプロイされるゾーン。
  • INSTANCE_NAME: インスタンスの名前。

リクエスト本文の例:

{
    "stackType": "STACK_TYPE",
}

STACK_TYPE は、インスタンスのスタックタイプ(IPV4_ONLY または IPV4_IPV6)に置き換えます。

IPv6 アドレスを持つインスタンス テンプレートを作成する

デュアルスタック インスタンスまたは IPv6 のみのインスタンス(プレビュー)の作成に使用できるリージョンまたはグローバルのインスタンス テンプレートを作成できます。詳細については、インスタンス テンプレートを作成するをご覧ください。

IPv6 アドレスを使用するインスタンスを作成するインスタンス テンプレートを作成するには、Google Cloud CLI または REST を使用する必要があります。

gcloud

リージョンまたはグローバルのインスタンス テンプレートを作成するには、gcloud compute instance-templates create コマンドを使用します。リージョン インスタンス テンプレートを作成する場合は、--instance-template-region フラグを使用してインスタンス テンプレートのリージョンを指定する必要があります。

次の例では、グローバル インスタンス テンプレートを作成します。

gcloud compute instance-templates create TEMPLATE_NAME \
    --subnet=SUBNET \
    --stack-type=STACK_TYPE

次のように置き換えます。

  • TEMPLATE_NAME: テンプレートの名前。
  • SUBNET: IPv6 サブネット範囲を持つサブネット。
  • STACK_TYPE: スタックタイプ。デュアルスタック インスタンスの場合は IPV4_IPV6、外部 IPv6 アドレスを持つインスタンスの場合は IPV6_ONLY。

REST

リージョン インスタンス テンプレートを作成するには、regionInstanceTemplates.insert メソッドを使用します。グローバル インスタンス テンプレートを作成するには、instanceTemplates.insert メソッドを使用します。

次の例では、グローバル インスタンス テンプレートを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

PROJECT_ID をプロジェクト ID で置き換えます。

リクエスト本文の例:

{
  "name": "INSTANCE_TEMPLATE_NAME"
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET",
        "stackType": "STACK_TYPE",
      },
    ],
    "disks":
    [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "IMAGE_URI"
        }
      }
    ]
  }
}

次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: インスタンスのマシンタイプ。例: c3-standard-4
  • SUBNET: IPv6 サブネット範囲を持つサブネット。
  • REGION: サブネットのリージョン。
  • IMAGE_URI: 使用するイメージの URI。

    たとえば、"sourceImage": "projects/debian-cloud/global/images/family/debian-12" を指定すると、Compute Engine は Debian 12 イメージ ファミリーの最新バージョンのオペレーティング システム イメージからインスタンスを作成します。

リクエスト パラメータの詳細については、instanceTemplates.insert メソッドをご覧ください。