iproute2を使って複数経路を制御する

 とあるサーバを設置したときのこと、eth0を内部LAN(Internal)に、eth1をグローバル(External)に接続した上に、通常通信は内部LAN側のGWを使用したいときのメモ。
 通常、デフォルトゲートウェイはシステム全体で1個なので、route add default gw LAN1-GWみたいにすると、eth1から来た通信の応答もeth0経由のLAN1-GWから出て行こうとして通信が成立しなくなる。
 この場合、正しいインタフェイス、経路から出て行くためにはiproute2を利用する。 CentOSではiproute-2系パッケージである。
 ip route2ではポリシールート制御が可能なので、
/etc/sysconfig/network-scripts/route-eth1
0/0 via GlobalGW dev eth1 table 100

/etc/sysconfig/network-scripts/rule-eth1
from GlobalIP table 100 prio 100
iif eth1 table 100 prio 200

 GlobalGWは157.7.x.yみたいな、グローバル側のゲートウェイIP、GlobalIPも同様でeth1自体のIPを設定する。

0/0 via GlobalGW dev eth1 table 100
 この場合は、route-eth1の設定により0/0(デフォルト)のゲートウェイにGlobalGWを設定しeth1から出て行く。 この経路の識別子としてtable 100を設定。

from GlobalIP table 100 prio 100
 GlobalIPから送信するパケットはtable 100を適用する。
 
iif eth1 table 100 prio 200
eth1から入ってきたパケットをtable 100で処理させる。

 これによって、通常の通信は、既存のデフォルトゲートウェイで処理され、eth1で入ってきたパケットの応答のみグローバルで直接応答する。

(120)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP]   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です