web-dev-qa-db-ja.com

冗長openvpn構成

フェイルオーバー/高可用性の目的で、コイ付きのopenbsd nat/firewallボックスが2つあります。これらのボックスで実行する予定のOpenVPNも正常にフェイルオーバーするための最善の方法は何でしょうか。

3
imaginative

OpenVPNは、2つの異なるデーモンインスタンス間のいかなる種類の状態共有もサポートしていないため、シームレスなフェイルオーバーを行うことはできません。

ただし、サーバー障害を適切に処理するようにクライアントをいつでも構成できます。この種の冗長性がニーズを満たす場合は、OpenVPNが実際に備えている2つの機能を組み合わせることで実現できます。

1)サーバーから切断された後、自動的に再試行します。2)事前定義されたリストから、試行ごとにランダムに選択されたサーバーに接続します。

基本的な考え方は、2つ(または3つ以上)のOpenVPNサーバーを実行し、それらのすべてのIPアドレスまたはホスト名をVPNクライアント構成に追加できるということです。また、ユーザーが経験するダウンタイムを最小限に抑えるために、クライアントはすばやく再試行する必要があります。 1つのサーバーに障害が発生すると、クライアントは接続先リスト内の次のアドレスにローテーションし、接続はかなり短い順序で再確立されます。

ドキュメントは次の場所で入手できます。

特に、次の構成オプションを確認することをお勧めします。

  • リモート
  • 接続-再試行
  • 接続-再試行-最大
  • リモートランダム
  • ifconfig-pool-persist

すでに使用している可能性のある他のクライアント/サーバーオプションの任意の組み合わせに加えて、クライアント側でこれらのオプションを追加できるはずです。 'connect-retry'を低く、 'connect-retry-max'を高く(場合によっては無限に)保つことを忘れないでください。これでかなりうまくいくはずです。

15
Ryan B. Lynch

現在のセッションを失うことなく?

とにかく、いつでもifstated(8)を使用してCARPの降格を検知し、OpenVPNサーバーを起動できます。
実際、OpenVPNサーバーを同時に実行しているMASTERとSLAVEに問題があるかどうかはわかりません。

2
Colin