構成分析の状態

接続テストの構成分析では、指定された送信元から宛先へのネットワーク パス内の Google Cloud リソースの構成をチェックしながら、一連のテスト状態を遷移します。このリファレンスでは、テスト状態の解釈方法を説明します。

ライブ データプレーン分析の詳細を含む、接続テストの詳細については、概要をご覧ください。

テスト状態

接続テストの構成分析では、次のテスト状態のデータが以下の順番で提供されます。

  • 初期状態
  • 構成チェック状態
  • 転送状態
  • 移行状態
  • 特別な状態
  • 最終状態
  • 全体的なネットワーク到達性の結果

こうした状態には、すべてのトレースに表示されるものと、特定の Google Cloud リソースの構成をテストするとき、または特定のタスクを行うときにのみ表示されるものがあります。

最終状態と全体的なネットワーク到達性の結果は、最も重要なテスト出力を提供します。

さらに、テスト出力には、1 つ以上の状態に関連付けられている Google Cloud リソースのメタデータを含めることができます。たとえば、仮想マシン(VM)インスタンスの名前と IP アドレスに関する情報などです。

構成分析による到達可能性の評価方法

構成分析では、ネットワーク パス上の Google Cloud リソースの構成を検証し、そのパスを通過するテストパケットをシミュレーションします。たとえば、バックエンドのない Cloud Load Balancing 転送ルールや、存在しないネットワーク ルートなどが、無効なネットワーク構成に該当します。

接続テストでは、構成チェック状態中に、ユーザーが構成したルート、BGP アドバタイズに基づく動的ルート、ポリシーベースのルートなどのネットワーク ルートに関する情報を収集します。続いて、構成分析により、適用範囲と順序に基づいてネットワーク ルートが選択されます。

構成チェック状態の場合、verified は、接続テスト対象の Google Cloud リソースの構成が有効であること、その構成により、シミュレーションされたテストパケットがテスト中のネットワーク パスを介して続行できることを示します。

上り(内向き)および下り(外向き)ファイアウォール ルールの場合、verified はファイアウォール ルールが有効であり、ファイアウォール ルールがシミュレートされたテストパケットの通過を許可していることが構成分析により確認されることを意味します。

接続テストで構成が無効であると判断された場合、パケットの最終状態は Drop です。

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

構成分析は、到達可能性ステータス(結果とも呼ばれます)の概要を提供します。結果は、ReachableUnreachableAmbiguousUndetermined の 4 つの値のいずれかになります。

値の表

次の表は、全体的なネットワーク到達性の結果の各タイプの値を示しています。

全体的なネットワーク到達性の結果 説明
Reachable 次の 2 つのシナリオが考えられます。どちらの場合も、接続テストに構成の問題はありません。したがって、両方のシナリオが Reachable とみなされます。
  • 最初のシナリオでは、送信元から発信されたパケットが送信先に到達すると想定されます。1 つ以上のトレースの最終状態が Deliver になります。
  • 2 番目のシナリオでは、ユーザーが権限を持っている構成に基づいて分析が部分的に完了します。1 つ以上のトレースの最終状態が Forward になります。
Unreachable 送信元から発信されたパケットは、送信先に到達する前にドロップされることが想定されます。すべてのトレースの最終状態が Drop になります。
Ambiguous

この結果は、送信元エンドポイントと送信先エンドポイントがネットワーク内のテスト ロケーションを一意に識別せず、Reachable 状態と Unreachable 状態が混在する複数のトレースが含まれている場合に返されます。

この場合、複数のトレース間の最終状態は、異なる最終状態を返します。Ambiguous の結果は、トレースが 1 つしかないテストには適用されません。

Undetermined

ネットワーク到達性を判別できませんでした。1 つのトレースの最終状態は ForwardAbort になります。複数のトレースの場合、最終状態は Forward または Abort の組み合わせになります。

次のいずれかの理由により、送信元から送信先へのネットワーク到達性を判断できません。

  • 権限エラーのため、分析が中止されたテストにリストされているプロジェクトに対する読み取り権限がユーザーにない
  • 内部エラーのため、分析が中止された

複数のトレース

各構成分析には複数のトレースを含めることができます。これらのトレースの最終状態は異なる場合があります。たとえば、Google Cloud ロードバランサに n バックエンド VM インスタンスが構成されている場合、このロードバランサの VIP へのパケットは n トレースになる可能性があります。これらの n トレースの最終状態は異なる場合があります。

