VPN の制御チャネルとデータチャネル:正しい層を確認する
トンネルは交渉できても、何も運ばないことがあります。どちらのチャネルが失敗したのかを確認します。制御の確立、データの保護、あるいはその両方より先の経路と DNS です。
クライアントは接続済みと言い、サーバーはピアを見ているのに、アプリケーションはどこにも到達できません。その時点で役に立つ問いは、どの暗号を変えるかではなく、どちらのチャネルが失敗したかです。OpenVPN は二つの機能を明示的に名付けます:セッションを交渉して管理する制御チャネルと、保護されたトラフィックを運ぶデータチャネルです。IKEv2 は IKE アソシエーションと CHILD アソシエーションによって同様の分割を表現します。制御経路の障害にデータ経路の修正を当てると変更の機会を無駄にするため、以下の確認は順番に行ってください。
デバッグする前にチャネルを名付ける
制御側はセキュリティ素材を交渉し、ピアを認証し、接続を管理します。データ側は、必要な状態ができた後に選択されたトラフィックを運びます。
両者は違う形で失敗します。制御の失敗では、使えるセッションがまったく残らないか、ループで再交渉するセッションが残ります。データの失敗では、セッションは健全に見えるのに、パケットが破棄され、誤って経路指定され、あるいは相手側が受け入れないパラメータで保護されます。読んでいるログ行がどちらの状況かを示すので、エラー本文より先にラベルを読んでください。
制御の交換を確認する
ハンドシェイクが完了し、両側がトランスポート、TLS バージョン、認証方式で一致していることを確かめます。OpenVPN のログは制御チャネルとデータチャネルの行を別々に出力し、証明書、TLS バージョン、tls-crypt の不一致は制御の行に現れます。
制御の交換が失敗する場合は、到達可能なポート、証明書チェーンとその有効期限、システム時計、クライアントとサーバーの暗号の重なり、そして tls-auth や tls-crypt の鍵を確認します。大きな証明書チェーンは、認証が完了する前に経路 MTU で失敗することもあり、これは暗号の誤りではなくタイムアウトのように見えます。
制御の障害は制御の設定で直します。データ暗号を上げたりデータ認証の方針を緩めたりしても、証明書の交換を越えられなかったハンドシェイクは完了しません。
データチャネルを別に確認する
セッションが上がったら、交渉されたデータ暗号とモード、鍵の導出、鍵更新の挙動を確かめます。OpenVPN では、データチャネルの行が実際に初期化された暗号と鍵長を示し、それはプロファイルの最初の暗号と異なることがあります。
次に、セッションが何を導入したかを確認します。PUSH_REPLY は経路、DNS サーバー、redirect-gateway 指示を追加でき、そのどれもがアプリケーションの使えない場所へトラフィックを送る可能性があります。IKEv2 では、CHILD アソシエーションのセレクタが実際のフローのアドレスと一致するかが同等の問いです。
tls-auth と tls-crypt は制御チャネルに属します。これらはハンドシェイクを認証または暗号化するもので、アプリケーションのデータ暗号を選ぶものではありません。データ経路の変化を期待してどちらかを追加しても、変わるのはハンドシェイクだけです。
名前を IKEv2 と OpenVPN に対応づける
IKEv2 には IKE セキュリティアソシエーションと一つ以上の CHILD アソシエーションがあります。IKE アソシエーションが制御の交換を運び、CHILD アソシエーションが保護されたトラフィックとそのセレクタを運びます。両者は別々の日程で交渉され鍵が更新されるため、一方が健全でも他方はそうでないことがあります。
ESP の内部には TLS 風の制御チャネルはありません。制御プロトコルは IKE で、ESP は保護されたペイロードです。ESP をデータチャネルと呼ぶのは緩い略称で、キャプチャ上では IKE メッセージと ESP パケットが別のプロトコルとして見えるため、パケットキャプチャを読むと混乱します。
対応関係はメモに明示しておきます:OpenVPN の制御チャネルと IKE SA が管理側、OpenVPN のデータチャネルと CHILD SA がトラフィック側であり、分割が似て見えても実装どうしは置き換えられません。
間違った設定を変えるのをやめる
経路は制御の交換、データの保護、転送、そして名前解決の順に一方向にたどります。失敗する最初の段階で止まり、その段階だけを直します。ゲートウェイへの ping は通るのにアプリケーションのトラフィックがない接続済みセッションは、転送かセレクタの問題であり、ハンドシェイクの問題ではありません。
証拠は段階ごとに分けてチケットに書きます:制御のログ行、交渉されたデータのパラメータ、導入された経路、実際のリクエスト一件です。この構造は、機能している本人確認を弱めて、それが原因でもない後発の経路問題を直すことを防ぎ、データ暗号の変更を証明書エラーの修正として売ることも防ぎます。
OpenVPN のプロトコル文書が制御とデータの分割の参照先であり、ベンダーの画面が同じ二つの機能に別の言葉を使うときに参照してください。