パブリック IP アドレス サービス

パブリック(外部)IP アドレスのネットワーク サービスを使用すると、インターネットから、プライベート クラウドで実行されているワークロード仮想マシン(VM)、管理アプライアンス、ロードバランサに接続できます。たとえば、ワークロード VM でウェブサーバーを運用している場合は、インターネット経由でパブリック IP アドレスを使用してウェブ トラフィックを処理できます。デフォルトでは、パブリック IP ネットワーク サービスは無効になっています。

リソースにパブリック IP アドレスを割り振ると、次のような利点もあります。

  • 分散型サービス拒否攻撃(DDoS)の防止。この保護はパブリック IP アドレスに対して自動的に有効になります。
  • トラフィックを常時モニタリングし、ネットワークレベルの一般的な攻撃をリアルタイムで軽減。
  • グローバル ネットワーク全体での保護と攻撃の軽減。ネットワークを使用して、複数のリージョンにわたる攻撃トラフィックを分散および軽減できます。

動作

パブリック IP アドレスは 1 つのプライベート IP アドレスにのみ割り当てられ、そのパブリック IP アドレスは割り当てを解除するまでそのプライベート IP アドレス専用になります。パブリック IP アドレスに関連付けられたリソースがインターネットにアクセスする際には、必ずそのパブリック IP アドレスが使用されます。VMware Engine に接続されているプライマリ VPC ネットワーク用に最大 100 個のパブリック IP アドレスを予約できます。

デフォルトでは、パブリック IP アドレスの受信トラフィックは拒否され、送信インターネット アクセスのみが許可されます。インバウンド トラフィックを許可するには、特定のポートを通過するパブリック IP アドレスのファイアウォール ルールを作成します。

gcloud と API の前提条件

gcloud コマンドライン ツールまたは API を使用して VMware Engine リソースを管理するには、以下で説明するようにツールを構成することをおすすめします。

gcloud

  1. デフォルトのプロジェクト ID を設定します。

    gcloud config set project PROJECT_ID
    
  2. デフォルトのリージョンとゾーンを設定します。

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

gcloud vmware ツールの詳細については、Cloud SDK リファレンス ドキュメントをご確認ください

API

このドキュメント セットの API の例では、cURL コマンドライン ツールを使用して API がクエリされています。cURL リクエストには、有効なアクセス トークンが必要です。有効なアクセス トークンを取得するにはさまざまな方法があります。次の手順では、gcloud ツールを使用してアクセス トークンを生成します。

  1. Google Cloud にログインする

    gcloud auth login
    
  2. アクセス トークンを生成して TOKEN にエクスポートする

    export TOKEN=`gcloud auth print-access-token`
    
  3. TOKEN が正しく設定されていることを確認する

    echo $TOKEN
    
    Output:
    TOKEN
    

API へのリクエストで認証トークンを使用します。次に例を示します。

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

このドキュメントの Python コードサンプルは、VMware Engine ライブラリを使用して API と通信します。このアプローチを使用するには、ライブラリをインストールし、アプリケーションのデフォルト認証情報を構成する必要があります。

  1. Python ライブラリをダウンロードしてインストールする

     pip install google-cloud-vmwareengine
    
  2. シェルで次のコマンドを実行して、アプリケーションのデフォルト認証情報を構成する

      gcloud auth application-default login
    

    または、サービス アカウント キー ファイルを使用する

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

ライブラリの詳細については、リファレンス ページまたは GitHub のコードサンプルをご覧ください。

リージョンでパブリック IP ネットワーク サービスを有効にする

パブリック IP アドレスをワークロード VM に割り振る前に、リージョンでパブリック IP ネットワーク サービスを有効にする必要があります。

コンソール

  1. VMware Engine ポータルにアクセスします
  2. [ネットワーク] > [REGIONAL SETTINGS] に移動します。
  3. 目的のリージョンに対応する行で「編集」を選択します。リージョンがサマリー テーブルに表示されていない場合は、[リージョンを追加] をクリックしてリージョンを追加します。
  4. [パブリック IP サービス] を [有効] に切り替えます。
    • パブリック IP サービスを有効にするには、インターネット アクセス ネットワーク サービスも有効にする必要があります。
    • インターネット アクセス サービスを有効にし、パブリック IP サービスを無効にしたままにできます。その場合、ポイント対サイト VPN とパブリック IP の割り振りは使用できません。
  5. [Edge サービス CIDR] フィールドに、VMware Engine パブリック IP ゲートウェイのアドレス指定に使用するアドレス範囲(/26 アドレス範囲)を入力します。
  6. [Submit] をクリックします。

オペレーションが完了すると、通常数分後に、ネットワーク サービスのステータスが「有効」に変わります。

gcloud

gcloud ツールを使用して、ネットワーク ポリシーを作成します。

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network NETWORK_NAME --edge-services-cidr IP_RANGE \
    --location REGION --external-ip-access --internet-access

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

  • NETWORK_POLICY_NAME: このネットワーク ポリシーの名前
  • NETWORK_NAME: このリクエストのネットワーク。REGION-default の形式にする必要があります。
  • IP_RANGE: インターネット アクセス ゲートウェイと外部 IP アクセス ゲートウェイに使用する CIDR 範囲(CIDR 表記)。接頭辞が /26 の RFC 1918 CIDR ブロックが必要です
  • REGION: ネットワークのリージョン

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME -d '{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
 }

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

  • NETWORK_POLICY_NAME: このネットワーク ポリシーの名前
  • PROJECT_ID: このリクエストのプロジェクト ID
  • REGION: ネットワークのリージョン
  • IP_RANGE: インターネット アクセス ゲートウェイと外部 IP アクセス ゲートウェイに使用する CIDR 範囲(CIDR 表記)。接頭辞が /26 の RFC 1918 CIDR ブロックが必要です。
  • NETWORK_NAME: このネットワーク ポリシーが適用されるネットワーク。>REGION-default の形式にする必要があります。

Python

次の関数を使用して、external_ip と internet_access を True に設定した新しいネットワーク ポリシーを作成します。

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

パブリック IP アドレスを割り振る

ワークロード VM にパブリック IP アドレスを割り振るには、次の手順を行います。

  1. Google Cloud VMware Engine ポータルにアクセスします
  2. [Network] > [Public IPs] に移動します。
  3. [Allocate] をクリックします。
  4. [名前] フィールドに、パブリック IP アドレス エントリを識別する名前を入力します。
  5. ワークロード VM を含むプライベート クラウドを選択します。
  6. 割り振られたパブリック IP を提供するロケーションを選択します。
  7. [アタッチ済みのローカル アドレス] フィールドに、このパブリック IP アドレスを割り当てる VM のローカル IP アドレスを入力します。
  8. [Submit] をクリックして、パブリック IP アドレスを割り振るタスクを開始します。

タスクのステータスは、[Activity] > [Tasks] ページで確認できます。割り振りが完了すると、[Operational] ステータスの新しいエントリが [Public IPs] ページに表示されます。