Nov 202009
 

マルチホームなLinuxマシンで、受信したNICインターフェース側から応答を返す方法をCentOS 5.4で実装する方法です。

複数のアップリンク/プロバイダに対するルーティング
として例示される設定を、スクリプトではなくCentOSの設定ファイルで記述してみます。

上記例でのポイントはip route addコマンドの実行とip rule addコマンドの実行です。
Fedora等のRed Hat系ではNICインターフェースのアップ時(/sbin/ifupコマンド実行時)に、/etc/sysconfig/network-scripts配下のifup-ethやifup-routesコマンドが呼びだされます。

ifup-routesスクリプトを眺めてみると、route-eth*やrule-eth*を記述しておくとその内容を引数にしてそれぞれip route addとip rule addを実行してることがわかります。

この方法のよいところはifdown実行時にifdown-routesスクリプトでルールの削除処理(ip rule del)もおこなってくれるところです。

構成

ネットワーク構成

                     +------------+       +----------
                     |            |       |
       +-------------+ Provider 1 +-------+
       |             |            |       |
+------+-------+     +------------+       |
|     eth1     |                          |
|              |                          |
| Linux router |                          | Internet
|              |                          |
|     eth2     |                          |
+------+-------+     +------------+       |
       |             |            |       |
       +-------------+ Provider 2 +-------+
                     |            |       |
                     +------------+       +----------

Provider 1構成

  • N/W アドレス: 192.0.2.0/25
  • Linux IPアドレス: 192.0.2.1
  • Provider1 IPアドレス: 192.0.2.126

Provider 2構成

  • N/W アドレス: 192.0.2.128/25
  • Linux IPアドレス: 192.0.2.129
  • Provider1 IPアドレス: 192.0.2.254

設定内容

/etc/iproute2/rt_tablesの末尾にテーブルを追加。

200 Provider1
201 Provider2

/etc/sysconfig/network-scripts/route-eth1

192.0.2.0/25 dev eth1 src 192.0.2.1 table Provider1
192.0.2.0/25 dev eth1 src 192.0.2.1
default via 192.0.2.126 table Provider1

/etc/sysconfig/network-scripts/route-eth2

192.0.2.128/25 dev eth2 src 192.0.2.129 table Provider2
192.0.2.128/25 dev eth2 src 192.0.2.129
default via 192.0.2.254 table Provider2

/etc/sysconfig/network-scripts/rule-eth1

from 192.0.2.1 table Provider1

/etc/sysconfig/network-scripts/rule-eth2

from 192.0.2.129 table Provider2

defaultルートは/etc/sysconfig/network-scripts/ifcfg-eth*のどちらかにGATEWAYを設定すればOKです。

一点気になるのは、/etc/sysconfig/network-scripts/ifup-routesスクリプトでip route addコマンドの引数をそのまま記述する方式は”older format”とコメントされていることです。
もしかしたら近い将来使えなくなるのかも知れませんが、Fedora 12ではまだ使えるようなのでしばらくは大丈夫でしょう 😛

■2010-08-10追記
コメントでご指摘のとおりファイル名が間違っていましたので修正しました。
ご指摘ありがとうございました。

Sorry, the comment form is closed at this time.