分析によって複数のトレースが生成される可能性があるため、次のことが当てはまります。

  • トレース結果が 1 つしかない場合、全体的なネットワーク到達性の結果は、トレースの最終状態と同じになります。
  • 複数のトレース結果がある場合は、すべてのトレースに含まれる最終状態の分布に基づいて、全体的なネットワーク到達性の結果が計算されます。

結果のメタデータ

トレースの全体的なネットワーク到達性の結果に加えて、すべてのテスト結果には次のメタデータが含まれています。

  • テストの状態が検証された時刻
  • テストの失敗またはキャンセルのエラーの詳細
  • 各トレースの詳細

テストの失敗またはキャンセルのエラーの詳細は、全体的なネットワーク到達性の結果にコードとメッセージとして示されます。たとえば、最終状態が Abort のテストでは、Failed to pull initial config. An internal error occurred. などのエラー メッセージが表示される場合があります。

初期状態

初期状態では、構成分析はネットワーク エンドポイントからの開始をシミュレーションします。

メッセージ 説明
START_FROM_INSTANCE パケットは Compute Engine インスタンスから発信されました。InstanceInfo メタデータは、接続テストによって入力されました。
START_FROM_INTERNET パケットはインターネットから発信されました。EndpointInfo メタデータは、接続テストによって入力されました。
START_FROM_PRIVATE_NETWORK パケットは、内部送信元 IP アドレスを持つ VPC ネットワークまたはオンプレミス ネットワークから発信されました。ソースがユーザーに表示される VPC ネットワークであった場合、接続テストによって NetworkInfo メタデータにネットワークの詳細が入力されました。
START_FROM_CLOUD_FUNCTION パケットが Cloud Run の関数から発信されました。CloudFunctionInfo メタデータは、接続テストによって入力されました。
START_FROM_CLOUD_RUN_REVISION パケットは Cloud Run サービスのリビジョンから発信されました。CloudRunRevisionInfo メタデータは、接続テストによって入力されました。
START_FROM_APP_ENGINE_VERSION パケットは App Engine スタンダード環境のサービスのバージョンから発信されました。AppEngineVersionInfo メタデータは、接続テストによって入力されました。

最終状態

最終状態は、DropAbortForwardDeliver のいずれかです。以下の各セクションの表には、状態ごとのメッセージと説明が含まれています。

ドロップ

次の理由でテスト ターゲットに到達できなかったため、接続テストはシミュレーションされたテストパケットをドロップしました。

メッセージ 説明
UNKNOWN_EXTERNAL_ADDRESS 送信先の外部アドレスを既知のターゲットに解決できませんでした。
FOREIGN_IP_DISALLOWED ip_forward が有効になっている場合、VM インスタンスは外部 IP アドレスを持つパケットのみを送受信できます。つまり、送信先の外部 IP アドレスはなりすましチェックに失敗しました。
FIREWALL_RULE

接続トラッキングにより許可されない場合は、ファイアウォール ルールによりドロップされます。

ブロック ファイアウォール ルールにパケットが一致するため、接続テストでテストパケットが拒否される場合があります。ただし、ファイアウォール ルールでの接続トラッキングにより、実際のデータプレーンではパケットが通過する可能性があります。接続トラッキングにより、既存の接続のパケットは、ファイアウォール ルールに関係なく戻ることができます。

NO_ROUTE ルートがないためドロップされました。
ROUTE_BLACKHOLE 一致するルートのネクストホップが存在しないため、ドロップされました。
ROUTE_WRONG_NETWORK 無効な構成または整合性のない構成を検出するで示すように、パケットが間違った(意図しない)ネットワークに送信されました。
PRIVATE_TRAFFIC_TO_INTERNET 内部の送信先アドレスを持つパケットがインターネット ゲートウェイに送信されました。
PRIVATE_GOOGLE_ACCESS_DISALLOWED 内部 IP アドレスのみを持つ VM インスタンスが Google API または Google サービスにアクセスしようとしましたが、限定公開の Google アクセスが有効になっていませんでした。
NO_EXTERNAL_ADDRESS 内部 IP アドレスのみを持つ VM インスタンスが、ネクストホップがデフォルトのインターネット ゲートウェイであるルートを介して外部ホストにアクセスしようとしました。サブネットで Cloud NAT が有効になっていない場合、または別の種類のネクストホップ(プロキシ VM など)を使用するデフォルト ルートが他にない場合に予期されます。
UNKNOWN_INTERNAL_ADDRESS 送信先の内部アドレスを既知のターゲットに解決できませんでした。
FORWARDING_RULE_MISMATCH 転送ルールのプロトコルとポートがパケット ヘッダーと一致しなかったか、パケットがリージョン ロードバランサと同じリージョンから発信されていないか、同じリージョンに送信されていません。
FORWARDING_RULE_NO_INSTANCES 転送ルールには構成されたバックエンドがありません。
FIREWALL_BLOCKING_LOAD_BALANCER_BACKEND_HEALTH_CHECK

