ipp.txtの行を編集すると、アドレスを予約したように感じますが、そうではありません。このファイルはifconfig-pool-persistで名前を付けられ、共通名が前回どのアドレスを持っていたかを記録し、都合がよいときにプールが同じアドレスを返せるようにするものです。その中の何も、次の接続をその番号に縛り付けません。

以下のチェックを順番に実行します。それぞれが、仕組みを確認するか、停止して入力を修正するよう告げます。

永続ファイルの役割

このファイルは、再起動をまたいでアドレスを安定させるために存在し、再接続を快適にし、ログを読みやすくします。履歴として読まれ、履歴として書かれ、割り当て経路はヒントが合わないときに別のアドレスを選ぶ自由を保ちます——別のプール、競合する割り当て、プールが埋まった後に到着したクライアントなどです。だからこそ、手作業の編集はファイル上では完璧に見えても、接続には何も変えません。過去の判断のキャッシュとして扱い、ポリシーの源泉とは考えないでください。

特定のクライアントに特定のアドレスが必要な場合、文書化された仕組みはifconfig-pushであり、それはそのクライアントを所有する設定に属します。

正しいクライアントが選ばれているか確認する

明示的な割り当てはクライアントの共通名で検索されるため、誤った識別名で名付けられたファイルは決して読まれません。サーバーがそのクライアントの名前と見なすものを、特にusername-as-common-nameが認証後にそれを変える場合には確認してください。次に、ファイル名がその値と完全に一致することを、大文字と小文字を含めて確認します。

ここで並行性も考えてください。duplicate-cnが許可されている場合、複数のデバイスが同じ識別名を提示でき、一つの固定アドレスをすべてに対して一意にすることはできません。その識別名の同時セッションを拒否してまで固定アドレスを取る価値があるか決めてください(この二つの要件は同時に満たせないため)。

数値がトポロジーと一致するか確認する

引数の意味はトンネルのトポロジーに依存し、コピーした例が最も害をなすのはここです。古いnet30配置では各クライアントが四つのアドレスのブロックを占めるため、pushはアドレスの組を渡します。サブネットトポロジーではクライアントは一つのアドレスとプールのマスクを受け取り、組の形式は誤りです。行を書く前に、実行中の設定からトポロジーを読み取ってください。

# /etc/openvpn/ccd/partner-a   (subnet topology)
ifconfig-push 10.44.0.61 255.255.255.0

アドレスを、それを所有しうる他のすべて——別の明示的な割り当て、動的プールの範囲、固定ホストを前提とする静的ルート——と照合します。プールと重複するアドレスは、プールがそれを誰かに渡すまで機能し、その失敗はランダムに見えます。

新しい接続で結果を確認する

既存のセッションは与えられたアドレスを保持するため、意味のある唯一のテストは新しい接続です。クライアントを切断し、再接続して、実際に受け取ったアドレスと、それと一緒に届いたルートを読み取ります。アドレスがまだ動的なら、割り当ては適用されておらず、次の手順は履歴ファイルへの別の編集ではなく設定の調査です。

証拠は、クライアント名、一致したファイル、割り当てられたアドレス、それが属するプールをまとめて保持します。

最後に、固定トンネルアドレスはデバイスの資格情報ではありません。それはアドレス計画の中の位置を示すものであり、認証は依然として証明書とアカウントに依存します。両者を混同すると、アドレスの競合が誰も書き留めていないセキュリティ上の前提に変わります。

関連記事