それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ポリシールーティング GWが複数時に、条件マッチで経路を変える。

特定の条件だけ経路を変えたい。

たとえば、通常のルーティングはすでにあるとして、特定PC(業務用)だけ経路を変えたい。

ルーティングはテーブルで

通常のルーティングは、ルーティングテーブルで行われる。ルーティングを書けばいい

特定のパケットだけGWを変えたい。

こうなると、途端に難しくなる。

特定の条件に合致したパケットだけを違うGWに転送したい。つまりルーティングテーブルをスキップしたい。

色々と考えられるが、面倒になる。別ルータを仮想マシンで用意するのが手っ取り早かったりする。

ポリシールーティング

これを実現する簡単な方法が、ルーティングテーブルの複数持ちである。

ルーティングテーブルは複数持ちできて、条件にマッチしたパケットを別のルーティングテーブルをに放り込むことができる。

これを「ポリシー・ベース・ルーティング」 という。

ルーティングテーブルを追加

ポリシールーティングのために ruleとマーキング(フラグ設定) を作成

ip rule add fwmark 101 table 101
ip route add 1.1.1.1 dev pppoe-isp2 table 101

ルーティングテーブルの選択。

iptables -I PREROUTING -t mangle  -d 1.1.1.1/32 -j MARK --set-mark 101

設定の確認

ip route show table 101
ip route get fibmatch 1.1.1.1 mark 101  

まとめ

たった3行です。

テーブルを追加して、経路を追加する。 条件にマッチしたパケットにMARKする。

ip rule add fwmark 101 table 101
ip route add 1.1.1.1 dev pppoe-isp2 table 101
iptables -I PREROUTING -t mangle  -d 1.1.1.1/32 -j MARK --set-mark 101

メインのテーブルはいじらないのでとても簡単で便利。

通常のパケットはVPN/IPsecで飛ばし、条件にマッチしたパケットをVPN/IPsecを経由させないみたいな。そういう事ができてネットワークのデバッグがすごく楽になる。