ファイアウォール ルールによって、バックエンドに対するヘルスチェック プローブがブロックされており、ロードバランサからのトラフィックに対してはバックエンドが利用できなくなりました。

Cloud Load Balancing のテスト シーケンスの一環として、構成分析ではヘルスチェックのプローブ パケットを Cloud Load Balancing バックエンドに送信することを許可するように既存のファイアウォール ルールが構成されていることを確認します。この構成チェックの結果は、healthCheckFirewallState になります。詳しくは、ヘルスチェックのファイアウォール ルールをご覧ください。

INSTANCE_NOT_RUNNING 実行状態ではない VM インスタンスとの間でパケットがやり取りされました。
TRAFFIC_TYPE_BLOCKED トラフィックのタイプがブロックされ、ユーザーはこのトラフィックを有効にするファイアウォール ルールを構成できませんでした。詳細については、常にブロックされるトラフィックをご覧ください。
GKE_MASTER_UNAUTHORIZED_ACCESS Google Kubernetes Engine コントロール プレーン エンドポイントへのアクセスが承認されませんでした。詳細については、クラスタ エンドポイントへのアクセスをご覧ください。
DROPPED_INSIDE_GKE_SERVICE Google Kubernetes Engine サービス内でパケットがドロップされました。
CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS Cloud SQL インスタンス エンドポイントへのアクセスが許可されません。詳細については、承認済みネットワークでの認証をご覧ください。
DROPPED_INSIDE_CLOUD_SQL_SERVICE Cloud SQL サービス内でパケットがドロップされました。
GOOGLE_MANAGED_SERVICE_NO_PEERING 送信元ネットワークと Google マネージド サービス ネットワークの間にピアリングがないため、パケットがドロップされました。
CLOUD_SQL_INSTANCE_NO_IP_ADDRESS Cloud SQL インスタンスにプライベート IP アドレスもパブリック IP アドレスもないため、パケットがドロップされました。
PSC_CONNECTION_NOT_ACCEPTED Private Service Connect を使用する公開サービスへの接続が許容されないため、パケットがドロップされました。
CLOUD_FUNCTION_NOT_ACTIVE Cloud Run 関数が有効でないため、パケットがドロップされました。
VPC_CONNECTOR_NOT_SET App Engine スタンダード環境のサービス、Cloud Run の関数、または Cloud Run のリビジョンにサーバーレス VPC アクセス コネクタが構成されていないため、パケットがドロップされました。
VPC_CONNECTOR_NOT_RUNNING サーバーレス VPC アクセス コネクタが実行されていないため、パケットがドロップされました。
CLOUD_RUN_REVISION_NOT_READY Cloud Run のリビジョンの準備ができておらず、トラフィックを処理できないため、パケットがドロップされました。

中止

ネットワーク構成へのアクセス権の欠如など、基本情報の欠如のために構成分析が中止されました。

この状態は通常、次の表に示すように、接続テストにホスト プロジェクトからサービス プロジェクトの構成を取得するための適切な権限がない場合に発生します。

メッセージ 説明
UNKNOWN_NETWORK

不明なネットワークが原因で中止されました。共有 VPC ネットワークで、テストを実施するユーザーに、ホスト プロジェクトのネットワーク構成(ファイアウォール ルールやルートなど)へのアクセス権がないため、分析を続行できません。

接続テストを行う場合は、テストを実施するユーザーが、ホスト プロジェクト内に存在するルートなどのリソースの構成を読み取ることができる必要があります。これは、ネットワーク リソースがホスト プロジェクトに割り当てられているものの、実際のリソースはサービス プロジェクトに存在するために発生します。

