特定の条件だけ経路を変えたい。
たとえば、通常のルーティングはすでにあるとして、特定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を経由させないみたいな。そういう事ができてネットワークのデバッグがすごく楽になる。