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

ポリシーベースのルートを使用すると、パケットの宛先 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. [ネクストホップ] セクションで [ネクストホップ] をクリックし、次の操作を行います。

    • ネクストホップの内部パススルー ネットワーク ロードバランサを指定するには、[Specify a forwarding rule of the internal passthrough Network Load Balancer] を選択して、次の操作を行います。
      • 既存の転送ルールのリストから転送ルールを選択するには:
        1. [現在のプロジェクト内の内部ロードバランサの転送ルールで使用中] を選択します。
        2. [転送ルールの IP アドレス] をクリックして、選択したプロジェクトの内部ロードバランサに関連付けられている IP アドレスを選択します。
      • IP アドレスを入力するには:
        1. [未使用] を選択します。
        2. [転送ルールの IP アドレス] フィールドに、IP アドレスを入力します。IP アドレスは、このポリシーベースのルートを作成するネットワークの 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 \
      --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 です。
    • PROJECT_ID: プロジェクトの ID。
    • NETWORK: ポリシーベースのルートを適用するネットワークの名前。
    • NEXT_HOP: ルートのネクストホップの内部パススルー ネットワーク ロードバランサの IPv4 アドレス。
    • DESCRIPTION: ルートの説明(省略可)。
    • PRIORITY: 他のポリシーベースのルートと比較したポリシーベースのルートの優先度。
  • 特定の VM インスタンスにのみルートを適用するには、次のコマンドを使用します。

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
      --source-range=SOURCE_RANGE \
      --destination-range=DESTINATION_RANGE \
      --ip-protocol=PROTOCOL \
      --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 \
      --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 \
      --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": "IPv4"
      },
      "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 です。
    • NETWORK: ポリシーベースのルートを適用するネットワークの名前。ルートは、このネットワーク内で他の一致条件を満たすインスタンスからの下り(外向き)トラフィックに適用されます。
    • NEXT_HOP: ルートのネクストホップの内部パススルー ネットワーク ロードバランサの IPv4 アドレス。
    • DESCRIPTION: ルートの説明(省略可)。
    • PRIORITY: 他のポリシーベースのルートと比較したポリシーベースのルートの優先度。
  • 特定の VM インスタンスにのみルートを適用するには、次のリクエスト本文を含めます。

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IPv4"
      },
      "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": "IPv4"
      },
      "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": "IPv4"
      },
      "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)