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

静的外部 IP アドレスを予約できます。予約した静的外部 IP アドレスを一覧表示して解放することもできます。仮想マシン(VM)インスタンスに静的外部 IP アドレスを割り当てるには、静的外部 IP アドレスを構成するをご覧ください。

外部 IP アドレスには、静的なものとエフェメラルなものがあります。変更されない固定外部 IP アドレスが VM に必要な場合、静的外部 IP アドレスを取得できます。新しい外部 IP アドレスを予約することも、既存のエフェメラル外部 IP アドレスを昇格させることもできます。

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

始める前に

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

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

    コンソール

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

    gcloud

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

    gcloud init

    Terraform

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

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

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

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    REST

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

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

      gcloud init

必要なロール

静的 IP アドレスの予約と管理に必要な権限を取得するには、プロジェクトで Compute ネットワーク管理者roles/compute.networkAdmin)の IAM ロールを付与するように管理者へ依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

この事前定義ロールには、静的 IP アドレスの予約と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

静的 IP アドレスの予約と管理には、次の権限が必要です。

  • IP アドレスに対する compute.addresses.create
  • IP アドレスに対する compute.addresses.createInternal
  • ネットワークに対する compute.networks.list
  • サブネットに対する compute.subnetworks.use
  • サブネットに対する compute.subnetworks.list

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

静的外部 IP アドレスについて

静的外部 IP アドレスはプロジェクト用に予約される IP アドレスであり、解放するまで予約されたままになります。お客様やユーザーがサービスにアクセスする際に利用する IP アドレスがある場合、該当リソースでのみ使用できるようにその IP アドレスを予約できます。また、エフェメラル外部 IP アドレスを静的外部 IP アドレスに昇格させることもできます。

詳細については、IP アドレスをご覧ください。

次の表に、Google Cloud でサポートされている静的外部 IP アドレスを示します。

IP アドレスの種類 リソース IP 範囲 ソース 関連付け
リージョン外部 IPv4 アドレス VM とリージョン ロードバランサ /32 Google の外部 IP アドレスのプール プロジェクト
リージョン外部 IPv6 アドレス VM とサポートされているリージョン ロードバランサ /96 サブネットの外部 IPv6 アドレス範囲 サブネット
グローバル外部 IPv4 アドレス グローバル ロードバランサ /32 Google の外部 IP アドレスのプール プロジェクト
グローバル外部 IPv6 アドレス グローバル ロードバランサ /64 Google の外部 IP アドレスのプール プロジェクト

リージョン ロードバランサとグローバル ロードバランサの一覧については、ロードバランサ タイプのサマリーをご覧ください。

制限事項

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

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

  • 各 VM は複数のネットワーク インターフェースを持つことができ、各インターフェースには次の IP アドレスを割り振ることができます。

    • 内部 IPv4 アドレス(必須)
    • 外部 IPv4 アドレス
    • IPv6 アドレス範囲(内部または外部のどちらか一方)
  • 静的 IP アドレスの名前は変更できません。

  • 割り当てられた外部 IP アドレスは、VM と同じ物理ホストに存在し、すべての用途(ルーティング、レイテンシ、料金設定など)の VM と同じリージョンに存在します。これは、インターネットの位置情報に関する検索情報に関係なく当てはまります。

注: ネットワーク インターフェースは複数の転送ルールからトラフィックを受信できますが、ルールの中には他の外部 IP アドレスを対象とするものもあります。これらの転送ルールによって任意の数の外部 IP アドレスがネットワーク インターフェースを参照できますが、各ネットワーク インターフェースには、外部 IPv4 アドレスを 1 つと、外部 IPv6 アドレス範囲を 1 つだけ割り振ることができます。

ロード バランシングと転送ルールの詳細については、ロード バランシングのドキュメントをご覧ください。

新しい静的外部 IP アドレスを予約する

アドレスを予約した後、予約したアドレスを作成中の新しい VM または既存の VM に割り当てます。

