web-dev-qa-db-ja.com

現在のものが失敗した場合に備えて、OpenVPNを「フォールバック」.ovpnsに自動接続するように設定できますか?

私はDebian7.8 Wheezyを使用しており、安定したリポジトリからopenvpnをインストールしました。

別のユーザー(コンピューターリテラシーが高くない)用にシステムをセットアップしたいのですが、構成したプライマリサーバー(/path/to/one.ovpn)何らかの理由で失敗しました。バックアップがあります(/path/to/two.ovpn)代わりに、バックアップとして自動的に接続します。

そして多分私は彼らに10個の.ovpnファイルを与え(例えば VPN Gate からの無料のコミュニティサーバーを使用して)、手動で行う必要なしにユーザーが安全であることを本当に確認しようとします(それらの1つが機能すると仮定します)それについては何でも。

デフォルトのopenvpn設定、またはDebianと互換性のあるサードパーティのGUIに、これを実現する方法はありますか?

それともスクリプト? (起動時に実行するように設定できます。)

1
Grant

今できる最善のことは、OpenVPNを適切に設定して、次のような2番目のサーバーがあることを通知することだと思います。

負荷分散/フェイルオーバー構成クライアントの実装

OpenVPNクライアント構成は、負荷分散とフェイルオーバーのために複数のサーバーを参照できます。例えば:

remote server1.mydomain
remote server2.mydomain
remote server3.mydomain

openVPNクライアントに、server1、server2、server3の順に接続を試みるように指示します。既存の接続が切断された場合、OpenVPNクライアントは最後に接続されたサーバーを再試行し、それが失敗した場合は、リスト内の次のサーバーに移動します。 OpenVPNクライアントに、起動時にサーバーリストをランダム化するように指示することもできます。これにより、クライアントの負荷がサーバープール全体に確率的に分散されます。

remote-random

DNS解決の失敗によってOpenVPNクライアントがリスト内の次のサーバーに移動するようにする場合は、以下を追加します。

resolv-retry 60

60パラメーターは、リスト内の次のサーバーに移動する前に、各リモートDNS名を60秒間解決しようとするようにOpenVPNクライアントに指示します。

サーバーリストは、同じマシンで実行されている複数のOpenVPNサーバーデーモンを参照することもできます。各デーモンは、異なるポートで接続をリッスンします。次に例を示します。

remote smp-server1.mydomain 8000
remote smp-server1.mydomain 8001
remote smp-server2.mydomain 8000
remote smp-server2.mydomain 8001

サーバーがマルチプロセッサマシンの場合、各サーバーで複数のOpenVPNデーモンを実行すると、パフォーマンスの観点から有利になる可能性があります。

OpenVPNは、ドメインのゾーン構成に複数のAレコードを持つDNS名を参照するリモートディレクティブもサポートしています。この場合、OpenVPNクライアントは、ドメインが解決されるたびにAレコ​​ードの1つをランダムに選択します。

ソース: https://openvpn.net/index.php/open-source/documentation/howto.html#loadbalance

3

コメントするのに十分な担当者ではありませんが、 このページ に従って追加したかったので、各remoteエントリのプロトコルを指定できます。

サーバーフェイルオーバー用にプロファイルを設定するにはどうすればよいですか?

OpenVPNに接続するサーバーのリストを提供できます。接続に失敗すると、OpenVPNは、応答するサーバーが見つかるまでリストをローテーションします。たとえば、プロファイル内の次のエントリは、最初にUDPポート1194を介してサーバーAに接続しようとし、次にTCPポート443、次にサーバーBでプロセスを繰り返します。OpenVPNは次のようになるまで再試行を続けます。正常に接続するか、接続タイムアウトに達します。これは、環境設定で構成できます。

remote server-a.example.tld 1194 udp
remote server-a.example.tld 443 tcp
remote server-b.example.tld 1194 udp
remote server-b.example.tld 443 tcp
0
Eliezer P