接続テストの概要

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

接続テストは、ネットワーク エンドポイント間の接続を確認できる診断ツールです。構成を分析し、場合によってはエンドポイント間でライブ データプレーン分析を行います。エンドポイントは、VM、Google Kubernetes Engine(GKE)クラスタ、ロードバランサの転送ルール、インターネット上の IP アドレスなどのネットワーク トラフィックの送信元または宛先です。

ネットワーク構成を分析するため、接続テストでは、Virtual Private Cloud(VPC)ネットワーク、Cloud VPN トンネル、VLAN アタッチメントを通過するパケットの想定転送パスをシミュレートします。さらに、VPC ネットワーク内のリソースへの想定されるインバウンド転送パスをシミュレートすることもできます。

一部の接続シナリオでは、接続テストでライブ データプレーン分析も行います。この機能は、接続性を検証するためにデータプレーン経由でパケットを送信し、レイテンシとパケットロスのベースライン診断を行います。機能に対してルートがサポートされている場合、実行する各テストにはライブ データプレーン分析の結果が含まれます。

接続テストで使われる API は、Network Management API です。詳細については、API ドキュメントをご覧ください。

接続テストを使用するメリット

接続テストは、次のネットワーク接続に関する問題のトラブルシューティングに有用です。

  • 予期しない構成の矛盾
  • ネットワーク構成の変更または移行に起因する構成
  • さまざまなネットワーク サービスや機能の構成エラー

Google マネージド サービスの接続テストを行うと、VPC ネットワークの問題や、サービス リソースに使用されている Google 所有の VPC ネットワークの問題を特定できます。

接続テストが構成を分析する仕組み

ネットワーク構成を分析する場合、接続テストは抽象ステートマシンを使用して、VPC ネットワークがパケットを処理する方法をモデル化します。Google Cloud は、複数の論理ステップでパケットを処理します。

構成分析は、さまざまな VPC ネットワーク サービスと機能をサポートするため、テストパケットが通過する可能性のある VPC ネットワーク構成のパスは多数あります。

次の図は、構成分析によって 2 つの Compute Engine 仮想マシン(VM)インスタンス(左側と右側)間でトレース トラフィックをシミュレーションするモデルを示しています。

Google Cloud ネットワークとリソース構成により、このトラフィックは、送信先 VM インスタンスに到達する前に、Cloud VPN トンネル、Google Cloud ロードバランサ、ピアリングした VPC ネットワークを通過する場合があります。

ネットワーク抽象ステートマシン
ネットワーク抽象ステートマシン

パケットが配信またはドロップされるまでの離散状態間の有限のステップが有限ステートマシンとしてモデル化されています。この有限ステートマシンは、どの時点においても多数の有限状態のうちの 1 つだけを取ることができ、複数の後続状態を持つことができます。

たとえば、ルートの優先順位に従うと複数のルートが一致する場合、データプレーンの未指定のハッシュ関数に基づいて、複数のルートのうちの 1 つを選択できます。

ポリシーベースのルートが構成されている場合、接続テストは、ネクストホップ(内部ロードバランサ)にパケットをルーティングします。

前のケースでは、接続テストのトレースにより、可能なルートすべてが返されますが、ルートを返すために Google Cloud が使用した方法を特定できません。これは、その方法が Google Cloud の内部にあり、変更される可能性があるためです。

Google マネージド サービス

Cloud SQL や Google Kubernetes Engine(GKE)などの Google マネージド サービスでは、Google が所有および管理するプロジェクトや VPC ネットワークのお客様にリソースが割り当てられます。ユーザーには、これらのリソースにアクセスする権限がありません。

接続テストの構成分析では、引き続きテストを実行し、Google マネージド サービスの全体的な到達可能性の結果を提供しますが、Google が所有するプロジェクト内のテスト対象リソースの詳細は表示されません。

次の図は、構成分析によって、お客様の VPC ネットワーク内の VM インスタンスから Google 所有の VPC ネットワーク内の Cloud SQL インスタンスへのトレース トラフィックをシミュレートするモデルを示しています。この例では、ネットワークが VPC ネットワーク ピアリングで接続されています。