コンソール

  1. Google Cloud コンソールで [静的アドレスの予約] ページに移動します。

    [静的アドレスの予約] に移動

  2. 新しいアドレスの名前を指定します。

  3. ネットワーク サービス ティアがプレミアムスタンダードかを指定します。IPv6 静的アドレス予約は、プレミアム ティアでのみサポートされます。

  4. IPv4 アドレスか IPv6 アドレスかを指定します。

  5. この IP アドレスがリージョン アドレスかグローバル アドレスかを指定します。

    • グローバル ロードバランサに静的 IP アドレスを予約する場合は、[グローバル] を選択して [予約] をクリックします。
    • VM またはリージョン ロードバランサ用に静的 IP アドレスを予約する場合は、[リージョン] を選択し、アドレスを作成するリージョンを選択します。
  6. リージョン外部 IPv6 アドレスを予約する場合は、以下も選択します。

    • ネットワーク: VPC ネットワーク
    • サブネットワーク: 静的リージョン IPv6 アドレスを割り当てるサブネット
    • エンドポイントのタイプ: [VM インスタンス] または [ネットワーク ロードバランサ] を選択します
  7. (省略可)VM インスタンス用の静的外部 IP アドレスを予約する場合は、[割り当て先] リストで IP アドレスを割り当てる VM インスタンスを選択します。

  8. [予約] をクリックして IP アドレスを予約します。

gcloud

静的外部 IP アドレスを予約するには、gcloud compute addresses create コマンドを使用します。

静的外部 IPv4 アドレスまたは静的外部 IPv6 アドレスを予約するには、次の手順を使用します。

グローバル IP アドレス

グローバル IP アドレスを予約するには:
  gcloud compute addresses create ADDRESS_NAME \
      --global \
      --ip-version [IPV4 | IPV6]
  

リージョン外部 IPv4 アドレス

リージョン外部 IPv4 アドレスを予約するには:
   gcloud compute addresses create ADDRESS_NAME \
       --region=REGION
   

リージョン外部 IPv6 アドレス

リージョン外部 IPv6 アドレスを予約するには:
   gcloud compute addresses create ADDRESS_NAME \
       --region=REGION \
       --subnet=SUBNET_NAME \
       --ip-version=IPV6 \
       --endpoint-type=[VM | NETLB]
   

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

  • ADDRESS_NAME: このアドレスに関連付ける名前。
  • REGION: リージョン外部 IP アドレスの場合は、このアドレスを予約するリージョンを指定します。これは、IP アドレスを割り振るリソースと同じリージョンにする必要があります。
  • SUBNET_NAME: リージョン外部 IPv6 アドレスの場合は、静的リージョン IPv6 アドレスの割り振り元のサブネットを指定します。サブネットには、割り当てられた外部 IPv6 アドレス範囲が必要です。
  • [IPV4 | IPV6]: グローバル IP アドレスの場合は、IP バージョン(IPv4 または IPv6)を指定します。リージョン外部 IPv6 アドレスの場合は、IPv6 を指定します。/96 IPv6 範囲は、指定されたサブネットから割り当てられます。
  • VM | NETLB: リージョン外部 IPv6 アドレスの場合は、エンドポイント タイプ(VM またはネットワーク ロードバランサ)を指定します。

結果を表示するには、gcloud compute addresses describe コマンドを使用します。

gcloud compute addresses describe ADDRESS_NAME

Terraform

google_compute_address リソースを使用して、リージョン外部 IP アドレスを作成できます。

resource "google_compute_address" "default" {
  name   = "my-test-static-ip-address"
  region = "us-central1"
}

次のサンプルは、google_compute_global_address リソースを使用してグローバル外部 IPv6 アドレスを作成する方法を示しています。

resource "google_compute_global_address" "default" {
  project      = var.project_id # Replace this with your service project ID in quotes
  name         = "ipv6-address"
  address_type = "EXTERNAL"
  ip_version   = "IPV6"
}