UNKNOWN_IP

分析に必要な IP アドレスが不明だったため、分析は中止されました。これは、ユーザー入力が正しくないか、指定された入力パラメータに基づく有効なエンドポイントが構成分析によって特定できなかったことが原因です。

共有 VPC ネットワークで、テストを実施しているユーザーがホスト プロジェクトのネットワーク構成にアクセスできませんでした。このアクセス権は、サービス プロジェクトの IP アドレスに対するテストに必要です。

UNKNOWN_PROJECT 接続テストへの入力からプロジェクト情報を取得できなかったため、分析は中止されました。これは、ユーザーの入力が正しくないか、指定された入力パラメータに基づいて有効なプロジェクトを特定できなかったためです。
PERMISSION_DENIED ユーザーがテストの実施に必要なネットワーク構成のすべてまたは、一部にアクセスする権限を持っていなかったため、分析は中止されました。
NO_SOURCE_LOCATION テスト入力から有効な送信元エンドポイントを取得できなかったため、分析は中止されました。これは、ユーザー入力が正しくないか、指定された入力パラメータに基づいて有効な送信元エンドポイントを特定できなかったためです。
INVALID_ARGUMENT

テスト入力で指定された送信元エンドポイントや送信先エンドポイントが無効だったため、分析は中止されました。このメッセージが表示されたことに関して考えられる原因には次のものがあります。

  • IP アドレスの形式が正しくない
  • VM インスタンスまたはネットワーク URI が存在しない
  • IP アドレスが指定されたネットワーク URI の範囲にない
  • VM インスタンスが、指定されたネットワークのネットワーク インターフェースを所有していない
NO_EXTERNAL_IP トラフィックがパブリック IP アドレスから外部 IP アドレスを持たない VM インスタンスに送信されたため、分析は中止されました。
UNINTENDED_DESTINATION テスト入力で指定された宛先情報に一致するトレースがなかったため、分析は中止されました。
TRACE_TOO_LONG トレースのステップ数が特定の上限を超えたため、分析は中止されました。この問題は、ルーティング ループが原因である可能性があります。
INTERNAL_ERROR 内部サーバーエラーにより中止されました。
SOURCE_ENDPOINT_NOT_FOUND ソース エンドポイントが見つからないため、中止されました。
MISMATCHED_SOURCE_NETWORK ソース ネットワークがソース エンドポイントと一致しないため、中止されました。
DESTINATION_ENDPOINT_NOT_FOUND 宛先エンドポイントが見つからないため、中止されました。
MISMATCHED_DESTINATION_NETWORK 宛先ネットワークが宛先エンドポイントと一致しないため、中止されました。

転送

次の理由で、分析が特定のエンドポイントで停止し、それ以上は実行できませんでした。

  • ユーザーが権限を持っている構成に基づいて分析が部分的に完了している。
  • テストパケットが、不明な構成のネットワークに転送された。
  • 既知の構成に従ってテスト ターゲットがドロップされず、テストパケットが、接続テストが公開設定されていないネットワークに転送されている。
メッセージ 転送先
PEERING_VPC ピア VPC ネットワーク
VPN_GATEWAY Cloud VPN ゲートウェイ
INTERCONNECT Cloud Interconnect 接続
GKE_MASTER GKE コントロール プレーン
IMPORTED_CUSTOM_ROUTE_NEXT_HOP ピアリングした VPC ネットワークからインポートされたカスタムルートのネクストホップ
CLOUD_SQL_INSTANCE Cloud SQL インスタンス

配信

ターゲットに到達し、シミュレートされたテストパケットを配信できました。

最終状態が Deliver の場合、トラフィックがデータプレーンを通過できることが保証されるわけではありません。分析の目的は、トラフィックのドロップを引き起こす可能性がある構成の問題を検証することです。

メッセージ ターゲット
INSTANCE Compute Engine VM インスタンス
INTERNET インターネット
GOOGLE_API Google API
GKE_MASTER GKE コントロール プレーン
CLOUD_SQL_INSTANCE Cloud SQL インスタンス
PSC_GOOGLE_API Private Service Connect を使用するすべての Google API とサービス
PSC_VPC_SC Private Service Connect を使用する VPC Service Controls
PSC_PUBLISHED_SERVICE Private Service Connect を使用する公開サービス

メタデータ

