この図は、小規模オフィスをインターネットに接続するための一般的なスキームを示しています。
インターネットアクセス(ISP1)およびバックアップ(ISP2)のメインチャネルの場合、メインチャネルに問題がある場合に切り替えます。
スイッチングは通常、ルーターのデフォルトゲートウェイを変更することによって行われます。
また、ルーターに外部からアクセスできるサービスがある場合、これらのサービスは、インターネット上の現在アクティブなチャネルの外部アドレスでのみ使用可能になります。非アクティブなチャネルから受信した要求に対する応答はアクティブなチャネルを介して送信され、正常に失われます。 あるフォーラムでアドバイスされたように、プロバイダーとのBGP相互作用を確立することは、大砲からスズメを撃つときの
珍しい狂気であり、すべてのプロバイダーがそれを行うわけではありません。
ipfwとnatdを使用して、両方の外部アドレスで同時にサービスを利用可能にする方法を説明します。
ソースデータFREEBSD 6.3を搭載したルーター
ローカルネットワーク192.168.1.0/24、これを配置します。
IPアドレス192.168.1.1のローカルネットワークを調べるRe0インターフェイス
IPアドレス111.111.111.1でISP1を介してインターネットを見ているxl0インターフェイス
IPアドレス222.222.222.1でISP2を介してインターネットを見ているxl1インターフェイス
111.111.111.1と222.222.222.1で同時に利用可能にする必要があるサービス。
最初のプロバイダーのゲートウェイ:111.111.111.2
2番目のプロバイダーのゲートウェイ:222.222.222.2
すでに
habrでちらつく
PFによる同様の問題の
解決策 PFには、この問題を解決する魔法の返信()があります。 IPFWでは、ソリューションはそれほど簡単ではありませんが、順番に始めましょう。
インスタンスの両方の外部インターフェイスでnatdをハングアップする必要があり、それらの間で変換テーブルを共有する必要があります。
2つのインスタンスで動作するようにnatdを構成しましょう/etc/rc.confnatd_program="/sbin/natd" natd_enable="YES" natd_flags="-f /etc/natd.conf"
インターフェイスを指定しないことに注意してください。
/etc/natd.conf log instance default interface xl0 port 8668 use_sockets yes same_ports yes instance xl1 interface xl1 port 8669 use_sockets yes same_ports yes globalport 8670
インスタンスのデフォルトが必要です。
一部のマニュアルで推奨されているように、natdの2つのインスタンスを手動で実行すると、それぞれに変換テーブルがあるため、何も機能しません。
IPFWを構成するここでは安全規則を示しません。これは密接な問題であり、それぞれの場合に異なる要件とタスクがあるため、これらの規則を好みに追加します。
/etc/rc.firewall ipfw="/sbin/ipfw -q " local="re0" ISP1="xl0" ISP2="xl1" localnet="192.168.1.0/24" ISP1_ip="111.111.111.1" ISP2_ip="222.222.222.1" ISP1_gw="111.111.111.2" ISP2_gw="222.222.222.2" nat_ISP1="8668" nat_ISP2="8669" nat_glob="8670" ${ipfw} -f flush
すべてのルールは2つのプロバイダーに対して同じように記述されているため、チャネルの変更は、ルーターのメインゲートウェイを置き換えるだけで実行されます。 ルールを変更する必要はありません。
自動化のために、メインチャネルを介してリソースへの静的ルートを作成し、その可用性を監視できます。 使用できない場合は、プライマリゲートウェイをバックアップチャネルゲートウェイに変更します。
便利なリンク:
男の人男ipfwUPDルーティングスイッチスクリプト:
つまり、目的のインターフェイスを介してリソースに「ping」するだけです(pingコマンドの-Sフラグ)
リソースがメインチャネルを介して利用できない場合:
-バックアップチャネルの操作性を確認します。
-バックアップチャネルゲートウェイへのデフォルトルートを再構成します。
-「ラベル」/tmp/gw.changedを残し、ゲートウェイの変更を通知します。
次回の実行時(たとえば、スクリプトは1分間に1回cronで実行できます)、GW1が正常で「ラベル」がある場合、メインゲートウェイをその場所に戻します。 両方のゲートウェイが使用できない場合、現在の状態は変更されません。
この方法の主な利点は、透明性と単純さです。
短所-小さいながらも非生産的なトラフィックコストであるにもかかわらず、特に高いチャネル負荷での誤検知のゼロ以外の確率、一定の慣性。
両方のチャネルの通常の操作中にリソース自体(この例ではYandex)が一時的に使用できなくなっても、操作性は確認されないため、チャネルの切り替えは行われません。