設定には、iptablesの機能と、通常iproute2と呼ばれるパッケージのipユーティリティを使用します。 そして、タスクを解決するために、「宛先ルーティング」(受信者アドレスに基づくルーティング)ではなく、「ポリシールーティング」(つまり、ポリシーベースのルーティング)に基づいてパケットをルーティングします。
それでは始めましょう。 まず、変数を定義しましょう:
#!/ bin / bash
IF1 = eth1
IF2 = eth2
IF-これらは、プロバイダーを介してインターネット上で検索するネットワークインターフェイスです
IP1 = 10.10.10.10
IP2 = 20.20.20.20
IP-これらはプロバイダーによって提供された外部IPアドレスです。
P1 = 10.10.10.1
P2 = 20.20.20.1
Pはプロバイダーのデフォルトゲートウェイです
ポリシールーティングでは、送信元アドレスに基づいたルーティングが許可されるため、関与するサーバーをリストします。
SRV11 = 192.168.0.11
SRV12 = 192.168.0.12
ここでSRV11とSRV12は同じサーバーの2つのIPです(これは重要です!)。これにより、1つのサーバーが2つのプロバイダーからの着信接続を処理できます。 もちろん、この機会を実現するためのオプションは他にもありますが、私はIPを使用します。最初はもっと簡単になると思います。
さて、今、最も興味深い部分はルーティングのルールを書くことです。
最初に行う必要があるのは、ルーティングテーブルを追加することです。そのためには、/ etc / iproute2 / rt_tablesファイルを次のように編集する必要があります。
#echo "101 T1" >> / etc / iproute2 / rt_tables
#echo "102 T2" >> / etc / iproute2 / rt_tables
最初の表に入力します。
ip route add $ P1_NET dev $ IF1 src $ IP1 table T1
ip routeは、$ P1テーブルT1を介してデフォルトを追加します
つまり、最初のインターフェイスを介して最初のプロバイダーのサブネットに到達できることを示すルートを追加します。 2行目に、デフォルトゲートウェイを追加します。
2番目と同じこと:
ip route add $ P2_NET dev $ IF2 src $ IP2 table T2
ipルートは、$ P2テーブルT2を介してデフォルトを追加します
次に、「main」というメインテーブルを扱います。 ip routeと入力すると表示されます。
ip route add $ P1_NET dev $ IF1 src $ IP1
ip route add $ P2_NET dev $ IF2 src $ IP2
ipルートは、$ P1メトリック10を介してデフォルトを追加します
最初の2行は前のエントリと似ていますが、「table main」のみが省略されています。 3行目は、メトリックでデフォルトルートを設定します。
これで、ルーティングテーブルの内容を確認するためにルーティングを決定しました。コマンド「ip route show table <table name>」を実行できます。 それでは、ルールについて説明しましょう。 ルールによって、どのパケットがどのテーブルにルーティングされるかが決定されます。
IPルールは$ IP1テーブルT1から追加します
IPルールは$ IP2テーブルT2から追加します
ここで、送信元アドレスが最初の外部アドレスと等しい場合、テーブルT1に従ってルーティングが実行されることを指摘しました。 同様に、2番目のエントリ。
そして最後に、最も興味深いのは:
IPルールは$ SRV11 fwmark 10テーブルT1から追加しますiptablesを使用して、関心のあるパケットをマークし、これらのラベルに基づいてルーティングできます。 実際には、ここに2つのルールを追加しました。ラベル10のパッケージには、テーブルT1を使用し、ラベル20-T2のパッケージには。 なぜこれが必要なのかはあまり明確ではないかもしれませんが、iptablesルールからすべてが明らかになります。 ルールを表示するには、「ipルール」を実行します。ルーティング中にルールが順番にチェックされます。
IPルールは$ SRV12 fwmark 20テーブルT2から追加します
さて、作業の半分は完了しました。iptablesのルールを記述することは残っています。これについては、第2部で説明します。
第二部 。
私のブログの元の記事私たちは2+プロバイダーを使用します(最初の部分)
ps自分を理解し、他の人に伝えるために書かれています。