静的内部 IP アドレスの予約


このページでは、Virtual Private Cloud(VPC)ネットワークで静的内部 IPv4 または IPv6 アドレスを構成して管理する方法について説明します。

変更されない固定内部 IP アドレスが仮想マシン(VM)インスタンスに必要な場合、次のいずれかのオプションを使用して VM の静的内部 IP アドレスを取得できます。

セカンダリ内部 IP アドレスの管理方法については、エイリアス IP 範囲をご覧ください。

Compute Engine では、各 VM インスタンスが複数のネットワーク インターフェースを持つことができます。各インターフェースには、1 つの外部 IP アドレス、1 つのプライマリ内部 IP アドレス、および 1 つまたは複数のセカンダリ内部 IP アドレスを設定できます。転送ルールには、外部ロード バランシングのための外部 IP アドレスや、内部ロード バランシングのための内部アドレスを指定できます。IP アドレスの詳細については、IP アドレスのドキュメントをご覧ください。

静的内部 IP アドレスを使用すると、サブネットに構成された IP アドレス範囲から内部 IP アドレスを予約し、必要に応じてリソースに割り当てることができます。内部 IP アドレスを予約すると、そのアドレスが動的割り当てプールから取り出され、自動割り当てには使用されなくなります。静的内部 IP アドレスを予約するには特定の Identity and Access Management(IAM)権限が必要であり、許可されたユーザーだけが静的内部 IP アドレスを予約できます。

静的内部 IP アドレスの予約機能を使用することで、リソースを削除して作成し直す必要がある場合でも、また同じ IP アドレスを使用できます。

内部 IP アドレスではなく静的外部 IP アドレスを予約するには、静的外部 IP アドレスを予約するをご覧ください。

準備

  • IP アドレスの詳細をご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    Terraform

    このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、 ローカル開発環境の認証の設定 をご覧ください。

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

権限

静的内部 IP アドレスを予約して管理するには、compute.networkAdmin ロール、または次の 1 つ以上の権限が付与されている必要があります。

  • IP アドレスに対する compute.addresses.create
  • IP アドレスに対する compute.addresses.createInternal
  • VM インスタンスに対する compute.instances.update
  • サブネットワークに対する compute.subnetworks.use

制限事項

  • 既存のリソースの内部 IPv4 アドレスの割り当てを解除したり、変更することはできません。たとえば、実行中または停止している VM インスタンスに新しい静的内部 IP アドレスを割り当てることはできません。ただし、リソースのエフェメラル内部 IP アドレスを静的内部 IP に昇格させることは可能で、その場合はリソースが削除された後もアドレスの予約状態は継続されます。

  • 予約できる静的内部 IP アドレスの数は、プロジェクトの割り当てを超えることはできません。詳細は、VPC ドキュメントの、プロジェクトごとの割り当てをご覧ください。

  • 一度に複数のリソースが同じ静的内部 IP アドレスを使用することはできません。

  • 静的内部 IP アドレスの予約は VPC ネットワークでのみサポートされています。レガシーモードのネットワークではサポートされていません。

  • リソースを削除しても静的内部 IP アドレスは自動的に解放されません。静的内部 IP アドレスが不要になったら手動で解放する必要があります。

  • 静的 IP アドレスの名前は変更できません。

  • 静的内部 IP アドレスはリージョン アドレスです。つまり、静的内部 IP アドレスを予約したリージョンに制限されます。たとえば、us-east4 リージョンで静的内部 IP アドレスを予約した場合、us-east4 の IP アドレスのみを使用できます。

静的内部 IP アドレスを予約する方法

静的内部 IP アドレスを予約してから、そのアドレスに関連付けるリソースを作成します。または、エフェメラル内部 IP アドレスを指定してリソースを作成してから、そのエフェメラル IP アドレスを静的内部 IP アドレスに昇格させることもできます。

静的内部 IP アドレスを使用するには、プロジェクトに VPC ネットワークが存在している必要があります。VPC ネットワークの作成方法については、VPC ネットワークの作成と管理をご覧ください。

静的内部 IPv4 アドレスまたは IPv6 アドレスを予約して特定のリソースに関連付ける

