web-dev-qa-db-ja.com

QuaggaとOpenVPNを使用したルーティング

2つのラックにあるサーバーを相互に接続する予定です。各ラックに5台のサーバーがあり、高速スイッチで接続されていると仮定します。各サーバーには1GBitのインターネットアップリンクがあります。

以下は非常に愚かなことかもしれませんが、ネットワーキングは私の専門分野ではないので、あなたの助けが必要です。

それらの間で完全な1GBit接続を使用したいので、いくつかのOpenVPN接続を作成しています(添付の画像を参照してください。「青い雲」はVPNネットワークです)。ただし、1つのサーバーがダウンした場合でも、2つのラック間の接続が機能している必要があります。

そこで、私たちが行ったことは次のとおりです。1。各S [1-5]サーバーとC [1-5]サーバーの間にOpenVPNを構成し、10.0.5x.0/24の仮想ネットワークを作成します。 (これはすでに機能しています)2。ルートをアナウンスするためにOSPFを使用してQuaggaをインストールおよび構成します。これはすべてのノードに対して行ったので、誰もが他の誰かのルーターになることができます(1つのゲートウェイだけが必要なわけではありません。ラック間の接続が1 GBitに制限されるからですよね?!)
3。 Quaggaがルートをアナウンスし、誰もが他のすべての人にpingできるようになりました(これも機能しています)

これでプレイが始まります。C4を停止し、それに応じてルートが更新されます(OSPFとquaggaと言えば)。しかし、S4からC5にpingを実行しようとすると、C5が最適なルートではないと思われるルートが必要になります(これは、rp_filter Linuxネットワーク設定を1に設定したことを理解しています)。 tcpdumpに表示されるルートは、S4-> S3-> C3-> C5です。より良いルートはS4-> S5-> C5です。

Rp_filterを2に設定すると、pingは機能しますが、最適でないルートを許可するのは間違っていると感じますか? OSPFは可能な限り最良の(最短ルート)を取得するためにあると思いましたか?しかし、Quagga/OSPFdの設定が間違っていると思われます。

これが私たちが念頭に置いているトポロジーのイメージです: トポロジー

Ospfd.confは次のようになります

interface eth0
interface bond0
interface tun0

router ospf
  router-id 10.0.1.4
  network 10.0.1.0/24 area 0
  network 10.0.54.0/24 area 1
  redistribute static

zebra.conf:

interface bond0
  link-detect
interface tun0
  link-detect
1
lbenedix

つまり、必要な動作を実現するには、すべてのインターフェイスを同じ領域に配置する必要があります。エリア間ルーティングは内部的に非常に複雑であり、エリアの概念全体は、主に大規模なルーティングネットワークをマネージドサイズのネットワークに分割するために存在します。あなたが与えるルーターの数が正しければ、これはあなたのケースではありません。

0
Peter Zhabin