単一サーバー内の仮想 IP

単一サーバー内の仮想 IP

以下のように設定したい

異なる静的 IP を持つ ISP が 2 つあり、2 つの NIC を持つ単一のサーバーで終端されています。この NIC に仮想 IP を作成し、ローカル Web サーバーをこの仮想 IP にバインドして、いずれかの ISP に障害が発生しても外部からアクセスする Web サーバーに影響が及ばないようにしたいと考えています。Linux でこれを行うにはどうすればよいですか。

答え1

単一の IP アドレスの場合、想定どおりには実行できません。

IPアドレスレベルで機能させるには、自律システム番号 (ASN)そして、世界中のインターネット バックボーン ルーターに仮想 IP に到達する方法を通知する BGP 動的ルーティング プロトコルを実行します。

残念ながら、実際には単一の IP アドレスは、この方法で動的にルーティングするには小さすぎます。ほとんどの ISP は、家庭や中小企業の顧客からの着信 BGP アナウンスを受け入れません。また、そのハードルを乗り越えたとしても、インターネットのルーターは単一の IP アドレスの BGP アナウンスを無視します。ルーティング パフォーマンスを維持し、バックボーン ルーターのルーティング テーブルが不合理な長さに成長しないようにするために、バックボーン ルーターは、IP アドレス空間のより大きなチャンクのみを処理する必要があります。

実際にそのような仮想 IP を使用するには、相当な大きさのパブリック IP アドレス ブロック (/24 が該当) を持つ、かなり大きな組織である必要があります。他の組織のトラフィックを相互に受け入れて、ネットワーク リンク経由でルーティングできるようにすることも役立ちます。

もちろん、2 つの ISP が両方とも同じインターネット バックボーン プロバイダーのクライアントであり、カスタム ソリューションについて交渉して料金を支払う意思がある場合は、おそらく何らかの対応が取れるでしょう... しかし、ほとんどの人にとって、それは別のアプローチを選択することではるかに簡単に達成できることに、多額の費用と労力を浪費することになるでしょう。


単一サーバーに ISP フェイルオーバーを実装するより現実的な戦略は、利用可能な動的 DNS サービスを使用することです。アップリンクごとに 1 つのパブリック IP アドレス (必ずしも静的ではない) を用意し、DDNS クライアントを使用して、Web サーバーの完全修飾ホスト名の DNS A レコードを更新して、現在アクティブな IP アドレスを指すようにします。

アップリンクがダウンした場合は、A レコードを更新し、古いレコードの Time-To-Live が期限切れになるのを待つだけで (ほとんどのダイナミック DNS サービスは TTL を 60 秒程度とかなり短く保ちます)、再びアクセスできるようになります。もちろん、この方法を実行すると、フェイルオーバー時に IP アドレスが変更されるため、既存の接続はすべて切断されます。ただし、ISP がステートフル ファイアウォールをまったく実行していない場合、仮想 IP を持っていたとしても、フェイルオーバー時にいずれにせよ発生します。

あるいは、大手クラウド事業者からクラウド サーバーをレンタルし、冗長ネットワーク リンクなどの複雑な処理を事業者に任せることもできます。事業者の規模では、事業者はそれを当然のこととして行う必要があります。

関連情報