API

  • リージョン IPv4 アドレスを作成するには、リージョン addresses.insert メソッドを呼び出します。

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

    リクエスト本文は次のようにします。

    {
      "name": "ADDRESS_NAME"
    }
    

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

    • PROJECT_ID: このリクエストのプロジェクト ID
    • REGION: このリクエストのリージョン名
    • ADDRESS_NAME: アドレスに関連付ける名前
  • グローバル静的 IPv4 アドレスの場合は、globalAddresses.insert メソッドを呼び出します。

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

    リクエスト本文は次のようにします。

    {
      "name": "ADDRESS_NAME"
    }
    
  • グローバル静的 IPv6 アドレスの場合は、globalAddresses.insert メソッドを呼び出します。

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

    リクエスト本文は次のようにします。

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6"
    }
    

    結果を表示するには、addresses.get メソッドを使用します。

  • リージョン静的 IPv6 アドレスの場合は、addresses.insert メソッドを呼び出します。

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

    リクエスト本文は次のようにします。

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6",
      "ipv6EndpointType": "VM|LB",
      "networkTier": "PREMIUM",
      "subnetwork": "SUBNET"
    }
    

    SUBNET は、このプロジェクトのサブネットに置き換えます。

    結果を表示するには、addresses.get メソッドを使用します。

エフェメラル外部 IP アドレスを昇格させる

VM にエフェメラル外部 IP アドレスがあり、その IP アドレスを永続的にプロジェクトに割り当てる必要がある場合は、エフェメラル外部 IP アドレスを静的外部 IP アドレスに昇格させます。エフェメラル外部 IP アドレスを予約済みに昇格しても、Google Cloud では VM に送信されたパケットは破棄されません。これは、VM に直接送信されたパケットとロードバランサによって送信されたパケットの両方について該当します。

コンソール

  1. [IP アドレス] ページに移動します。

    [IP アドレス] に移動

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

gcloud

静的外部 IPv4 アドレスまたは静的外部 IPv6 アドレスを昇格させるには、次の手順を使用します。

  • エフェメラル外部 IPv4 アドレスを静的外部 IPv4 アドレスに昇格させるには、compute addresses create コマンド--addresses フラグを使用してエフェメラル外部 IP アドレスを指定します。エフェメラル リージョン IP アドレスを昇格させる場合は region フラグ、エフェメラル グローバル IP アドレスを昇格させる場合は global フラグを使用します。

    gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \
        [--region=REGION | --global]
    

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

    • ADDRESS_NAME: このアドレスに関連付ける名前。
    • IP_ADDRESS: 昇格させる IP アドレス。
    • REGION: リージョン IP アドレスが属するリージョン。

    • エフェメラル リージョン外部 IPv6 アドレスを静的リージョン外部 IPv6 アドレスに昇格させるには、compute addresses create コマンド--addresses フラグを使用してエフェメラル外部 IP アドレスを指定します。

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --addresses=IPV6_ADDRESS \
        --prefix-length=96
    

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

    • ADDRESS_NAME: IP アドレス リソースの名前。
    • REGION: IPv6 アドレス リソースのリージョン。
    • IPV6_ADDRESS: 昇格させる IPv6 アドレス。

API

エフェメラル リージョン IP アドレスを昇格させるには、addresses.insert メソッドを呼び出します。

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

エフェメラル グローバル IP アドレスを昇格させるには、次の URI に POST リクエストを送信します。

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

リクエスト本文の必須項目の値を指定します。

  • IPv4 アドレスの場合、リクエスト本文には次の項目を含める必要があります。

    {
      "name": "ADDRESS_NAME",
      "address": "IPV4_ADDRESS"
      "addressType": "EXTERNAL"
    }
    
  • IPv6 アドレスの場合、リクエスト本文には次の項目を含める必要があります。

    {
      "name": "ADDRESS_NAME",
      "address": "IPV6_ADDRESS"
      "prefixLength": 96
      "addressType": "EXTERNAL"
    }
    

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

    • ADDRESS_NAME: このアドレスに関連付ける名前
    • IPV4_ADDRESS|IPV6_ADDRESS: 昇格させる IPv4 アドレスまたは IPv6 アドレス
    • REGION: IPv4 アドレスまたは IPv6 アドレスが属するリージョン
    • PROJECT_ID: このリクエストのプロジェクト ID

外部 IP アドレスは静的外部 IP アドレスに昇格した後も、VM に接続された状態を保持します。新しく昇格した静的外部 IP アドレスを別のリソースに割り当てる必要がある場合は、既存の VM から静的外部 IP アドレスを割り当て解除します。

静的外部 IP アドレスを一覧表示する

