OpenVPN data-ciphers がデータチャネルの暗号を選ぶ仕組み
サーバーがリストを提示し、クライアントが最初に一致したものを選びます。ログの二行を読み、リストを比較し、相手が必要とする箇所にだけフォールバックを追加してください。
トンネルが確立し、ログに暗号が表示され、プロファイルのレビューは先へ進みます。その後、あるピアにアップグレードが入り、同じプロファイルが共通の暗号がないというメッセージで失敗し、削除すべきディレクティブを探し回る原因になります。理解しておくべき重要な点は、data-ciphers が設定ではなく交渉を表すということです。一方がリストを提示し、もう一方がそこから選び、結果は双方が対応する単一のアルゴリズムになります。このやり取りを読めば、一行を変更する前にこうした失敗の多くを説明できます。
二つのチャネル、二つの設定
ある OpenVPN セッションには制御チャネルとデータチャネルがあります。制御チャネルは、ピアを認証し鍵を交渉する TLS ハンドシェイクを実行します。データチャネルは、あなたのトラフィックを運ぶパケットを暗号化します。
data-ciphers が設定するのは後者です。制御チャネルには独自のオプションがあり、プロファイルの身元確認は三つ目の別の関心事です。一方を変えても他方は直らず、だからこそプロファイルが正しく見えても特定の段階で失敗することがあります。
設定ファイルを読むときは、この三つをそれぞれの箱に入れておいてください。
ログから交渉を読み取る
接続が成功すると、クライアントのログは両方の結果を示します。一方の行は制御チャネルとその TLS の詳細を報告し、もう一方の行は選択されたデータチャネルの暗号を報告します。
それぞれ別の問いに答えるので、両方を読んでください。 制御チャネルの故障は、どのデータ暗号が問題になるよりも前に接続を止めます。データチャネルの不一致は、ハンドシェイクが成功した後に現れ、共通の暗号がないというメッセージを伴います。
次に、双方が提示したリストを比較します。一方のバージョンやその暗号基盤が提供しない名前は、もう一方のリストでどれほど早く現れても選べません。
選択は実際にどう行われるのか
サーバーはハンドシェイクの間に自分の data-ciphers リストをクライアントへ押し出し、クライアントはそのリストの中で自分も対応する最初の項目を選びます。したがって順序はサーバーの設定に属し、クライアントのものではありません。
この点が、紛らわしい結果の一群を説明します。サーバーのリストが決めている間は、クライアントのリストを並べ替えても何も変わりません。クライアントが提供できない暗号を追加しても、クライアントは選んだ項目を使えなければならないため、何も変わりません。
新しいリリースでは既定のリストが変わり、それを保持していたオプションの名前も変わったため、バージョンの異なる二人のピアは、誰もプロファイルを編集しないまま食い違うことがあります。入力ミスと決めつける前に、双方のバージョンを確認してください。
リストは抽象的な意味での強さの順位ではありません。候補の集合であり、選ばれるのはサーバーの順序で最初に双方が対応する項目です。だからこそ、見た目が異なる二つのリストが同じ暗号を交渉できるのです。同じに見える二つのリストが失敗することもあるのは、同じ理由です。
古いピアには意図的なフォールバックが必要です
その仕組みより古い、あるいは無効にしているためにまったく交渉できないピアには、文書化された互換性の取り決めが必要です。フォールバックのオプションはまさにその場合のためにあり、交渉に参加しないピアに適用されます。
これは、メッセージを消すためにすべての旧暗号を有効にすることとは違います。広いリストは、強いものを交渉できたはずのピアを含め、すべてのピアにとってセッションを弱めます。
無関係なアルゴリズム名を編集するのではなく、双方を調整してください。サーバーのアップグレードが古いオプションを削除したのなら、修正はバージョン計画に属し、クライアントでの慌ただしさではありません。
検証はそのまま保ってください
データチャネルの不一致は、検証されていないサーバーを受け入れる理由にはなりません。証明書の検証、期待されるサーバー名、制御チャネルの保護設定は暗号の選択とは別であり、どのような互換性の変更にも耐えるべきです。
次の比較がプロファイルではなく事実から始まるように、交渉されたデータ暗号、クライアントのバージョン、サーバーのバージョンをまとめて記録してください。
一度確立したセッションでも鍵の更新時に失敗することがあるため、サポートされた修正の後は、初回接続と再交渉をテストしてください。
トンネルが確立してもサイトが失敗するなら、暗号はもう容疑者ではありません。ルーティングと DNS の確認に進んでください。作業順序は、ログの二行を読み、二つのリストを比較し、バージョンを確認し、本当に必要なピアにだけフォールバックを追加し、最後に更新の経路を再テストすることです。