2 つの VM 間で行う標準的なテストと同様に、論理的な手順には関連する下り(外向き)ファイアウォールの確認とルートの照合が含まれています。テストを行うと、接続テストの構成分析により、手順の詳細が提供されます。ただし、Google 所有の VPC ネットワークの構成を分析する最後の論理ステップでは、全体的な到達範囲の結果のみが提供されます。Google 所有プロジェクトのリソースに対する表示権限がないため、これらのリソースの詳細情報は提供されません。

詳細については、Google マネージド サービスとの接続性をテストするのテスト例をご覧ください。

Google マネージド サービスのネットワーク抽象ステートマシン。
Google マネージド サービスのネットワーク抽象ステートマシン

サポートされている構成

接続テストの構成分析では、次のセクションで説明するネットワーク構成のテストがサポートされています。

トラフィック フロー

  • VM インスタンスとインターネット間
  • VM インスタンスから VM インスタンス
  • Google Cloud とオンプレミス ネットワーク間
  • Network Connectivity Center 経由で接続された 2 つのオンプレミス ネットワーク間

VPC ネットワーキング機能

次の機能を使用するリソース間の接続をテストできます。

Google Cloud ハイブリッド ネットワーキング ソリューション

次のハイブリッド ネットワーキング ソリューションがサポートされています。

Network Connectivity Center

Network Connectivity Center がサポートされています。

Cloud NAT

Cloud NAT がサポートされています。

Cloud Load Balancing

  • Google Cloud ロードバランサ(外部 HTTP(S) ロードバランサ、ネットワーク ロードバランサ、内部 HTTP(S) ロードバランサ、内部 TCP / UDP ロードバランサ、外部 TCP プロキシ ロードバランサ、外部 SSL プロキシ ロードバランサ)への接続がサポートされています。
  • ロードバランサの IP アドレスへの接続がサポートされています。
  • Cloud Load Balancing ヘルスチェックとバックエンドの接続がサポートされています。バックエンドには、インスタンス グループまたはネットワーク エンドポイント グループ(NEG)を使用できます。
  • 内部 TCP / UDP ロードバランサは、ネクストホップとして使用できます

サポートされていない Cloud Load Balancing の機能については、サポートされていない構成のセクションをご覧ください。

Google Kubernetes Engine(GKE)

  • GKE ノードと GKE コントロール プレーン間の接続がサポートされています。
    • 接続テストの構成分析で GKE コントロール プレーンのプライベート IP アドレスをテストする場合、パケットがコントロール プレーンに配信可能かどうかが判定されます。この場合、Google 所有の VPC ネットワーク内の構成も分析されます。
    • 接続テストの構成分析で GKE コントロール プレーンのパブリック IP アドレスをテストする場合は、コントロール プレーンが動作している Google 所有の VPC ネットワークにパケットを送信可能かどうかが判定されます。この場合、Google 所有の VPC ネットワーク内の構成は分析されません。
  • Cloud Load Balancing を介した GKE サービスへの接続がサポートされています。
  • VPC ネイティブ クラスタの GKE Pod への接続がサポートされています。

サポートされていない GKE の機能については、サポートされていない構成のセクションをご覧ください。

その他の Google Cloud プロダクトとサービス

次に挙げる Google Cloud プロダクトやサービスもサポートされています。

  • Cloud SQL インスタンスがサポートされています。
    • Cloud SQL インスタンスのプライベート IP アドレスをテストするときに、構成分析はパケットをインスタンスに送信できるかどうかを確認します。この場合、Google 所有の VPC ネットワーク内の構成も分析されます。
    • Cloud SQL インスタンスのパブリック IP アドレスをテストするときに、構成分析は、インスタンスが実行される Google 所有の VPC にパケットを送信できるかどうかを確認します。この場合、Google 所有の VPC ネットワーク内の構成は分析されません。
  • Cloud Functions(第 1 世代)がサポートされています。
  • Cloud Run のリビジョンがサポートされています。
  • App Engine スタンダード環境がサポートされています。

