インスタンスが接続されているサブネットに 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"
メタデータ サーバーの詳細については、インスタンス メタデータを表示してクエリするをご覧ください。
コンピューティング インスタンスには
fe80::/10
範囲から割り当てられたリンクローカル IP アドレスが構成されますが、近隣探索にのみ使用されます。インスタンスのネットワーク インターフェースの MTU 構成は、IPv4 と IPv6 の両方のパケットに適用されますが、すべての状況ですべての MTU 値がサポートされるわけではありません。詳細については、最大伝送単位をご覧ください。
IPv6 アドレスを使用するインスタンスを作成する
IPv4 アドレスと IPv6 アドレスの組み合わせ(デュアルスタック)を使用するインスタンス、または IPv6 アドレスのみを使用するインスタンスを作成できます。
IPv6 アドレスを使用する Compute Engine インスタンスを作成する方法については、次のタスクをご覧ください。
インスタンスのスタックタイプを変更する
既存の Compute Engine インスタンスのスタックタイプを変更できます。スタックタイプは次のいずれかに設定できます。
- IPv4 のみ(シングル スタック)
- IPv4 と IPv6(デュアル スタック)
スタックタイプをデュアルスタックに変更する場合、インスタンスがデュアルスタックのサブネットに接続されている必要があります。インスタンスが接続されているサブネットを変更する必要がある場合は、インスタンスを停止してサブネットを変更します。サブネットが更新されたら、インスタンスの IP スタックタイプを変更できます。
IPv6 のみのインスタンス(プレビュー)のスタックタイプは変更できません。
コンソール
[VM インスタンス] ページに移動します。
IPv6 アドレスを割り当てるインスタンスの名前をクリックします。
インスタンスの詳細ページで、次の操作を行います。
- [編集] をクリックします。
- [ネットワーク インターフェース] で、編集するインターフェースを開きます。
- [IP スタックタイプ] で [IPv4 (シングルスタック)] または [IPv4 と IPv6(デュアルスタック)] を選択します。
- [完了] をクリックします。
[保存] をクリックします。
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
メソッドをご覧ください。