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

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

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

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

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

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

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

始める前に

権限

静的内部 IP アドレスを予約して管理するには、compute.networkAdmin 役割が付与されている必要があります。役割の詳細については、Compute Engine IAM の役割をご覧ください。

制限事項

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

  • デフォルトでは、リージョンあたり最大 200 個の静的内部 IP アドレスを予約できます。

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

  • IP アドレスをリソースに割り当てた後に、それが静的アドレスであるかエフェメラル アドレスであるかを確認するには、そのプロジェクトに予約されている静的内部 IP アドレスのリストにその IP アドレスを照合する以外に方法はありません。プロジェクトで使用可能な静的外部 IP アドレスのリストを表示するには、addresses list サブコマンドを使用します。

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

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

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

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

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

特定のアドレスを予約して特定のリソースに関連付ける

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

  1. VPC ネットワークからサブネットを作成します。

  2. サブネット IP 範囲から内部 IP アドレスを予約します。このステップで、特定の内部 IP アドレスを含む内部 IP アドレス リソースを作成します。

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

リソースにエフェメラル内部 IP アドレスを指定して昇格させる

このシナリオでは、リソースにエフェメラル内部 IP アドレスを指定しておいてから、静的内部 IP アドレスに昇格させます。

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

  2. サブネットを作成します。

  3. 内部 IP アドレスを静的内部 IP アドレスに昇格させます。

上記の 2 つの方法の概略を下の図に示します。

内部 IP 予約の図

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

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

新しい静的内部 IP アドレス(既存のサブネットから自動的に割り当てられたアドレスまたは未使用のアドレス)を予約するには、Console、gcloud compute addresses create コマンド、または Compute Engine API の addresses.insert メソッドのいずれかを使用します。

Console

  1. GCP Console の [VPC ネットワーク] ページに移動します。

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

  2. インスタンスに関連付ける VPC ネットワークを特定します。
  3. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  4. プロジェクトを選択します。
  5. [インスタンスを作成] をクリックして、インスタンスの名前を指定します。
  6. VPC ネットワークを配置するリージョンを選択します。
  7. そのリージョン内のゾーンを選択します。
  8. インスタンスのその他のフィールドを入力します。
  9. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] メニューを展開します。
  10. [ネットワーキング] をクリックします。
  11. 編集する [ネットワーキング インターフェース] をクリックします。
  12. [ネットワーク] で、作成した VPC ネットワークを選択します。
  13. サブネットを選択します。
  14. [プライマリ内部 IP] で、[静的内部 IP アドレスを予約] を選択します。
  15. 残りのネットワーキング オプションを入力します。
  16. [完了] をクリックします。
  17. インスタンス要件を入力します。
  18. [作成] をクリックします。

gcloud

gcloud ツールを使用して、compute addresses create コマンドを実行します。

gcloud compute addresses create [ADDRESS_NAME] [[ADDRESS_NAME]..] \
    --region [REGION] --subnet [SUBNETWORK] \
    --addresses [IP_ADDRESS]

ここで:

  • [ADDRESS_NAME] は、作成する 1 つまたは複数のアドレスに付ける名前です。
  • [REGION] は、このリクエストの対象リージョンです。
  • [SUBNETWORK] は、この内部 IP アドレスのサブネットです。
  • [IP_ADDRESS] は、予約する IP アドレスです。この IP アドレスは、サブネットの IP 範囲内に存在する必要があります。指定しない場合は、サブネットから自動的に割り当てられます。

たとえば、サブネットから自動的に割り当てられた内部 IP アドレスを予約するには、次のようにします。

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1

サブネットから特定の内部 IP アドレスを予約するには、次のようにします。

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

複数のアドレス名を渡すことで、複数のアドレスを作成できます。ただし、予約するアドレスはすべて同じサブネットに属します。次に例を示します。

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

API

API で、次の URL に POST リクエストを行います。

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

リクエストの本文には、addressTypeINTERNAL に設定する)、アドレスの name、および IP アドレスが属する subnetwork を含める必要があります。サブネットから IP アドレスが自動的に割り当てられるようにすることも、特定の IP アドレスの address を指定することもできます。

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

次に例を示します。

POST https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
 "name": "example-address-1",
 "addressType": "INTERNAL",
 "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
 "address": "10.128.0.12"
}

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

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

既存の IP アドレスを予約するには、昇格させる IP アドレスの値が必要です。リソースに describe リクエストを送り、IP アドレスを取得します。たとえば、現在 VM インスタンスが使用している IP アドレスを昇格させる場合は、次のようなコマンドを使用します。

gcloud compute instances describe [INSTANCE_NAME] --zone [ZONE] | grep "networkIP"

gcloud ツールから返される networkIP 値が、リソースで使用されている内部 IP です。次に例を示します。

networkIP: 10.240.0.2

次に、このアドレスを昇格させます。

Console

エフェメラル内部 IP アドレスを Console で静的 IP アドレスに昇格させるには:

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

    [VM インスタンス] ページに移動

  2. プロジェクトを選択します。
  3. 変更するインスタンスを選択します。
  4. ページの上部にある [編集] ツールをクリックします。
  5. [ネットワーク インターフェース] の編集ツールをクリックします。
  6. [内部 IP の種類] で [静的] を選択します。
  7. 静的 IP アドレスの情報を入力します。
  8. [完了] をクリックして変更を保存します。
  9. [保存] をクリックしてインスタンスを更新します。

