接続テストの概要

接続テストは、ネットワーク内のエンドポイント間の接続を確認できる診断ツールです。構成を分析し、場合によってはランタイム検証を行います。

ネットワーク構成を分析するため、接続テストでは、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)を使用できます。

サポートされていない 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 ネットワーク内の構成は分析されません。

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

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

  • 外部 HTTP(S) ロードバランサ IP アドレスへの接続をトレースするとき、Google Cloud Armor ポリシーは考慮(使用)されません。
  • GKE ネットワーク ポリシー。接続テストには、GKE クラスタ内の IP アドレスへの接続をトレースする際のネットワーク ポリシーは組み込まれていません。
  • Cloud Storage バケットを使用する外部 HTTP(S) ロードバランサはサポートされていません。
  • パブリック IP アドレスを使用する Cloud SQL インスタンスはサポートされていません。

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

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

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

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

ダイナミック検証は構成分析に依存しません。ダイナミック検証は接続状態を独自に評価します。

構成分析とダイナミック検証の結果に明らかな違いがある場合は、トラブルシューティングをご覧ください。

サポートされている構成

ダイナミック検証は、次のネットワーク構成をサポートしています。

トラフィック フロー

  • VM インスタンスから VM インスタンス
  • IP プロトコル: TCP、UDP

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 回限りの検証を行います。接続とパケットロスを継続的にモニタリングするには、パフォーマンス ダッシュボードを使用します。

ダイナミック検証によって複数のトレースがテストされない

ルートが確定的でない場合、ダイナミック検証はサポートされません。

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

ネットワーク到達性とは、Google Cloud リソースに到達できること、または Google Cloud リソース間のパスが存在するかどうかを判断することです。この用語は、コンピュータ ネットワークに応用されるグラフ理論からきています。ネットワーク到達性のグラフ全体には、すべてのネットワーク エンドポイントと、各ネットワーク エンドポイント間のネットワーク到達性が表示されます。

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

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

接続テストの仕組み

接続テストには、構成分析と動的検証の 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 ネットワーク構成のリソースの検証に使用されていないためです。したがって、テストを実施するときに送信元ポートを提供する必要はありません。

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

  • ネットワーク プロトコル
  • 次のいずれかから構成されるソース エンドポイント。
  • 以下のいずれかとポート番号で構成される宛先エンドポイント:

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

サポートされているすべての Google Cloud リソースに対し、次の送信先プロトコルがサポートされています。

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

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 ドキュメントのサービス境界の詳細と構成のページをご覧ください。

次のステップ