サポートされていない構成

接続テストの構成分析では、次のネットワーク構成はサポートされていません。

  • 外部 HTTP(S) ロードバランサ IP アドレスへの接続をトレースするとき、Google Cloud Armor ポリシーは考慮(使用)されません。
  • GKE ネットワーク ポリシー。接続テストには、GKE クラスタ内の IP アドレスへの接続をトレースする際のネットワーク ポリシーは組み込まれていません。
  • Cloud Storage バケットを使用する外部 HTTP(S) ロードバランサはサポートされていません。
  • Cloud Functions(第 2 世代)はサポートされていません。ただし、基盤となる Cloud Run のリビジョンの接続テストを作成すれば、Cloud Functions(第 2 世代)をテストできます。Cloud Run のリビジョンは、Cloud Functions がデプロイされるたびに作成されます。
  • App Engine フレキシブル環境はサポートされません。
  • Cloud Run ジョブはサポートされていません。詳細については、サービスとジョブ: コードを実行する 2 つの方法をご覧ください。
  • ファイアウォールの Resource Manager タグはサポートされていません。接続テストでは、VM インスタンスに適用されているセキュアタグは分析されません。
  • リージョン ネットワーク ファイアウォール ポリシーはサポートされていません。

接続テストによるライブ データプレーンの分析方法

ライブ データプレーン分析機能は、送信元のエンドポイントから宛先に複数のトレース パケットを送信して、接続をテストします。ライブ データプレーン分析の結果には、送信されたプローブの数、宛先に正常に到達したプローブの数、ネットワーク到達性のステータスが表示されます。次の表に示すように、このステータスは正常にデプロイされたプローブの数によって決まります。

ステータス 宛先に到達したプローブの数
到達可能 95% 以上
到達不能 なし
一部到達可能 0~95%

ダイナミック検証では、正常に配信されたパケットの数だけでなく、中央値と 95 パーセンタイルの一方向のレイテンシ情報も表示されます。

ライブ データプレーン分析は構成分析に依存しません。ライブ データプレーン分析は、接続状態について独立した評価を行います。

構成分析とライブ データプレーン分析の結果に明らかな違いがある場合は、接続テストのトラブルシューティングをご覧ください。

サポートされている構成

ライブ データプレーン分析は、次のネットワーク構成をサポートしています。

トラフィック フロー

VPC ネットワーキング機能

次の機能を使用するリソース間の接続を動的に検証できます。

サポートされていない構成

サポート対象として明示的にリストされていない構成はすべてサポートされません。また、下り(外向き)ファイアウォール ルールによって接続がブロックされている構成もサポートされません。

特定のテストでは、ライブ データプレーン分析機能が実行されない場合に、最終パケットの転送結果のフィールドに N/A または - が表示されます。

考慮事項

接続テストを使用するかどうかを決定するときは、次の考慮事項を評価してください。

接続テストで実行される構成分析は、Google Cloud リソースの構成情報のみに基づくものであり、VPC ネットワークのデータプレーンの実際の状態またはステータスを表しているとは限りません。

接続テストは、Cloud VPN トンネルの状態や Cloud Router の動的ルートなどの動的構成情報を取得しますが、Google 内部の本番環境インフラストラクチャとデータプレーン コンポーネントのヘルス状態へのアクセスや、それらの管理は行いません。

接続テストのステータスが Packet could be delivered の場合でも、トラフィックがデータプレーンを通過できることは保証されません。テストの目的は、トラフィックのドロップを引き起こす可能性がある構成の問題を検証することです。

サポートされているルートの場合、ライブデータ プレーンの分析結果は、送信パケットが宛先に到着するかどうかをテストすることで、構成分析の結果を補完します。

接続テストに Google Cloud の外部のネットワークに関する情報がない

外部ネットワークは、次のように定義されます。

  • ハードウェア デバイスとソフトウェア アプリケーションを操作するデータセンターや他の施設にあるオンプレミス ネットワーク
  • リソースを実行するほかのクラウド プロバイダ
  • VPC ネットワークにトラフィックを送信するインターネット上のホスト

