ポリシーベースのルートを使用する

ポリシーベースのルートを使用すると、パケットの宛先 IP アドレス以外の条件も使用してネクストホップを選択できます。このページでは、ポリシーベースのルートの作成、一覧表示、詳細の取得、削除を行う方法について説明します。

始める前に

必要なロール

ポリシーベースのルートを使用するために必要な権限を取得するには、プロジェクトに対する Compute ネットワーク管理者roles/compute.networkAdmin) IAM ロールを付与するように管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

ポリシーベースのルートを作成する

ポリシーベースのルートを作成するときに、次の項目を指定します。

  • ルートの範囲: ルートを適用できるリソース。
  • 分類基準: 送信元 IP アドレス範囲、宛先 IP アドレス範囲、ルートが適用されるパケットを特定するプロトコル。ポリシーベースのルートは、指定されたすべての分類基準と一致するパケットに適用されます。
  • ネクストホップ: ネクストホップの内部パススルー ネットワーク ロードバランサ、または他のポリシーベースのルートをスキップするネクストホップ。

コンソール

  1. Google Cloud コンソールで、[ルート] に移動します。

    [ルート] に移動

  2. [ルート管理] をクリックします。

  3. [ルートを作成] をクリックします。

  4. ルートの名前を入力します。

  5. (省略可)説明を入力します。

  6. [ネットワーク] をクリックして、ポリシーベースのルートを追加するネットワークを選択します。

  7. [ルートのタイプ] をクリックし、[ポリシーベースのルート] を選択します。

  8. [ルートの適用範囲] セクションで、次のいずれかを行います。

    • すべての仮想マシン(VM)インスタンス、Cloud Interconnect の VLAN アタッチメント、Virtual Private Cloud ネットワーク内の Cloud VPN トンネルにルートを適用するには、[このルートを、すべての VM インスタンス、VLAN アタッチメント、VPN トンネルに適用する] を選択します。

      このタイプのルートを作成する場合は慎重に行ってください。ルートは、分類基準に一致するすべての下り(外向き)パケットに適用されます。内部パススルー ネットワーク ロードバランサのバックエンドからの下り(外向き)トラフィックにも適用されます。

    • 特定の VM インスタンスにのみルートを適用するには、[このルートを VM インスタンスにのみ適用する] を選択して、このルートを適用する VM のネットワーク タグを入力します。複数のタグを入力する場合は、カンマ区切りのリストで指定します。

    • ルートの VPC ネットワーク内の Cloud Interconnect のすべての VLAN アタッチメントにルートを適用するには、[このルートを VLAN アタッチメントにのみ適用する] を選択します。

    • 特定のリージョンの Cloud Interconnect の VLAN アタッチメントにルートを適用するには、[このルートを VLAN アタッチメントにのみ適用する] を選択してから、VLAN アタッチメントのリージョンを選択します。特定の VLAN アタッチメントに適用されるポリシーベースのルートを作成することはできません。

  9. [分類の基準] セクションで、次の操作を行います。

    1. ソース IP 範囲を入力します。
    2. 宛先 IP の範囲を入力します。
    3. [プロトコル] をクリックして、このルートを適用するプロトコルを選択します。
  10. 優先度を入力します。

  11. [ネクストホップ] セクションで [ネクストホップ] をクリックし、次の操作を行います。

    • ネクストホップの内部パススルー ネットワーク ロードバランサを指定するには、[内部パススルー ネットワーク ロードバランサの転送ルールを指定する] を選択して、次の操作を行います。

      • 既存の転送ルールのリストから転送ルールを選択するには:
        1. [現在のプロジェクト内の内部ロードバランサの転送ルールで使用中] を選択します。
        2. [転送ルールの IP アドレス] をクリックして、選択したプロジェクトの内部ロードバランサに関連付けられている IP アドレスを選択します。
      • IP アドレスを入力するには:

        1. [未使用] を選択します。
        2. [転送ルールの IP アドレス] フィールドに、プレフィックス長を含めずに IP アドレスを入力します。IP アドレスは、次のいずれかから取得する必要があります。

          • このポリシーベースのルートを作成する VPC ネットワークの IP アドレス範囲。
          • VPC ネットワーク ピアリング(プレビュー)を介してルートの VPC ネットワークに接続されている VPC ネットワークの IP アドレス範囲。

        内部パススルー ネットワーク ロードバランサの転送ルールに関連付けられている IP アドレスを指定することも、このポリシーベースのルートの作成後に未使用の IP アドレスを指定して転送ルールを作成することもできます。

    • 他のポリシーベースのルートをスキップするポリシーベースのルートを作成するには、[他のポリシーベースのルートをスキップする] を選択します。

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