このシナリオでは、静的内部 IP アドレスを予約してからリソースに割り当てます。

  1. VPC ネットワークにサブネットを作成します。IPv6 アドレスの場合は、デュアルスタック サブネットを作成します。

  2. サブネットのプライマリ IP 範囲から内部 IP アドレスを予約します。このステップでは、特定の内部 IP アドレスを含む内部 IP アドレス リソースを作成します。この手順により、Google Cloud がそのアドレスを自動的にエフェメラル アドレスとして割り振られることもなくなります。

  3. 予約済みの内部 IP アドレスは、VM またはロードバランサ リソースの作成時に VM インスタンスまたは内部ロードバランサに関連付けて使用します。

リソースのエフェメラル内部 IPv4 または IPv6 アドレスを指定して昇格させる

このシナリオでは、リソースに接続されているエフェメラル内部 IPv4 アドレスまたは IPv6 アドレスを昇格させます。

  1. VPC ネットワークにサブネットを作成します。IPv6 アドレスの場合は、デュアルスタック サブネットを作成します。

  2. 自動的に割り振られたエフェメラル IPv4 アドレスまたは IPv6 アドレスを使用するか、特定の IPv4 アドレスを指定して VM インスタンスまたは内部ロードバランサを作成します。

図 1 に、この 2 つの方法の概要を示します。

内部 IP アドレスの予約状態。
図 1. 内部 IP アドレスの予約状態(クリックして拡大)

静的内部アドレスの構成と管理

VM インターフェースには、接続先のサブネットから IP アドレスが割り当てられます。各 VM インターフェースには、サブネットのプライマリ IPv4 の範囲から割り当てられた 1 つのプライマリ内部 IPv4 アドレスがあります。VM が内部 IPv6 範囲を持つデュアルスタック サブネットに接続されている場合、各ネットワーク インターフェースに内部 IPv6 アドレスを割り当てることができます。

内部 IPv4 アドレスは、次の方法で割り当てることができます。

  • Compute Engine は、プライマリ IPv4 サブネット範囲から単一の IPv4 アドレスを自動的に割り当てます。
  • VM インスタンスの作成時に特定の内部 IPv4 アドレスを割り当てることができます。または、プロジェクトに静的内部 IPv4 アドレスを予約し、そのアドレスを VM のネットワーク インターフェースに割り当てることもできます。

内部 IPv6 アドレスは、次の方法で割り当てることができます。

  • Compute Engine は、IPv6 サブネット範囲から単一の /96 範囲を自動的に割り当てます。
  • サブネットの内部 IPv6 範囲から静的内部 IPv6 アドレス範囲を予約して、VM ネットワーク インターフェースに割り当てることができます。

静的内部 IP アドレスを構成して管理するには、次の操作を行います。

新しい静的内部 IPv4 または IPv6 アドレスを予約する

新しい静的内部 IP アドレスを予約する前に、サブネットを持つ VPC ネットワークを作成する必要があります。

新しい静的内部 IPv6 アドレスを予約する場合は、VPC ネットワークで ULA の内部 IPv6 範囲が有効になっている必要があります。また、INTERNAL IPv6 アクセスタイプのデュアルスタック サブネットが必要です。

スタンドアロンの内部 IP アドレスを予約するには、次の手順を完了します。

コンソール

  1. Google Cloud コンソールで、[IP アドレス] ページに移動します。

    [IP アドレス] に移動

  2. [内部静的 IP アドレスの予約] をクリックします。
  3. [名前] フィールドに IP アドレス名を入力します。
  4. [IP バージョン] リストで、必要な IP バージョンを選択します。
    • 静的内部 IPv4 アドレスを予約するには、[IPv4] を選択します。
    • 静的内部 IPv6 アドレスを予約するには、[IPv6] を選択します。
  5. [ネットワーク] リストと [サブネットワーク] リストで、VPC ネットワークとサブネットをそれぞれ選択します。
  6. IP アドレスの予約方法を指定します。
    • IPv4 アドレスの場合、予約する静的内部 IPv4 アドレスを指定するには、[静的 IP アドレス] で、[ユーザー指定] を選択し、カスタム IP アドレスを入力します。それ以外の場合、サブネットの静的内部 IPv4 アドレスはシステムによって自動的に割り当てられます。
    • IPv6 アドレスの場合、静的内部 IPv6 アドレスはサブネットの内部 IPv6 アドレス範囲から自動的に割り当てられます。
  7. 省略可: 異なるフロントエンドで静的内部 IPv4 アドレスを共有する場合は、[目的] リストで [共有] を選択します。デフォルトでは、[共有しない] が選択されています。

  8. [予約] をクリックします。