接続テストでファイアウォールの接続トラッキングが行われない

VPC ファイアウォールの接続トラッキングでは、新規接続および確立された接続に関する情報を格納し、その情報に基づいて後続のトラフィックを許可または制限できるようにします。

接続テストの構成分析は、ファイアウォール接続のトラッキングはサポートしていません。ファイアウォール接続テーブルが VM インスタンスのデータプレーンに配置され、アクセスできないためです。ただし、構成分析は、アウトバウンド接続を開始する限り、通常は上り(内向き)ファイアウォール ルールによって拒否されるリターン接続を許可することで、接続トラッキングをシミュレーションできます。

ライブ データプレーンの分析では、ファイアウォールの接続トラッキングのテストはサポートされていません。

接続テストで、転送動作を変更するように構成された VM インスタンスをテストできない

接続テストは、ルーター、ファイアウォール、NAT ゲートウェイ、VPN などとしてデータプレーンで動作するように構成されている VM インスタンスをテストできません。このタイプの構成では、VM インスタンスで実行されている環境の評価が困難になります。また、ライブ データプレーン分析は、このテストシナリオをサポートしていません。

接続テストの結果を得られる時間は状況による

接続テストの結果の取得には、30 秒から最大 10 分かかります。テストにかかる時間は、VPC ネットワークの構成のサイズと使用する Google Cloud リソースの数に基づきます。

次の表は、クエリのサンプル構成に対し、テストを行うすべてのユーザーが期待できるレスポンス時間を示しています。この構成には、VM インスタンス、Cloud VPN トンネル、Google Cloud ロードバランサが含まれています。

クエリあたりのレスポンス時間
プロジェクトの規模 Google Cloud リソースの数 レスポンスのレイテンシ
小規模プロジェクト 50 未満 すべてのユーザーからのクエリの 95% で 60 秒
中規模プロジェクト 50 以上、5,000 未満 すべてのユーザーからのクエリの 95% で 120 秒
大規模プロジェクト 5,000 以上 すべてのユーザーからのクエリの 95% で 600 秒

ライブ データプレーン分析は継続的なモニタリングを目的としたものではない

ライブ データプレーン分析は、診断のためにネットワーク接続の 1 回限りの検証を行います。接続とパケットロスを継続的にモニタリングするには、パフォーマンス ダッシュボードを使用します。

ライブ データプレーン分析で複数のトレースがテストされない

ルートが決定論的でない場合、ライブ データプレーン分析はサポートされません。

ネットワーク到達性について

ファイアウォールやルートなどのネットワーク構成でトラフィックが相互に送受信されている場合、リソースは別のエンドポイントから到達可能です。たとえば、ネットワーク構成で VM1 が VM2 にパケットを送信できるようにする必要がある場合、VM2 は VM1 から到達可能であると言えます。

接続テストは、特定の送信元から特定の宛先へのネットワーク到達性を測定します。VM1 が VM2 に接続できるということは、必ずしも VM3 が VM2 に到達できるというわけではありません。

接続テストは単一方向のネットワーク到達性を測定します。VM1 が VM2 への接続が確立できても、VM2 が VM1 との接続を確立できるわけではありません。ファイアウォール ルールで 1 方向のトラフィックが許可され、逆方向は許可されない場合があります。

接続テストは、特定のプロトコルと宛先ポートのネットワーク到達性を測定します。VM1 が tcp:443 で VM2 に到達できても、tcp:80 で到達できるわけではありません。

接続テストでは、送信元から送信先へのパケット配信に影響する可能性がある Google Cloud VPC ネットワークの構成のみをテストします。宛先で有効なサーバーが実行されているかどうか、オペレーティング システムのファイアウォール ルールによってトラフィックがブロックされるかどうか、セキュリティ ソフトウェアがウイルス ペイロードを含むパケットをブロックするかどうかは確認されません。