gcloud

policy-based-routes create コマンドを使用します。

  • すべての VM インスタンス、Cloud Interconnect の VLAN アタッチメント、Virtual Private Cloud ネットワークの Cloud VPN トンネルにルートを適用するには、次のコマンドを使用します。

    このタイプのルートを作成する場合は慎重に行ってください。ルートは、分類基準に一致するすべての下り(外向き)パケットに適用されます。内部パススルー ネットワーク ロードバランサのバックエンドからの下り(外向き)トラフィックにも適用されます。

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-ilb-ip=NEXT_HOP \
        --description=DESCRIPTION \
        --priority=PRIORITY
    

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

    • ROUTE_NAME: ポリシーベースのルートの名前。
    • SOURCE_RANGE: 送信元 IP の CIDR 範囲。
    • DESTINATION_RANGE: 宛先 IP の CIDR 範囲。
    • PROTOCOL: 転送するトラフィックのプロトコル。ALLTCP、または UDP を指定できます。デフォルトは ALL です。
    • IP_VERSION: このルートが適用される単一のインターネット プロトコル バージョン。IPv4 または IPv6(プレビュー版)のいずれかを指定します。デフォルトは IPv4 です。IPv6 を指定するには、Google Cloud CLI のベータ版を使用します。
    • PROJECT_ID: プロジェクトの ID。
    • NETWORK: ポリシーベースのルートを適用するネットワークの名前。
    • NEXT_HOP: ルートのネクストホップ内部パススルー ネットワーク ロードバランサの単一の IP アドレス(プリフィックス長なし)。IPv4 トラフィックのネクストホップとして IPv4 アドレスを指定するか、IPv6 トラフィック用の IPv6 アドレスを指定します(プレビュー)。ロードバランサは、ポリシーベースのルートと同じ VPC ネットワーク内、または VPC ネットワーク ピアリング(プレビュー)を介してルートの VPC ネットワークに接続されている VPC ネットワーク内に配置する必要があります。

      ルートが IPv6 トラフィック(プレビュー)に適用される場合は、デュアルスタック サブネットを使用してロードバランサを設定する必要があります。

      ピア VPC ネットワークの IPv6 アドレスまたは IP アドレスを指定するには、Google Cloud CLI のベータ版を使用します。

    • DESCRIPTION: ルートの説明(省略可)。

    • PRIORITY: 他のポリシーベースのルートと比較したポリシーベースのルートの優先度。

  • 特定の VM インスタンスにのみルートを適用するには、次のコマンドを使用します。

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-ilb-ip=NEXT_HOP \
        --description=DESCRIPTION \
        --priority=PRIORITY \
        --tags=NETWORK_TAGS
    

    NETWORK_TAGS は、ルートを適用する VM の 1 つ以上のネットワーク タグに置き換えます。複数のタグを入力する場合は、カンマ区切りのリストで指定します。

  • Cloud Interconnect の VLAN アタッチメントにのみルートを適用するには、次のコマンドを使用します。ルートは、特定のリージョン内の Cloud Interconnect の VLAN アタッチメント、または VPC ネットワーク内の Cloud Interconnect のすべての VLAN アタッチメントのいずれかに適用できます。

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-ilb-ip=NEXT_HOP \
        --description=DESCRIPTION \
        --priority=PRIORITY \
        --interconnect-attachment-region=INTERCONNECT_REGION
    

    INTERCONNECT_REGION は、ルートを適用する Cloud Interconnect の VLAN アタッチメントのリージョンに置き換えます。ルートの VPC ネットワーク内の Cloud Interconnect のすべての VLAN アタッチメントにポリシーベースのルートを適用するには、all を使用します。

  • ネットワーク タグで識別される特定の VM に対する他のポリシーベースのルートをスキップするネクストホップを指定するには、次のコマンドを使用します。

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-other-routes=DEFAULT_ROUTING \
        --description=DESCRIPTION \
        --priority=PRIORITY \
        --tags=NETWORK_TAGS
    