プロジェクト用に予約した静的外部 IP アドレスを一覧表示するには、次の手順に沿います。

コンソール

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

    [IP アドレス] に移動

  2. [外部 IP アドレス] をクリックします。

gcloud

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

  • すべての IP アドレスを一覧表示するには、次のコマンドを使用します。

    gcloud compute addresses list
  • すべてのグローバル IP アドレスを一覧表示するには、次のコマンドを使用します。

    gcloud compute addresses list --global
  • 特定のリージョンのすべてのリージョン IP アドレスを一覧表示するには、次のコマンドを使用します。

    gcloud compute addresses list \
        --regions=REGION
    

    REGION は、アドレスを一覧表示するリージョンに置き換えます。カンマ区切りでリージョン名を指定すると、複数のリージョンのアドレスを一覧表示できます。

    gcloud compute addresses list \
        --regions=REGION1,REGION2,..REGION_n_
    

API

  • リージョン IPv4 アドレスまたはリージョン IPv6 アドレスを一覧表示するには、addresses.list メソッドを呼び出します。

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

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

    • PROJECT_ID: このリクエストのプロジェクト ID
    • REGION: このリクエストのリージョン名
  • すべてのリージョンのアドレスを一覧表示するには、addresses.aggregatedList メソッドを呼び出します。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
    
  • グローバル IPv4 アドレスまたはグローバル IPv6 アドレスを一覧表示するには、globalAddresses.list メソッドを呼び出します。

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

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

    PROJECT_ID: このリクエストのプロジェクト ID

静的外部 IP アドレスを取得する

静的外部 IP アドレスに関する情報を取得する手順は次のとおりです。

コンソール

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

    [IP アドレス] に移動

  2. [外部 IP アドレス] をクリックします。

  3. 詳細情報を取得する IP アドレスをクリックします。

gcloud

gcloud compute addresses describe コマンドを使用します。ADDRESS_NAME は、記述する外部 IP アドレスの名前に置き換えます。

  • グローバル IPv4 アドレスまたはグローバル IPv6 アドレスの場合は、次のコマンドを使用します。

    gcloud compute addresses describe ADDRESS_NAME --global
  • リージョン IPv4 アドレスまたはリージョン IPv6 アドレスの場合は、次のコマンドを使用します。

    gcloud compute addresses describe ADDRESS_NAME --region=REGION

API

  • リージョン IPv4 アドレスまたはリージョン IPv6 アドレスを記述するには、addresses.get メソッドを呼び出します。

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

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

    • PROJECT_ID: リクエストのプロジェクト ID
    • REGION: このリクエストのリージョン名
    • ADDRESS_NAME: IP アドレスの名前
  • グローバル IPv4 アドレスまたはグローバル IPv6 アドレスを記述するには、globalAddresses.get メソッドを呼び出します。

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

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

    • PROJECT_ID: リクエストのプロジェクト ID
    • ADDRESS_NAME: IP アドレスの名前

静的外部 IP アドレスを解放する

静的外部 IPv4 アドレスや静的外部 IPv6 アドレスが不要になったら、IP アドレス リソースを削除して IP アドレスを解放できます。

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

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

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

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

コンソール

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

    [IP アドレス] に移動

  2. [外部 IP アドレス] をクリックします。

  3. 解放する IP アドレスを選択します。

  4. [IP アドレスを解放] をクリックします。

gcloud

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

gcloud compute addresses delete ADDRESS_NAME

ADDRESS_NAME は、解放する IPv4 アドレスまたは IPv6 アドレスの名前に置き換えます。

API

  • リージョン IPv4 アドレスまたはリージョン IPv6 アドレスを解放するには、addresses.delete メソッドを呼び出します。

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

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

    • PROJECT_ID: このリクエストのプロジェクト ID
    • REGION: このリクエストのリージョン名
    • ADDRESS_NAME: IP アドレスの名前
  • グローバル IPv4 アドレスまたはグローバル IPv6 アドレスを解放するには、globalAddresses.delete メソッドを呼び出します。

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

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

    • ADDRESS_NAME: IP アドレスの名前
    • PROJECT_ID: このリクエストのプロジェクト ID

次のステップ