ネットワーク到達性のコンセプトはグラフ理論からきています。概念的には、ネットワーク到達性グラフ全体には、すべてのエンドポイントがノードとして含まれ、ディレクショナル エッジは送信元ノードから宛先ノードへのネットワーク到達性を示します。

ネットワーク到達性分析とは、ネットワークの到達性を判断するために実施できる一連の分析を表す、より一般的な用語です。ネットワーク到達性分析のユースケースの 1 つが接続テストです。この場合の接続性とは、ネットワーク接続の状態を指します。

ネットワーク転送パスに沿ったすべてのステップで、ネットワーク到達性分析がテストされ、基礎となるネットワーク構成の結果が提供されます。たとえば、接続テストでは、シミュレーションされたテストパケットに適用される Google Cloud ファイアウォール ルールとルートが分析されます。

接続テストの仕組み

接続テストには、構成分析とライブ データプレーン分析という 2 つの主なコンポーネントがあります。このセクションでは、これら 2 種類の分析の仕組みについて説明します。

構成分析の仕組み

このセクションでは、接続テストとそのコンポーネントの仕組みについて説明します。

接続テストではネットワーク到達性の分析を行い、テストパス内の Google Cloud リソースと理想的な構成モデルを比較して評価します。さらに、ライブ データプレーン分析機能によってパケットが送信され、データプレーンの状態が検証され、サポートされている構成のベースライン情報が提供されます。ダイナミック検証の仕組みの詳細については、ライブ データプレーン分析の仕組みをご覧ください。

ネットワーク管理者は、分析結果に影響を与える可能性がある多くの構成を制御できます。ただし、いくつかの例外が適用されます。たとえば、Cloud SQL インスタンスなどの Google マネージド サービスをホストする VPC ネットワークは制御できません。さらに、権限の制限により、ネットワークに影響する階層型ファイアウォール ポリシールールを制御できない場合があります。

接続テストを実施するときは、特定のパラメータ セットを入力し、フォーマットされた結果をネットワーク トレースかクエリの形式で受け取ります。接続テストでは、ネットワーク内に可能なパスが複数ある場合(送信先エンドポイントが複数のバックエンドを持つ Google Cloud ロードバランサの場合など)、複数のトレースが生成されます。

  • 一致とは、シミュレーションされたパケットがテストパスを続行できる Google Cloud 構成が接続テストで見つかることを意味します。
  • 一致なしとは、接続テストで一致が見つからないことを意味します。この場合、構成は存在しません。
  • 拒否された一致とは、シミュレーションされたテストパケットがドロップされる Google Cloud 構成が接続テストで見つかることを意味します。

接続テストのコンポーネント

接続テストは、構成分析に必要な他のすべてのサブコンポーネントを含む最上位のコンポーネントです。コンポーネントは次のとおりです。

  • 送信元エンドポイントと送信先エンドポイント
  • テストとそのトレースのネットワーク到達性の詳細(構成分析で特定された全体的なネットワーク到達性の結果を含む)
  • それぞれに 1 つ以上のステップがある 1 つ以上のトレース
  • 各ステップの状態

各テストには一意の名前が付き、各ステップには状態とそれに関連付けられた Info メタデータがあります。たとえば、ステップがルートをチェックする場合、RouteInfo メタデータがそのステップに含まれます。

次の図は、ある Compute Engine VM インスタンスから別のインスタンスへのテストを示しています。テスト コンポーネントについては、以降のセクションで説明します。

VM 間トレース用のステートマシン。
VM 間トレース用のステートマシン

送信元エンドポイントと送信先エンドポイント

接続テストの構成分析では、送信元ポートのない 5 タプルパケット ヘッダーがサポートされています。これは、送信元ポートが Google Cloud ネットワーク構成のリソースの検証に使用されていないためです。したがって、テストを実施するときに送信元ポートを提供する必要はありません。

パケット ヘッダーには、次のコンポーネントが含まれます。

  • ネットワーク プロトコル
  • 次のいずれかから構成されるソース エンドポイント。
    • 送信元 IP アドレス
    • VM インスタンス名
    • GKE コントロール プレーンのクラスタ名
    • Cloud SQL インスタンス名
  • 以下のいずれかとポート番号で構成される宛先エンドポイント:
    • 宛先 IP アドレス
    • VM インスタンス名
    • GKE コントロール プレーンのクラスタ名
    • Cloud SQL インスタンス名

