ポリシーベースのルートを使用する
ポリシーベースのルートを使用すると、パケットの宛先 IP アドレス以外の条件も使用してネクストホップを選択できます。このページでは、ポリシーベースのルートの作成、一覧表示、詳細の取得、削除を行う方法について説明します。
始める前に
- このガイドのコマンドラインの例を使用するには、Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新してください。
- プロジェクトで Network Connectivity API を有効にする必要があります。
- 内部パススルー ネットワーク ロードバランサが必要です。内部パススルー ネットワーク ロードバランサが定義されているリージョン以外のリージョンからパケットがドロップされないように、グローバル アクセスを有効にすることをおすすめします。
必要なロール
ポリシーベースのルートを使用するために必要な権限を取得するには、プロジェクトに対する Compute ネットワーク管理者(roles/compute.networkAdmin
) IAM ロールを付与するように管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ポリシーベースのルートを作成する
ポリシーベースのルートを作成するときに、次の項目を指定します。
- ルートの範囲: ルートを適用できるリソース。
- 分類基準: 送信元 IP アドレス範囲、宛先 IP アドレス範囲、ルートが適用されるパケットを特定するプロトコル。ポリシーベースのルートは、指定されたすべての分類基準と一致するパケットに適用されます。
ネクストホップ: ネクストホップの内部パススルー ネットワーク ロードバランサ、または他のポリシーベースのルートをスキップするネクストホップ。
コンソール
Google Cloud コンソールで、[ルート] に移動します。
[ルート管理] をクリックします。
[ルートを作成] をクリックします。
ルートの名前を入力します。
(省略可)説明を入力します。
[ネットワーク] をクリックして、ポリシーベースのルートを追加するネットワークを選択します。
[ルートのタイプ] をクリックし、[ポリシーベースのルート] を選択します。
[ルートの適用範囲] セクションで、次のいずれかを行います。
すべての仮想マシン(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 アタッチメントに適用されるポリシーベースのルートを作成することはできません。
[分類の基準] セクションで、次の操作を行います。
- ソース IP 範囲を入力します。
- 宛先 IP の範囲を入力します。
- [プロトコル] をクリックして、このルートを適用するプロトコルを選択します。
優先度を入力します。
[ネクストホップ] セクションで [ネクストホップ] をクリックし、次の操作を行います。
- ネクストホップの内部パススルー ネットワーク ロードバランサを指定するには、[Specify a forwarding rule of the internal passthrough Network Load Balancer] を選択して、次の操作を行います。
- 既存の転送ルールのリストから転送ルールを選択するには:
- [現在のプロジェクト内の内部ロードバランサの転送ルールで使用中] を選択します。
- [転送ルールの IP アドレス] をクリックして、選択したプロジェクトの内部ロードバランサに関連付けられている IP アドレスを選択します。
- IP アドレスを入力するには:
- [未使用] を選択します。
- [転送ルールの IP アドレス] フィールドに、IP アドレスを入力します。IP アドレスは、このポリシーベースのルートを作成するネットワークの IP アドレス範囲から取得する必要があります。内部パススルー ネットワーク ロードバランサの転送ルールに関連付けられている IP アドレスを指定することも、このポリシーベースのルートの作成後に未使用の IP アドレスを指定して転送ルールを作成することもできます。
- 既存の転送ルールのリストから転送ルールを選択するには:
- 他のポリシーベースのルートをスキップするポリシーベースのルートを作成するには、[他のポリシーベースのルートをスキップする] を選択します。
- ネクストホップの内部パススルー ネットワーク ロードバランサを指定するには、[Specify a forwarding rule of the internal passthrough Network Load Balancer] を選択して、次の操作を行います。
[作成] をクリックします。
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
: 転送するトラフィックのプロトコル。ALL
、TCP
、または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
: 転送するトラフィックのプロトコル。ALL
、TCP
、または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" ] } }
ポリシーベースのルートの接続を確認する
接続テストは、ネットワーク内のエンドポイント間の接続を確認できる診断ツールです。構成を分析し、場合によってはランタイム検証を行うこともあります。接続テストでは、ポリシーベースのルートがサポートされています。ポリシーベースのルートで接続テストを実行するには、接続テストを作成して実行するをご覧ください。
ポリシーベースのルートを一覧表示する
ポリシーベース ルートを一覧表示すると、プロジェクト、ネットワーク、リージョンのすべてのポリシーベースのルートを表示できます。
コンソール
Google Cloud コンソールで、[ルート] に移動します。
VPC ネットワークとリージョン内のすべてのポリシーベースのルートを表示するには、次の操作を行います。
- [適用されているルート] をクリックします。
- [ネットワーク] をクリックして、ネットワークを選択します。
- [リージョン] をクリックして、リージョンを選択します。
- [表示] をクリックします。
プロジェクト内のすべてのポリシーベースのルートを表示するには、次の操作を行います。
- [ルート管理] をクリックします。
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 に置き換えます。
ポリシーベースのルートの説明を取得する
ポリシーベースのルートの説明を取得して、ルートの詳細を確認できます。
コンソール
Google Cloud コンソールで、[ルート] に移動します。
[適用されているルート] をクリックします。
[ネットワーク] をクリックして、ネットワークを選択します。
[リージョン] をクリックして、リージョンを選択します。
[表示] をクリックします。
ポリシーベースのルートの名前をクリックして、詳細を表示します。
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 ネットワークから削除できます。
コンソール
Google Cloud コンソールで、[ルート] に移動します。
[適用されているルート] をクリックします。
[ネットワーク] をクリックして、ネットワークを選択します。
[リージョン] をクリックして、リージョンを選択します。
[表示] をクリックします。
ポリシーベースのルートの名前をクリックします。
[削除] をクリックし、確認のためもう一度 [削除] をクリックします。
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 アドレスが含まれるポリシーベースのルートは作成しないでください。
- 宛先にクラスタ コントロール プレーンのプライベート エンドポイントが含まれるポリシーベースのルートは作成しないでください。
- 一部の一般公開 Google Kubernetes Engine(GKE)クラスタには、Private Service Connect コントロール プレーンのプライベート エンドポイントが含まれています。こうしたクラスタの場合、デフォルトでは、GKE はクラスタのサブネットのプライマリ IPv4 アドレス範囲に Private Service Connect コントロール プレーンのプライベート エンドポイントを作成します。Private Service Connect コントロール プレーンのプライベート エンドポイントに、(同じリージョン内のサブネットの)カスタム サブネット範囲を選択する場合は、クラスタを作成してコントロール プレーン IP 範囲を選択するをご覧ください。
- 限定公開 GKE クラスタを作成する場合は、コントロール プレーンのプライベート エンドポイント(
--master-ipv4-cidr
)の 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 アクセスを使用して Google API とサービスにアクセスする
- 外部 IP アドレスを持つ VM から Google API とサービスにアクセスする
- Google API 用の Private Service Connect エンドポイントを使用する
- Google API 用の Private Service Connect バックエンドを使用する
ベスト プラクティス
前述の方法で 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)