API

POST リクエストを policyBasedRoutes.create メソッドに送信します。

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes?policyBasedRouteId=ROUTE_NAME
  • すべての VM インスタンス、Cloud Interconnect の VLAN アタッチメント、Virtual Private Cloud ネットワークの Cloud VPN トンネルにルートを適用するには、次のリクエスト本文を含めます。

    このタイプのルートを作成する場合は慎重に行ってください。ルートは、分類基準に一致するすべての下り(外向き)パケットに適用されます。内部パススルー ネットワーク ロードバランサのバックエンドからの下り(外向き)トラフィックにも適用されます。

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopIlbIp": "NEXT_HOP",
      "description": "DESCRIPTION",
      "priority": "PRIORITY"
    }
    

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

    • PROJECT_ID: プロジェクトの ID。
    • ROUTE_NAME: ポリシーベースのルートの名前。
    • SOURCE_RANGE: 送信元 IP の CIDR 範囲。
    • DESTINATION_RANGE: 宛先 IP の CIDR 範囲。
    • PROTOCOL: 転送するトラフィックのプロトコル。ALLTCP、または UDP を指定できます。デフォルトは ALL です。
    • IP_VERSION: ルートが適用される単一のインターネット プロトコル バージョン。IPv4 または IPv6(プレビュー版)のいずれかを指定します。デフォルトは IPv4 です。IPv6 アドレスを指定するには、v1beta API を使用します。
    • NETWORK: ポリシーベースのルートを適用するネットワークの名前。ルートは、このネットワーク内で他の一致条件を満たすインスタンスからの下り(外向き)トラフィックに適用されます。
    • NEXT_HOP: ルートのネクストホップ内部パススルー ネットワーク ロードバランサの単一の IP アドレス(プリフィックス長なし)。IPv4 トラフィックのネクストホップとして IPv4 アドレスを指定するか、IPv6 トラフィック用の IPv6 アドレスを指定します(プレビュー)。ロードバランサは、ポリシーベースのルートと同じ VPC ネットワーク内、または VPC ネットワーク ピアリング(プレビュー)を介してルートの VPC ネットワークに接続されている VPC ネットワーク内に配置する必要があります。

      ルートが IPv6 トラフィック(プレビュー)に適用される場合は、デュアルスタック サブネットを使用してロードバランサを設定する必要があります。

      ピア VPC ネットワークの IPv6 アドレスまたは IP アドレスを指定するには、v1beta API を使用します。

    • DESCRIPTION: ルートの説明(省略可)。

    • PRIORITY: 他のポリシーベースのルートと比較したポリシーベースのルートの優先度。

  • 特定の VM インスタンスにのみルートを適用するには、次のリクエスト本文を含めます。

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopIlbIp": "NEXT_HOP",
      "description": "DESCRIPTION",
      "priority": "PRIORITY",
      "virtualMachine": {
        "tags": [
          "NETWORK_TAGS"
        ]
      }
    }
    

    NETWORK_TAGS は、1 つ以上のネットワーク タグに置き換えます。ポリシーベースのルートは、これらのタグが 1 つ以上あるインスタンスからの下り(外向き)トラフィックに適用されます。複数のタグを使用する場合は、"tag1","tag2","tag3" の形式で指定します。

  • Cloud Interconnect の VLAN アタッチメントにのみルートを適用するには、次のリクエスト本文を含めます。特定の VLAN アタッチメントに適用されるポリシーベースのルートを作成することはできません。

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "interconnectAttachment": {
        "region": "INTERCONNECT_REGION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopIlbIp": "NEXT_HOP",
      "description": "DESCRIPTION",
      "priority": "PRIORITY"
    }
    

    INTERCONNECT_REGION は、このルートを適用する Cloud Interconnect の VLAN アタッチメントのリージョンに置き換えます。ルートの VPC ネットワーク内の Cloud Interconnect のすべての VLAN アタッチメントにポリシーベースのルートを適用するには、all を使用します。

  • ネットワーク タグで識別される特定の VM に対する他のポリシーベースのルートをスキップするネクストホップを指定するには、次のコマンドを使用します。

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopOtherRoutes": "DEFAULT_ROUTING",
      "description": "DESCRIPTION",
      "priority": "PRIORITY",
      "virtualMachine": {
        "tags": [
          "NETWORK_TAGS"
        ]
      }
    }
    

ポリシーベースのルートの接続を確認する

接続テストは、ネットワーク内のエンドポイント間の接続を確認できる診断ツールです。構成を分析し、場合によってはランタイム検証を行うこともあります。接続テストでは、ポリシーベースのルートがサポートされています。ポリシーベースのルートで接続テストを実行するには、接続テストを作成して実行するをご覧ください。

ポリシーベースのルートを一覧表示する

ポリシーベース ルートを一覧表示すると、プロジェクト、ネットワーク、リージョンのすべてのポリシーベースのルートを表示できます。

コンソール

  1. Google Cloud コンソールで、[ルート] に移動します。

    [ルート] に移動

    • VPC ネットワークとリージョン内のすべてのポリシーベースのルートを表示するには、次の操作を行います。

      1. [適用されているルート] をクリックします。
      2. [ネットワーク] をクリックして、ネットワークを選択します。
      3. [リージョン] をクリックして、リージョンを選択します。
      4. [表示] をクリックします。
    • プロジェクト内のすべてのポリシーベースのルートを表示するには、次の操作を行います。

      1. [ルート管理] をクリックします。

gcloud

policy-based-routes list コマンドを使用します。

gcloud network-connectivity policy-based-routes list

API

GET リクエストを policyBasedRoutes.list メソッドに送信します。

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes

PROJECT_ID は、ポリシーベースのルートを一覧表示するプロジェクトの ID に置き換えます。

ポリシーベースのルートの説明を取得する

ポリシーベースのルートの説明を取得して、ルートの詳細を確認できます。

コンソール

  1. Google Cloud コンソールで、[ルート] に移動します。

    [ルート] に移動

  2. [適用されているルート] をクリックします。

  3. [ネットワーク] をクリックして、ネットワークを選択します。

  4. [リージョン] をクリックして、リージョンを選択します。

  5. [表示] をクリックします。

  6. ポリシーベースのルートの名前をクリックして、詳細を表示します。

gcloud

ポリシーベースのルートの説明を取得するには、policy-based-routes describe コマンドを使用します。

gcloud network-connectivity policy-based-routes describe NAME

NAME は、説明を取得するルートの名前に置き換えます。

API

GET リクエストを policyBasedRoutes.get メソッドに送信します。

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME

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

  • PROJECT_ID: プロジェクトの ID。
  • ROUTE_NAME: 説明を取得するポリシーベースのルートの名前。

ポリシーベースのルートを削除する

ポリシーベースのルートを削除して、VPC ネットワークから削除できます。