gcloud

  • 内部 IPv4 アドレスを予約するには、compute addresses create コマンドを使用します。

    gcloud compute addresses create ADDRESS_NAMES \
        --region REGION --subnet SUBNETWORK \
        --addresses IP_ADDRESS
    

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

    • ADDRESS_NAMES: 作成する 1 つ以上の [--purpose=SHARED_LOADBALANCER_VIP] アドレスの名前。複数のアドレスの場合は、各アドレスをスペースで区切ったリストで指定します(例: example-address-1 example-address-2 example-address-3)。
    • REGION: このリクエストのリージョン。
    • SUBNETWORK: この内部 IP アドレスのサブネット。
    • IP_ADDRESS: 予約する IP アドレス。サブネットのプライマリ IP 範囲内になければなりません。指定しない場合、サブネットから IP アドレスが自動的に割り振られます。
  • 内部 IPv6 アドレスを予約するには、compute addresses create コマンドを使用します。--ip-version の値として IPV6 を指定します。

    gcloud compute addresses create ADDRESS_NAMES \
        --region REGION --subnet SUBNETWORK \
        --ip-version IPV6
    

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

    • ADDRESS_NAMES: 予約する 1 つ以上のアドレスの名前。複数のアドレスの場合は、各アドレスをスペースで区切ったリストで指定します(例: example-address-1 example-address-2 example-address-3)。
    • REGION: このリクエストのリージョン。
    • SUBNETWORK: この内部 IPv6 アドレスのサブネット。

    内部 IPv4 の予約とは異なり、内部 IPv6 の予約では、サブネットワークからの特定の IP アドレスの予約をサポートしていません。代わりに、/96 の内部 IPv6 アドレスは、サブネットの /64 の内部 IPv6 アドレス範囲から自動的に割り振られます。

  • サブネットから自動的に割り振られた内部 IPv4 アドレスを予約する場合:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1
    
  • サブネットから特定の内部 IPv4 アドレスを予約する場合:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1 \
        --addresses 10.128.0.12
    
  • サブネットから静的内部 IPv6 アドレスを予約する場合:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1 \
        --ip-version IPV6
    
  • 複数の IPv4 アドレス名を渡すことで、複数の IPv4 アドレスを作成し、すべてのアドレスが同じサブネットで予約されるようにする場合:

    gcloud compute addresses create example-address-1 example-address-2 \
        --region us-central1 \
        --subnet subnet-1 \
        --addresses 10.128.0.12,10.128.0.13
    

Terraform

Terraform モジュールを使用して内部 IP アドレスを作成できます。

次の例では、Terraform の引数に変更可能なサンプル値が含まれています。この例では、2 つの内部 IP アドレスを作成します。

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "~> 3.1"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
  addresses  = ["10.0.0.3", "10.0.0.4"]
}

次の例では、動的に割り振られる 2 つの内部 IP アドレスを作成します。

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "~> 3.1"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
}

REST

addresses.insert メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

IPv4 アドレスと IPv6 アドレスのいずれの場合でも、リクエストの本文には addressType フィールド(INTERNAL)、IP アドレスの namesubnetwork を含める必要があります。リクエストの本文には、必要に応じて内部 IP アドレスの purpose を含めることができます。

内部 IPv4 アドレスの場合は、システムによって IP アドレスが自動的に割り振られるようにすることも、address を使用して内部 IPv4 アドレスを指定することもできます。IPv4 アドレスは、サブネットのプライマリ IP 範囲内になければなりません。

{
  "addressType": "INTERNAL",
  "name": "IPV4_ADDRESS_NAME",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "address": "IPV4_ADDRESS"
  "purpose": "GCE_ENDPOINT"
}

次に例を示します。

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
{
  "addressType": "INTERNAL",
  "name": "example-ipv4-address-1",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "address": "10.128.0.12"
  "purpose": "GCE_ENDPOINT"
}

内部 IPv6 アドレスの場合は、ipVersionIPV6 として指定する必要があります。サブネットの内部 IPv6 アドレス範囲から、静的内部 IPv6 アドレスが自動的に割り当てられます。