gcloud

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

gcloud compute addresses create [ADDRESS_NAME_1] [[ADDRESS_NAME_2]..] \
    --addresses [IP_ADDRESS_1],[[IP_ADDRESS_2],..] \
    --region [REGION] \
    --subnet [SUBNETWORK]

ここで:

  • [ADDRESS_NAME] は、アドレスに付ける名前です。IP アドレスの宣言と同じ順序で名前を宣言します。この例の場合、[ADDRESS_NAME_1][IP_ADDRESS_1] に対応し、[ADDRESS_NAME_2][IP_ADDRESS_2] に対応します。
  • [IP_ADDRESS],[[IP_ADDRESS_2],...] は、昇格させる IP アドレスです。たとえば、10.128.1.9 です。
  • [REGION] は、このアドレスを予約するリージョンです。
  • [SUBNETWORK] は、このリクエストのサブネットワークです。

次に例を示します。

gcloud compute addresses create example-address-1 example-address-2 \
    --addresses 10.128.4.90,10.128.0.232 \
    --region us-central1 \
    --subnet subnet-1

API

API で、次の URL に POST リクエストを行います。

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

リクエストの本文には、addressTypeINTERNAL に設定する)、アドレスの name、昇格させる address、および IP アドレスが属する subnetwork を含める必要があります。

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

次に例を示します。

POST https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
 "name": "example-address-1",
 "addressType": "INTERNAL",
 "address": "10.128.0.2",
 "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
}

静的内部 IP アドレスを指定して VM インスタンスを作成する

新しい VM を作成するときに、予約した静的内部 IP アドレスを割り当てることができます。

Console

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

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. [新しいインスタンスの作成] ページで、インスタンスのプロパティを入力します。
  4. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションを展開します。
  5. [ネットワーキング] をクリックします。
  6. [ネットワーク] をクリックしてサブネットを選択します。
  7. [ネットワーク インターフェース] の編集ツールをクリックします。
  8. [プライマリ内部 IP] で、[静的内部 IP アドレスを予約] を選択します。
  9. 情報を入力して静的内部 IP アドレスを予約します。
  10. [作成] をクリックしてインスタンスを作成します。

gcloud

  1. まず、静的内部 IP アドレスを予約します。次の例では us-central1 リージョンに my-vm-ip-address というアドレスを予約しています。このコマンドでは --addresses フラグが省略されているため、Compute Engine は IP アドレスをランダムに予約します。

    gcloud compute addresses create my-vm-ip-address \
        --region us-central1 --subnet my-subnet
    
  2. 次に、予約したアドレスを使用して、インスタンスを作成します。次に例を示します。

    gcloud compute instances create my-instance \
        --image-family [IMAGE_FAMILY] \
        --image-project [IMAGE_PROJECT] \
        --private-network-ip my-vm-ip-address \
        --subnet my-subnet
    

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

静的内部 IP アドレスを使用する内部ロードバランサを作成するには、次の説明をご覧ください。

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

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

セカンダリ ネットワーク インターフェースに静的な内部 IP アドレスを割り当てるには、次の手順を実行します。

  1. まず、静的内部 IP アドレスを予約します。たとえば、次の例では us-central1 リージョンに my-second-ip-address というアドレスを予約しています。このコマンドでは --addresses フラグが省略されているため、Compute Engine は IP アドレスをランダムに予約します。

    gcloud compute addresses create my-second-ip-address \
        --region us-central1 --subnet subnet-b
    
  2. VM インスタンスを作成するときに、予約したアドレスをセカンダリ インターフェースの IP アドレスとして使用します。次に例を示します。

    gcloud compute instances create my-instance \
        --image-family [IMAGE_FAMILY] \
        --image-project [IMAGE_PROJECT] \
        --network-interface subnet=subnet-a,no-address \
        --network-interface \
          subnet=subnet-b,private-network-ip=my-second-ip-address,no-address
    

共有 VPC で静的内部 IP を使用する

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

静的内部 IP アドレスの削除

不要になった静的内部 IP アドレスは削除できます。現在別のリソースで使用されているかどうかにかかわらず、アドレスを削除することは可能です。リソースで使用されているアドレスを削除した場合は、そのリソースが削除されるまで関連付けは解除されず、リソースが削除されると、他のプロジェクトで使用可能なアドレスのプールに戻ります。

Console

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

    [VM インスタンス] ページに移動

  2. プロジェクトを選択します。
  3. プロジェクト リストから VM インスタンスを選択します。
  4. ページの上部にある [編集] ツールを選択します。
  5. [ネットワーク インターフェース] の編集ツールをクリックします。
  6. [内部 IP の種類] を [静的] から [エフェメラル] に変更します。
  7. [解放] を選択して静的 IP アドレスを解放します。
  8. [完了] をクリックして変更を保存します。

    インスタンスは、削除または再起動されるまで静的 IP アドレスを使用し続けます。削除または再起動された後、IP アドレスはサブネットの使用可能な内部 IP アドレスのデフォルト プールに戻されます。

gcloud

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

API

API で、次の URL に DELETE リクエストを行います。

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

たとえば、us-west1 リージョンのアドレスを削除するには、次のコマンドを実行します。

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント