マルチホームな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スクリプトを眺めてみると、routes-eth*やrules-eth*を記述しておくとその内容を引数にしてそれぞれip route addとip rule addを実行してることがわかります。
この方法のよいところはifdown実行時にifdown-routesスクリプトでルールの削除処理(ip rule del)もおこなってくれるところです。
+------------+ +----------
| | |
+-------------+ Provider 1 +-------+
| | | |
+------+-------+ +------------+ |
| eth1 | |
| | |
| Linux router | | Internet
| | |
| eth2 | |
+------+-------+ +------------+ |
| | | |
+-------------+ Provider 2 +-------+
| | |
+------------+ +----------
/etc/iproute2/rt_tablesの末尾にテーブルを追加。
200 Provider1 201 Provider2
/etc/sysconfig/network-scripts/routes-eth1
192.0.2.0/25 dev eth1 src 192.0.2.1 table Provider1 default via 192.0.2.126 table Provider1 192.0.2.0/25 dev eth1 src 192.0.2.1
/etc/sysconfig/network-scripts/routes-eth2
192.0.2.128/25 dev eth2 src 192.0.2.129 table Provider2 default via 192.0.2.254 table Provider2 192.0.2.128/25 dev eth2 src 192.0.2.129
/etc/sysconfig/network-scripts/rules-eth1
from 192.0.2.1 table Provider1
/etc/sysconfig/network-scripts/rules-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ではまだ使えるようなのでしばらくは大丈夫でしょう 