{
  "addressType": "INTERNAL",
  "name": "IPV6_ADDRESS_NAME",
  "ipVersion": "IPV6",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "purpose": "GCE_ENDPOINT"
}

次に例を示します。

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
{
  "addressType": "INTERNAL",
  "name": "example-ipv6-address-1",
  "ipVersion": "IPV6"
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "purpose": "GCE_ENDPOINT"
}

Cloud Interconnect を介した HA VPN 用に静的内部 IP アドレス範囲を予約する

Cloud Interconnect を介した HA VPN で使用する静的内部 IP アドレス範囲を予約できます。

静的内部 IP アドレスを作成するときに、フラグ --purpose=IPSEC_INTERCONNECT とプレフィックス長(--prefix-length)を 26~29 の間で指定する必要があります。

予約したリージョン内部 IPv4 アドレスは、Cloud Interconnect で使用される HA VPN ゲートウェイに適用されます。

詳細については、HA VPN ゲートウェイに内部 IP アドレス範囲を割り当てるをご覧ください。

内部 IPv4 アドレスまたは IPv6 アドレスがエフェメラルか静的かを判別する

静的内部 IP アドレスとエフェメラル内部 IP アドレスは、ほとんどのコンテキストで同じように動作します。アドレスが静的かエフェメラルかを判別するには、次のようにします。

  1. Google Cloud コンソールで、[IP アドレス] ページに移動します。

    [IP アドレス] に移動

  2. リストからアドレスを探し、[タイプ] 列で IP アドレスのタイプを確認します。

使用中のエフェメラル内部 IPv4 アドレスまたは IPv6 アドレスを静的アドレスに昇格させる

使用中のエフェメラル内部 IP アドレスがある場合、それを静的内部 IP アドレスに昇格させると、削除するまでプロジェクトで使用し続けることができます。

エフェメラル内部 IP アドレスを静的内部 IP アドレスに昇格させるには、次の手順を完了します。

コンソール

  1. Google Cloud コンソールで、[IP アドレス] ページに移動します。

    [IP アドレス] に移動

  2. [内部 IP アドレス] をクリックします。
  3. (省略可)[フィルタ] フィールドで、昇格させるエフェメラル IP アドレスを検索します。
  4. 昇格させる IP アドレスの [その他の操作] メニュー()で、[静的 IP アドレスに昇格] を選択します。
  5. 新しい静的 IP アドレスの名前を入力し、[予約] をクリックします。

