ポリシーベースルーティング(PBR)/IPROUTE2の仕組み

スポンサーリンク
スポンサーリンク

PBR(Policy-Based Routing)

ルータがルーティングする際、宛先IPアドレスを見て判断する、ということを書いてきましたが、宛先IPだけじゃなく、 送信元IPアドレスやTCP/UDPポートも見てルーティングを決めたい!というような場合、PBR(ポリシーベースルーティング)という機能で実現することができます。

このPBRは、まず制御したい通信対象を定義するのにアクセスリストを使います。例えば『sshの通信だけをNextHopを変えたい!』というときは、宛先ポートTCP:22を許可するアクセスリストを作ります。

ip access-list 100
permit tcp any any eq 22

そしてポリシーマップという、ポリシーベースルーティングのルールを作ります。ここでは、SSH(tcp:22)通信をNextHop: 10.2.2.254に振り向けます。

route-map PBR1 permit 10
match ip address 100
set ip next-hop 10.2.2.254

最後に、このroute-mapをインタフェースに設定します。ここでは例えばgigabitEthernet 0/0とします。

interface gigabitEthernet 0/0
ip policy route-map PBR1

すると、そのインタフェースに入ってきたパケットの中でアクセスリスト100に 引っかかった通信(つまり宛先ポートがTCP:22の通信)だけ、行き先を10.2.2.254に変えることができます。

アクセスリストは自由に設定可能ですので、送信元/宛先のIPおよびTCP/UDPポートの如何なる組合せでもルーティングを変えることができます。

スポンサーリンク

PBRとルーティングの優先順位

PBRはルーティングよりも優先されます。PBRの範囲の中でも一部通信だけを除外したい場合はroute-mapでdenyのルールを作ります。例えば先程のルールの中でも、10.1.1.10からの通信だけはSSH通信をベストエフォート回線で利用させる場合は、以下のconfigを追加します。

ip access-list 101 permit ip host 10.1.1.10 any
route-map PBR1 deny 5
match ip address 101
これにより、アクセスリスト 101に引っ掛かる通信をPBR対象から外し、通常のルーティングによるルート選択をさせることができます。

IPROUTE2

ルータのポリシーベースルーティングの機能を、Linuxで実現できるのがIPROUTE2です。IPROUTE2はLinuxのパッケージとして提供されています。

PBRのアクセスリストの代わりに、/etc/sysconfig/network-scripts ディレクトリ配下にroute-[インタフェース名]ファイルとrule-[インタフェース名]ファイルを使うことができます。先ほどの例で、First Hopルータが無い場合にでも IPROUTE2で対応できます。

IPROUTE2はWindowsでは提供されていないようです。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク