なぜ一方の VPN リソースは動き、もう一方はタイムアウトするのか
動いているプライベートサービスは約束ではなく対照だ。アドレス、ポート、応答の段階、アイデンティティを比較し、失敗する側に何が欠けているかを見つける。
一方のプライベートサービスはトンネル経由で読み込まれ、次のサービスはタイムアウトするので、クライアントプロファイル全体を作り直したくなる。動いているサービスは、やり直す理由としてより、対照として使うほうが役に立つ。それは一つの宛先、一つのポート、一つの認可経路が満たされたことを示すだけで、それ以上ではない。
同じゲートウェイ上の二つのサービスは、異なるアドレスファミリー、異なるサブネット、異なるポリシーで到達できる。
動くフローと失敗するフローを分ける
各サービスを VPN の症状ではなく、それぞれ独立したフローとして扱う。例示的なクライアントは portal.corp.example を 172.20.4.15:443 で開けても、二つの宛先に二つのルールセットがあるため 172.20.9.40:5432 のデータベースには到達できないことがある。あるホストで TCP 443 を許可するルールは同じホストの TCP 5432 については何も語らないのだから、何かを変える前に、ポートとプロトコルも含めて両方の行を書き留める必要がある。
調べるべきは失敗している行だ。動いている行は基準がどこにあるかを教えるだけで、変更のたびに比較点になる。
名前より先にアドレスを比べる
完全修飾名をアプリケーションが実際に使うポリシーで解決し、選ばれたアドレスファミリーを記録する。ある名前は IPv6 アドレスを返し、別の名前は IPv4 を返すことがあり、古いキャッシュの応答はプライベートサービスと無関係なパブリックアドレスへ要求を送ることがある。
ip route get 172.20.4.15
ip route get 172.20.9.40
ip -6 route get 2001:db8:60::20
この照会が答えるのは、現在のテーブルとポリシールールのもとでこのホストがその宛先にどの経路を選ぶかという狭い問いだ。172.20.4.0/24 の経路は 172.20.9.0/24 を覆わず、二つ目のネットワークマネージャやより具体的なローカル経路がトンネルを静かに上書きすることがある。名前空間の内側で、あるいはシェルと異なる場合はアプリケーションが使うマークを付けて照会を繰り返す。経路表が一つのインターフェースを示してもポリシールーティングは別のインターフェースからフローを出すことがあるので、パケットが出ていくインターフェースも記録する。
一致する経路は必要条件であって許可ではない。パケットに行き先があることを示すだけで、ファイアウォール、認可サービス、あるいはホスト自身が受け入れるかは何も語らない。
プロトコルと応答段階がどこで止まるかを示す
ping の応答はデータベースのポートが開いていることを証明しないし、HTTPS ページの成功は同じマシンのファイル共有を認可しない。すべての失敗を一つの分類に均すのではなく、実際に何が返ったかを記録する。タイムアウト、リセット、TLS のアイデンティティエラー、アプリケーション層の拒否は、それぞれ別の層を指している。
区別が重要になるのは、修正の方向が異なるからだ。沈黙は通常、経路上の経路、ファイアウォール、変換の問題を意味する。即時のリセットは、何かがホストに届いてポートを拒否したことを示唆する。証明書エラーは接続が届いて名前が一致しなかったという意味で、到達性ではなく設定の問題だ。アプリケーションの拒否は、ネットワークが役割を果たし、その後にアイデンティティが拒否されたことを意味する。
リソースがゲートウェイ経由で公開されている場合、宛先が見る送信元アドレスと、クライアントが使っていると考える送信元を比較する。ゲートウェイ自身が起点の要求は成功しても、二つは異なるアドレスから届き異なるルールに当たるため、同じ要求がクライアントからだと失敗することがある。
変数を一つだけ変えて両方の要求を再実行する
アイデンティティは人が最後に見る場所であり、正しい拒否が最初に現れる場所だ。VPN のログイン、ディレクトリのグループ、アプリケーションのアカウントは三つの別々のアイデンティティで、ずれることがある。ポータルへのアクセスはその背後のデータベースへのアクセスを決して意味せず、あるディレクトリの名前が別のディレクトリに行を作ることはない。サービスが利用者の想定範囲の外にあるなら、その拒否はシステムが働いている証拠だ。
広い経路を足したりグループを試験的に開いたりする代わりに、リソースの所有者に想定された権利を確認してもらう。主張を通すためにネットワークを広げることは、一時的な診断を恒久的な露出に変える道であり、最初に置いた対照を壊す。反復ごとに示された不一致が一つあれば足り、それは欠けた経路、誤ったアドレスファミリー、遮断されたポート、欠けたグループ所属のいずれかだ。
変更のたびに両方の要求を繰り返し、出力を並べて置く。調査は、失敗していたサービスが自分のポリシーのもとで動き、動いているサービスとまだ期待している拒否が以前とまったく同じに振る舞うときに終わる。