gcloud

  1. 既存のエフェメラル内部 IPv6 アドレスを昇格させる前に、その IP アドレスの値を確認する必要があります。Google Cloud CLI を使用してリソースに describe リクエストを行い、IP アドレス値を取得します。

    • IPv4 アドレスの場合は、次のコマンドを使用します。

      gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"
      
    • IPv6 アドレスの場合は、次のコマンドを使用します。

      gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "ipv6Address"
      

    gcloud CLI から networkIP 値(IPv4 の場合)または ipv6Address 値(IPv6 の場合)が返されます。この値は、リソースで使用されている内部 IP アドレスです。

  2. アドレスを昇格させます。

    • 1 つまたは複数の既存の内部 IPv4 アドレスを昇格させるには、compute addresses create コマンドを使用し、昇格させる明示的な内部 IP アドレスを --addresses フラグに指定します。

      gcloud compute addresses create IPV4_ADDRESS_NAMES \
        --addresses IPV4_ADDRESSES \
        --region REGION \
        --prefix-length PREFIX_LENGTH \
        --subnet SUBNETWORK
      

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

      • IPV4_ADDRESS_NAMES: IPv4 アドレスの名前。複数のアドレスを指定する場合は、アドレス名をスペースで区切ったリストで指定します(例: example-address-name-1 example-address-name-2 example-address-name-3)。IP アドレスの宣言と同じ順序で名前を宣言します。たとえば、アドレス名を example-address-name-1 example-address-name-2 example-address-name-3、IPv4 アドレスを 192.0.2.0 192.0.2.1 192.0.2.2 として指定したとします。このシナリオでは、Compute Engine は次の方法で名前とアドレスをマッピングします。

        • example-address-name-1: 192.0.2.0
        • example-address-name-2: 192.0.2.1
        • example-address-name-3: 192.0.2.2
      • IPV4_ADDRESSES: 昇格させる IPv4 アドレス。複数のアドレスの場合は、各アドレスをスペースで区切ったリストで指定します(例: 192.0.2.0 192.0.2.1 192.0.2.2)。

      • REGION: このアドレスを予約するリージョン。

      • PREFIX_LENGTH: 省略可。IPv4 アドレス範囲のプレフィックスの長さ。値には 7~31 の整数を指定してください。このフィールドは、アドレス範囲を指定する場合にのみ指定します。指定された IPv4 アドレスが単一の IP アドレスの場合は、このフィールドを除外します。

      • SUBNETWORK: このリクエストのサブネットワーク。

    • 1 つ以上の既存の内部 IPv6 アドレスを昇格させるには、compute addresses create コマンドを使用し、昇格させる内部 IPv6 アドレスを --addresses フラグに明示的に指定します。

      gcloud compute addresses create IPV6_ADDRESS_NAMES \
       --addresses IPV6_ADDRESSES \
       --region REGION \
       --prefix-length PREFIX_LENGTH \
       --subnet SUBNETWORK
      

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

      • IPV6_ADDRESS_NAMES: アドレスの名前。IPv6 アドレスの宣言と同じ順序で名前を宣言します。この場合、IPV6_ADDRESS_NAME_1IPV6_ADDRESS_1 に対応し、IPV6_ADDRESS_NAME_2IPV6_ADDRESS_2 に対応します。
      • IPV6_ADDRESS_1,[IPV6_ADDRESS_2,...]: 昇格させる IPv6 アドレス(CIDR 形式)。
      • PREFIX_LENGTH_1,[PREFIX_LENGTH_2,...]: IPv6 アドレスのプレフィックス長。
      • REGION: このアドレスを予約するリージョン。
      • SUBNETWORK: このリクエストのサブネットワーク。

      内部 IPv6 アドレスは、静的内部 IPv6 アドレスに昇格した後も、既存のインスタンスに割り振られたままになります。新しく昇格した静的内部 IPv6 アドレスを別のリソースに割り振る必要がある場合は、まず既存のインスタンスから静的内部 IPv6 アドレスの割り振りを解除します。

REST

addresses.insert メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

IPv4 アドレスと IPv6 アドレスのいずれの場合でも、リクエストの本文には、addressTypeINTERNAL)、アドレスの name、昇格させる address、IP アドレスが属する subnetwork を含める必要があります。IPv6 アドレスの場合は、さらに、リクエストの本文で値として 96 を持つ prefixLength を含める必要があります。

  • 内部 IPv4 アドレスを昇格させるリクエストの本文:

    {
    "name": "ADDRESS_NAME",
    "addressType": "INTERNAL",
    "address": "IP_ADDRESS",
    "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
    }
    

    次に例を示します。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
    {
    "name": "example-IPv4-address-1",
    "addressType": "INTERNAL",
    "address": "10.128.0.2",
    "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
    }
    
  • 内部 IPv6 アドレスを昇格させるリクエストの本文:

    {
    "name": "ADDRESS_NAME",
    "addressType": "INTERNAL",
    "address": "IP_ADDRESS",
    "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
    "prefixLength": 96
    }
    

    次に例を示します。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
    {
    "name": "example-IPv6-address-1",
    "addressType": "INTERNAL",
    "address": "fd20:0:0::",
    "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
    "prefixLength": 96
    }
    

予約済みの内部 IPv4 または IPv6 アドレスを使用して VM インスタンスを作成する

静的内部 IP アドレスを予約した後、そのアドレスをインスタンスの作成時に VM インスタンスに割り振ることができます。

予約済みの静的内部 IPv6 アドレスを指定せずに内部 IPv6 の範囲を持つデュアルスタック サブネットに接続された VM を作成すると、Compute Engine は、サブネットの IPv6 範囲からエフェメラル内部 IPv6 アドレスを VM に自動的に割り当てます。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

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

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

  3. [ネットワーキング] セクションを開きます。

  4. IPv4 アドレスを割り当てるには、次の操作を行います。

    1. ネットワークとサブネットワークを選択します。
    2. [プライマリ内部 IPv4 アドレス] リストから予約済みの内部 IPv4 アドレスを選択します。

    または、[静的内部 IP アドレスを予約] を選択して、新しい静的内部 IPv4 アドレスを予約します。

  5. IPv6 アドレスを割り当てるには、次の操作を行います。

    1. IPv6 サブネットを含むネットワークを選択します。
    2. [サブネットワーク] リストからデュアルスタック サブネットを選択します。サブネットには INTERNAL IPv6 アクセスタイプが必要です。
    3. [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。
    4. [プライマリ内部 IPv6 アドレス] リストから予約済みの内部 IPv6 アドレスを選択します。

    または、[静的内部 IPv6 アドレスを予約] を選択して、新しい静的内部 IPv6 アドレスを予約します。

  6. ネットワーク インターフェースの変更を終了するには、[完了] をクリックします。

  7. VM 作成プロセスを続行します。

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

gcloud

  • 予約済みの内部 IPv4 アドレスを持つインスタンスを作成するには、インスタンスを作成するときに --private-network-ip フラグを使用して予約済み内部 IPv4 アドレスを指定します。

    gcloud compute instances create VM_NAME
        --private-network-ip IP_ADDRESS
    

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

    • VM_NAME: 作成する VM の名前。
    • IP_ADDRESS: 割り当てる IP アドレス。

    カスタム サブネット モードのネットワークを使用している場合は、--subnet SUBNET パラメータを使用してサブネットも指定する必要があります。

  • 予約済みの内部 IPv6 アドレスを持つインスタンスを作成するには、インスタンスを作成するときに --internal-ipv6-address フラグを使用して予約済み内部 IPv6 アドレスを指定します。

    gcloud compute instances create VM_NAME
        --subnet SUBNETWORK
        --stack-type IPV4_IPV6
        --internal-ipv6-address INTERNAL_IPV6_ADDRESS
        --zone ZONE
    

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

    • VM_NAME: 作成する VM の名前。
    • SUBNETWORK: 内部 IPv6 アドレスのサブネット。
    • INTERNAL_IPV6_ADDRESS: /96 IPv6 アドレス、IP アドレス名、またはアドレス リソースの URI のいずれか。この IP アドレスは、使用する前に予約する必要があります。
    • ZONE: VM のゾーン。

REST

静的内部 IP アドレスを持つ VM インスタンスを作成するには、instances.insert メソッドを使用します。

  • 内部 IPv4 アドレスの場合は、VM に割り当てる内部 IPv4 アドレスを networkInterfaces[].networkIP プロパティに明示的に指定します。

    次に例を示します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
    "name": "VM_NAME",
    "machineType": "zones/us-central1-f/machineTypes/e2-micro",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "network": "global/networks/default",
      "networkIP": "IPV4_ADDRESS"
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
    }

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

    • PROJECT_ID: VM を作成するプロジェクトの ID。
    • ZONE: VM を作成するゾーン。
    • VM_NAME: 仮想マシンの名前。
    • IPV4_ADDRESS: VM に割り当てる IPv4 アドレス。
  • 内部 IPv6 アドレスの場合は、次のプロパティの値を明示的に指定します。

    • networkInterfaces[].stackType
    • networkInterfaces[].ipv6Address
    • networkInterfaces[].internalIpv6PrefixLength
    • networkInterfaces[].ipv6AccessType

    次に例を示します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "VM_NAME",
    "machineType": "zones/us-central1-f/machineTypes/e2-micro",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "network": "global/networks/default",
      "stackType": "IPV4_IPV6"
      "ipv6Address": ""IPV6_ADDRESS"",
      "internalIpv6PrefixLength": 96
      "ipv6AccessType": INTERNAL,
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
    }

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

    • PROJECT_ID: VM を作成するプロジェクトの ID。
    • ZONE: VM を作成するゾーン。
    • VM_NAME: VM の名前。
    • IPV6_ADDRESS: VM に割り当てる内部 IPv6 アドレス。

指定した IP アドレスを持つインスタンスを削除すると、その IP アドレスは未割り振りのアドレスプールに戻ります。インスタンスの存続期間を超えてその内部 IP アドレスを保持する必要がある場合は、静的内部 IP アドレスを予約できます。

静的内部 IPv4 アドレスを使用して内部ロードバランサを作成する

静的内部 IPv4 アドレスを使用する内部ロードバランサを作成するには、以下をご覧ください。

セカンダリ ネットワーク インターフェースに静的内部 IPv4 または IPv6 アドレスを使用する