構成分析では、最終状態に関する次のメタデータが表示されます。

メタデータ名 説明
AbortInfo 最終状態 Abort の原因と、この状態の原因となったリソース URI。
DropInfo 最終状態 Drop の原因と、この状態の原因となったリソース URI。
ForwardInfo テストパケットが最終的に転送されたターゲット タイプとターゲット リソース URI(最終状態 Forward)。

その他の状態

テストパケットは、いずれかの最終状態に到達する前に、中間状態(構成チェック状態、転送状態、移行状態、特別な状態)を通過します。

構成チェック状態

構成チェック状態の間に、接続テストはシミュレーションされたネットワーク パス内の Google Cloud リソースの構成を確認し、リソース構成が有効であること、その構成によりシミュレーションされたテストパケットがネットワーク パス経由で続行できることを検証します。

必要に応じて、構成分析はなりすましチェックを行います。

メッセージ 説明
APPLY_INGRESS_FIREWALL_RULE 上り(内向き)ファイアウォール ルールを検証しました。
APPLY_EGRESS_FIREWALL_RULE 下り(外向き)ファイアウォール ルールを検証しました。
APPLY_ROUTE ルートを検証しました。
APPLY_FORWARDING_RULE 転送ルールに一致しました。
SPOOFING_APPROVED パケットは外部 IP アドレスで送受信されていますが、許可されます。詳細については、なりすましチェックをご覧ください。

転送状態

転送状態の間に、接続テストはテストパスの中間 Google Cloud リソース(Cloud VPN ゲートウェイや Google Cloud ロードバランサに到着するパケットなど)に到達するパケットをシミュレーションします。

メッセージ 説明
ARRIVE_AT_INSTANCE Compute Engine VM インスタンスに到着しました。
ARRIVE_AT_INTERNAL_LOAD_BALANCER プライベート IP アドレスを VIP として使用する Google Cloud ロードバランサに到着しました。
ARRIVE_AT_EXTERNAL_LOAD_BALANCER Google Cloud ロードバランサのパブリック IP アドレスに到着しました。
ARRIVE_AT_VPN_GATEWAY Cloud VPN ゲートウェイに到着しました。
ARRIVE_AT_VPN_TUNNEL Cloud VPN トンネルに到着しました。
ARRIVE_AT_VPC_CONNECTOR サーバーレス VPC アクセス コネクタに到着しました。

移行状態

移行状態の間、接続テストはパケットが変更された(Cloud NAT がパケット ヘッダーを変換した、Google Cloud Load Balancing プロキシが終了して VM インスタンスへの受信 TCP が再開始されたなど)シミュレーション構成を検証します。

メッセージ 説明
NAT パケット ヘッダーが変換されました。
PROXY_CONNECTION 元の接続が終了し、新しいプロキシ接続が開始されました。

特別な状態

この場合、テスト閲覧者には 1 つ以上の Google Cloud リソースを表示する権限がありません。詳細については、テスト権限をご覧ください。

メタデータ名 説明
VIEWER_PERMISSION_MISSING テスト結果の閲覧者には、このステップで Google Cloud リソースの構成を表示する権限がありません。

リソース メタデータ

接続テストは、確認する Google Cloud リソース構成に関する次のメタデータを示します。

メタデータ名 説明
EndpointInfo テストに使用されるエンドポイント。接続テストでは、送信元エンドポイントと送信先エンドポイントから EndpointInfo を取得し、データプレーンのモデルを使用してこの情報を検証します。
FirewallInfo ファイアウォール ルールに関連付けられたメタデータ。
ForwardingRuleInfo VPC 転送ルールに関連付けられたメタデータ。
InstanceInfo Compute Engine VM インスタンスに関連付けられたメタデータ。
LoadBalancerInfo Google Cloud ロードバランサに関連付けられたメタデータ。
NetworkInfo VPC ネットワークに関連付けられたメタデータ。
RouteInfo VPC ネットワーク ルートに関連付けられたメタデータ。
AppEngineVersionInfo App Engine スタンダード環境のサービスのバージョンに関連付けられたメタデータ。
CloudRunRevisionInfo Cloud Run のリビジョンに関連付けられたメタデータ。
CloudFunctionInfo Cloud Run の関数に関連付けられたメタデータ。
VpcConnectorInfo サーバーレス VPC アクセス コネクタに関連付けられたメタデータ。

次のステップ