web-dev-qa-db-ja.com

フォールトトレランスのためのOpenVPNを介したボンディング

2台のOpenVPNサーバーと、それらに接続している2台のマシンがあります。

サーバー1のopenvpnアドレス:10.158.1.1
サーバー2のopenvpnアドレス:10.158.2.1

マシン1のアドレスはサーバー1に10.158.1.11、サーバー2に10.158.2.11です。
マシン2のアドレスはサーバー1に10.158.1.12、サーバー2に10.158.2.12です。

単純なテキストベースの図は次のようになります。

10.158.1.11(machine1)<-------(10.158.1.1 server1)-------> 10.158.1.12(machine2)
10.158.2.11(machine1)<-------(10.158.2.1 server2)-------> 10.158.2.12(machine2)

この時点ですべてが正常です。1.12から1.11、2.12から2.11などにpingを実行できます。

そのため、マシンはopenvpnサーバー(openvpnサーバーでクライアント間が有効になっている)を介して2つのVPNインターフェースを介して相互に到達できます。

私が達成したいのは、結合されたインターフェースを持ち、マシンへのIPを1つだけ相互に通信させることです。

例:マシン1の場合は10.159.0.1、マシン2の場合は10.159.0.2。

Tap10とtap20(それぞれopenvpnインターフェイス)をボンディングモードのアクティブバックアップにしようとしましたが、miiを使用すると、リンクがダウンした場合にopenvpnがtapインターフェイスをダウンさせないため、vpnインターフェイスがダウンしているかどうかは明らかにわかりません。
arpモニタリングも使用しようとしましたが、インターフェイスがスレーブ化されたときにARPが機能しなかったため、ボンディングではすべてのインターフェイスがダウンしていると見なされます。 openvpnタップでGREトンネル(具体的には、GRETAP、l3のみの通常のGREではない)を使用しようとしましたが、通常のTAPインターフェイスと同じように失敗しました。

PS:Debian 9を実行しているマシン2、サーバー1、Debian8を実行しているサーバー2およびマシン1。
Debian 8システムで、バックポートされた2.4OpenVPNを使用。したがって、OpenVPNのバージョンは一致します。

何をすべきかアイデアはありますか?
ご意見ありがとうございます!

2
WorK

私はあなたの戦略がうまくいかないと述べることによってこれに答え始めます。これらのインターフェースを介してボンディングを行うことはありません。ルーティングに入ると、ボンディングの概念を放棄し、BGPや負荷分散VPNサーバー自体などの高度なルーティングテクノロジーの領域にいます。しかし、あなたの要件を知らなければ、私は非常に堅実な推薦をすることはできません。

BGPは、「インターネット」リンクの冗長性のために、一般的に配置されている複数のISPを一緒にルーティングできるため、外部ネットワーク要件の可能性に対する潜在的な回答になる可能性が非常に高くなります。これを使用して、地理的な地域間を動的にルーティングし、地理的に多様な可用性を提供することもできます。それは必要ないかもしれませんが、同じ目的で2つのサイトを管理している場合は、そのようなことを検討するかもしれません。

高度なルーティングの代わりに、またはそれに加えて、OpenVPN用にローカルに配置されたサーバークラスターを作成する場合は、アクティブ/アクティブクラスタリングにステートフル(アプリケーション)ロードバランサーを使用するか、PacemakerでLinuxHAを使用して管理する必要がありますフェールオーバークラスター内のリソース。

これらの提案はどちらも一般的に複雑すぎて、この媒体を介して完成させることはできず、一般に、戦略を再構築するための指針として機能することを目的としています。

そして最後に、私は製品の推奨をするのが嫌いです。彼らはよく老化しません。ただし、この記事の執筆時点では、「PFSense」は、OpenVPNをHAペアにクラスター化し、BGPトラフィックを管理するのに役立つ素晴らしいすぐに使える製品です。詳細に迷い、実用的なコンセプトや製品が必要な場合は、これが役立つ場合があります。そのファイアウォールアプライアンスは、仮想マシンでも完全に機能するまでに数分しかかかりません。

1
Spooler