複数のネットワーク インターフェースを持つ VM インスタンスを作成する場合は、プライマリ ネットワーク インターフェースとセカンダリ ネットワーク インターフェースの両方に予約済みの静的内部 IPv4 または IPv6 アドレスを使用できます。

セカンダリ ネットワーク インターフェースに静的内部 IPv4 または IPv6 アドレスを使用するには、複数のネットワーク インターフェースを持つ VM インスタンスを作成するをご覧ください。

既存の VM に対して内部 IPv6 アドレスの変更または割り当てを行う

内部 IPv6 アドレスを変更したり、既存の VM インスタンスに割り当てることができます。

インスタンスにすでに内部 IPv6 アドレスが割り当てられている場合は、まずそのアドレスの割り当てを解除する必要があります。次に、インスタンスのネットワーク インターフェースを使用して、インスタンスに新しいアドレスを割り当てます。

既存の VM インスタンスに静的内部 IPv6 アドレスを変更または割り当てるには、次の手順を完了します。

コンソール

  1. 静的内部 IPv6 アドレスを予約します
  2. Google Cloud コンソールで [VM インスタンス] ページに移動します。

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

  3. 内部 IPv6 アドレスを変更するインスタンスの名前をクリックします。
  4. [インスタンスの詳細] ページで、次の手順を完了します。

    1. [編集] をクリックします。
    2. [ネットワーク インターフェース] を開きます。
    3. [プライマリ内部 IPv6 アドレス] リストで、[自動割り当て(/96)] または予約済みの静的内部 IPv6 アドレスを選択します。
    4. [完了] をクリックします。
  5. [保存] をクリックします。

gcloud

compute instances network-interfaces update コマンドを使用します。

gcloud compute instances network-interfaces update VM_NAME \
    --network-interface NIC \
    --ipv6-network-tier PREMIUM \
    --stack-type IPV4_IPV6 \
    --internal-ipv6-address INTERNAL_IPV6_ADDRESS \
    --zone ZONE

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

  • VM_NAME: 作成する VM の名前。
  • NIC: 更新するネットワーク インターフェースの名前。
  • INTERNAL_IPV6_ADDRESS: インターフェースに割り当てる /96 内部 IPv6 アドレス、IP アドレス名、またはアドレス リソースの URI。
  • ZONE: VM のゾーン。

REST

instances.update メソッドを使用します。割り当てる内部 IPv6 アドレスで networkInterfaces[].ipv6Address プロパティを更新します。

次に例を示します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
  {
    ...
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "stackType": "IPV4_IPV6"
      "ipv6Address": "IPV6_ADDRESS",
      "internalIpv6PrefixLength": 96
      "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
  }
 

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

  • PROJECT_ID: VM が含まれているプロジェクトの ID。
  • ZONE: VM を作成するゾーン。
  • VM_NAME: VM の名前。
  • IPV6_ADDRESS: VM に割り当てる内部 IPv6 アドレス。

    IPV6_ADDRESS の値として内部 IPv6 アドレス リソースの URI または IPv6 アドレス範囲を指定する場合は、internalIpv6PrefixLength の値を空白のままにする必要があります。

転送ルールの IP アドレスを変更する

VM の内部 IP アドレスを変更し、転送ルールを更新する必要がある場合は、次の操作を行います。

  1. IP アドレスの割り当てを解除します。

  2. gcloud compute forwarding-rules delete コマンドまたは forwardingRules.delete メソッドを使用して、転送ルールを削除します。

  3. gcloud compute forwarding-rules create コマンドまたは forwardingRules.insert メソッドを使用して、転送ルールを再作成します。

静的内部 IPv6 アドレスの割り当てを解除する

VM インスタンスから静的内部 IPv6 アドレスの割り当てを解除するには、インスタンスのネットワーク インターフェースを更新するか、アドレスが割り当てられているインスタンスを削除します。

内部 IPv6 アドレスの割り当てを解除すると、そのアドレスはリソースから削除されますが、プロジェクト用に予約されたアドレスは保持されます。このアドレスは、後で別のリソースに再割り当てできます。

VM インスタンスから静的内部 IPv6 アドレスの割り当てを解除するには、次の手順を完了します。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

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

  2. 内部 IPv6 アドレスの割り当てを解除するインスタンスの名前をクリックします。
  3. [インスタンスの詳細] ページで、次の手順を完了します。

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