コンソール

  1. Google Cloud コンソールで、[ルート] に移動します。

    [ルート] に移動

  2. [適用されているルート] をクリックします。

  3. [ネットワーク] をクリックして、ネットワークを選択します。

  4. [リージョン] をクリックして、リージョンを選択します。

  5. [表示] をクリックします。

  6. ポリシーベースのルートの名前をクリックします。

  7. [削除] をクリックし、確認のためもう一度 [削除] をクリックします。

gcloud

ポリシーベースのルートを削除するには、policy-based-routes delete コマンドを使用します。

gcloud network-connectivity policy-based-routes delete NAME

NAME は、削除するルートの名前に置き換えます。

API

DELETE リクエストを policyBasedRoutes.delete メソッドに送信します。

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME

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

  • PROJECT_ID: プロジェクトの ID。
  • ROUTE_NAME: 削除するポリシーベースのルートの名前。

互換性

次の方法でポリシーベースのルートを使用するには、特別な構成が必要です。

GKE でポリシーベースのルートを使用する

Google Kubernetes Engine(GKE)クラスタがある VPC ネットワークにポリシーベースのルートを作成する場合は、次の点に注意してください。

  • 宛先にクラスタノードまたは Pod の IP アドレスが含まれるポリシーベースのルートは作成しないでください。
  • 宛先にクラスタ コントロール プレーンのプライベート エンドポイントが含まれるポリシーベースのルートは作成しないでください。

公開サービス用のポリシーベースのルートと Private Service Connect

ポリシーベースのルートを使用して、VM から公開サービス用の Private Service Connect エンドポイントまたは公開サービス用の Private Service Connect バックエンドにトラフィックを転送することはできません。公開サービスにポリシーベースのルートと Private Service Connect を使用する場合:

  • ネットワーク タグを使用して、ポリシーベースのルートが特定の VM に適用されるようにします。
  • 0.0.0.0/0 の送信元または宛先の IP アドレス範囲を使用してポリシーベースのルートを作成しないでください。
  • Private Service Connect エンドポイントまたはバックエンドの IP アドレスを含む宛先範囲を使用してポリシーベースのルートを作成する必要がある場合は、他のポリシーベースのルートをスキップする、優先度の高いポリシーベースのルートを作成します。Private Service Connect エンドポイントまたはバックエンドの IP アドレスを含む、より狭い IP アドレス範囲を使用して、優先度の高いポリシーベースのルートの宛先を構成します。

ポリシーベースのルートと、Google API およびサービスへのアクセス

Google Cloud では、他の VM インスタンスまたはカスタム ネクストホップを経由して Google API とサービスにトラフィックを転送することはできません(ポリシーベースのルートでネクストホップ内部パススルー ネットワーク ロードバランサの VM バックエンドに転送することもできません)。

次のいずれかの方法で Google API とサービスにアクセスする場合は、次のセクションのベスト プラクティスをご覧ください。

ベスト プラクティス

前述の方法で Google API とサービスにアクセスする場合は、次のベスト プラクティスに従うことをおすすめします。

  • ネットワーク タグを使用して、ポリシーベースのルートが特定の VM に適用されるようにします。
  • 0.0.0.0/0 の送信元または宛先の範囲を使用してポリシーベースのルートを作成しないでください。
  • Google API とサービス、Google API の Private Service Connect エンドポイント、API 用の Private Service Connect バックエンドで使用される宛先範囲を含むポリシーベースのルートを作成する場合は、優先度の高いポリシーベースのルートを作成して、他のポリシーベースのルートをスキップしてください。優先度の高いポリシーベースのルートの宛先は、使用する Google API とサービス、Private Service Connect エンドポイント、または Private Service Connect バックエンドの IP アドレスと一致するように設定します。Google API とサービスで使用される IP アドレス範囲には、次のものがあります。
    • Google API とサービスで使用されるデフォルト ドメインの IP アドレス
    • 限定公開の Google アクセスの仮想 IP アドレス(VIP):
      • private.googleapis.com(199.36.153.8/30)
      • restricted.googleapis.com(199.36.153.4/30)