Google Cloud、または Google Cloud 以外のネットワーク タイプを指定できます。また、ネットワーク タイプと IP アドレス(または VM インスタンス名)の組み合わせを指定して、ネットワークのロケーションを一意に識別することもできます。

VM、IP アドレス、Google マネージド サービスでは、次のネットワーク プロトコルがサポートされています。

  • TCP
  • UDP
  • ICMP
  • ESP
  • AH
  • SCTP
  • IPIP

サーバーレス VPC アクセス コネクタでは、次のネットワーク プロトコルがサポートされています。

  • TCP
  • UDP

TCP プロトコルまたは UDP プロトコルの送信先ポートがサポートされています。ポートを指定しない場合、デフォルト設定はポート 80 です。

トレース、ステップ、状態

構成分析には 1 つ以上のトレースが含まれています。各トレースは、テストでシミュレーションされた、1 つの一意のパケット転送パスを表します。

  • 各トレースには、順序付けされた複数のステップが含まれています。
  • 各ステップには、接続テストがそのステップの有無をチェックする Google Cloud 構成に関連する状態が含まれています。
  • 状態は、非最終状態と最終状態に分類されます。
非最終状態

非最終状態は、テストパスの各 Google Cloud リソース(VM インスタンス、エンドポイント、ファイアウォール ルール、ルート、Google Cloud ロードバランサなど)に対する構成チェックを表します。

非最終状態には、次の 4 つの状態があります。

  • 初期
  • 構成チェック
  • 転送
  • 遷移

詳細については、構成分析の状態をご覧ください。

最終状態

各トレースは、トレースの最後のステップである最終状態で終了する必要があります。

最終状態には、次の 4 つの状態があります。

  • Drop
  • Abort
  • Forward
  • Deliver

各状態には、それに関連付けられた理由があります。詳しくは、最終状態の詳細をご覧ください。

全体的なネットワーク到達性の結果

構成分析は、ReachableUnreachableAmbiguousUndetermined の 4 つの値のいずれかになる、全体的なネットワーク到達性の結果も提供します。

全体的なネットワーク到達性の結果を知ることは、モニタリングまたは自動化の設定に役立ちます。

詳細については、全体的なネットワーク到達性の結果をご覧ください。

なりすましチェック

接続テストは、VM インスタンスとの間のシミュレートされたパケットが、そのインスタンスが所有していない IP アドレスを使用している場合に、なりすましチェックを実施します。VM が所有する IP アドレスには、すべての VM 内部 IP アドレスとセカンダリ IP アドレスが含まれます。

アドレスが、外部トラフィックから発信されているように見せかけたアドレス(外部アドレスとも呼ばれる)である場合、その IP アドレスはなりすましチェックに合格しません。

メタデータ

各状態には、Info フィールドの形式でメタデータを関連付けることができます。たとえば、InstanceInfo には、名前や IP アドレスなど、VM インスタンスの詳細が含まれています。

構成分析では、テスト自体のメタデータとテストの各ステップのメタデータが提供されます。

ライブ データプレーン分析の仕組み

ライブ データプレーン分析のプローブ メカニズムにはゲスト OS は含まれず、ユーザーには完全に透過的です。プローブは、送信元エンドポイントの代わりにネットワークに挿入され、宛先エンドポイントに配信される直前に破棄されます。プローブは、通常のネットワーク課金、テレメトリ指標、フローログから除外されます。

VPC Service Controls のサポート(プレビュー版)

VPC Service Controls は接続テストのセキュリティを強化して、データの引き出しのリスクを低減します。VPC Service Controls の活用により、境界の外部から発生するリクエストからリソースとサービスを保護するサービス境界にプロジェクトを追加できます。

サービス境界の詳細については、VPC Service Controls ドキュメントのサービス境界の詳細と構成のページをご覧ください。

次のステップ