gcloud

--stack-type フラグを IPV4_ONLY に設定して compute instances network-interfaces update コマンドを使用します。

gcloud compute instances network-interfaces update VM_NAME \
    --network-interface NIC \
    --stack-type IPV4_ONLY \
    --zone ZONE

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

  • VM_NAME: ネットワーク インターフェースを更新する VM の名前。
  • NIC: 更新するネットワーク インターフェースの名前。
  • ZONE: VM のゾーン。

静的内部 IPv6 アドレスのステータスが IN_USE から RESERVED に変わり、使用可能になったことを確認します。

gcloud compute addresses list \
    --filter="region=REGION AND name=NAME"

REST

内部 IPv6 アドレスが割り振られているネットワーク インターフェースのインスタンス スタックタイプを更新します。

  1. instances.updateNetworkInterface メソッドPATCH リクエストを送信します。
  2. リクエストの本文で、stackType フィールドの値を IPV4_ONLY に更新します。

    次に例を示します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateNetworkInterface
    {
      "networkInterfaces": [{
        ...
        "stackType" : "IPV4_ONLY"
        ...
        }]
    }
    

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

    • PROJECT_ID: VM が含まれているプロジェクトの ID。
    • ZONE: VM を作成するゾーン。
    • VM_NAME: VM の名前。

共有 VPC で静的内部 IPv4 または IPv6 アドレスを使用する

共有 VPC ネットワークの共有サブネットに予約済み静的内部 IP アドレスを作成できます。IP アドレス オブジェクトの値が共有 VPC ネットワークで選択された共有サブネットの IP アドレスの範囲から使用されている場合でも、IP アドレス オブジェクト自体は、このオブジェクトを使用するリソースと同じサービス プロジェクトで作成されます。このユースケースの詳細については、次のリソースをご覧ください。

静的内部 IPv4 アドレスまたは IPv6 アドレスを一覧表示する

外部 IP アドレスや内部 IP アドレスなど、既存のすべての静的 IP アドレスを表示するには、次の手順を完了します。

コンソール

  1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

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

  2. 確認する VPC ネットワークをクリックします。
  3. [静的内部 IP アドレス] をクリックして、この VPC ネットワークに予約された静的内部 IP アドレスをすべて表示します。

gcloud

compute addresses list コマンドを実行します。

gcloud compute addresses list

REST

addresses.list メソッドを使用します。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

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

  • PROJECT_ID: このリクエストのプロジェクト ID。
  • REGION: このリクエストのリージョン名。

すべてのリージョンのすべてのアドレスを一覧表示するには、aggregatedList メソッドを使用します。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses

新しい静的内部 IPv4 または IPv6 アドレスを解放する

静的内部 IP アドレスが不要になったら、IP アドレス リソースを削除することで IP アドレスを解放できます。

Google Cloud コンソールを使用している場合は、静的 IP アドレスを解放できるのは、別のリソースで使用されていない場合に限られます。

gcloud CLI または REST を使用している場合は、別のリソースで使用されているかどうかにかかわらず、IP アドレスを解放できます。

  • IP アドレスがリソースで使用されていない場合、その IP アドレスは使用可能な内部 IP アドレスのプールに返却されます。

  • リソースで使用されている IP アドレスは、削除されるまでそのリソースに割り振られたままになります。

静的内部 IPv4 または IPv6 アドレスを解放するには、次の手順を完了します。

コンソール

  1. Google Cloud コンソールで、[IP アドレス] ページに移動します。

    [IP アドレス] に移動

  2. [内部 IP アドレス] をクリックします。
  3. 解放する静的内部 IP アドレスを選択します。
  4. [静的アドレスを解放] をクリックし、ダイアログの [解放] をクリックしてこの操作を確認します。

gcloud

compute addresses delete コマンドを実行します。

gcloud compute addresses delete ADDRESS_NAME \
    --region REGION

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

  • ADDRESS_NAME: 削除するアドレスの名前。
  • REGION: アドレスが属しているリージョン。

次に例を示します。

gcloud compute addresses delete example-address-to-delete \
    --region us-west1

REST

addresses.delete メソッドを使用します。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME

次の例では、us-west1 リージョンのアドレスを削除します。

DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete

次のステップ