PBR(ポリシーベースルーティング)とは
概要説明
PBR(ポリシーベースルーティング – Policy-Based Routing)とは、ルーティングテーブルに従って転送するのではなく、特定の条件に一致したパケットのネクストホップを指定して転送する方式のことを言います。※この「特定の条件」のことをポリシーと呼びます。
PBRの用途
PBRを利用すると、下記のようにサーバーとの通信経路が2つあるネットワークで、特定のホスト(PC)からの通信だけ、別のルーターを経由させることができます。
PBRの動作概要 ※クリックで再生
PBR(ポリシーベースルーティング)の設定方法
ネットワーク構成
下記のネットワークを例に、PBRの設定方法を説明します。
ルーター1に「送信元がPC2(192.168.1.2)の場合のみ、ルーター3へ転送する設定」を行います。
設定方法
PBR対象の通信を特定するためにアクセスリストを設定します。
ip access-list extended [ACL-NAME]
permit [Protocol] [Source address] [Source wildcard] [Destination address] [Destination wildcard]
ip access-list extended PBR-Host
permit ip 192.168.1.2 255.255.255.255 any
ルートマップを設定し、対象通信のネクストホップを指定します。
route-map [MAP-NAME] permit 10
match ip address [ACL-NAME]
set ip next-hop [NEXT-HOP address]
route-map PBR-Route permit 10
match ip address PBR-Host
set ip next-hop 172.16.2.3
PBR対象の通信を受信するインターフェースにルートマップを適用します。
interface [INTERFACE-NAME]
ip policy route-map [MAP-NAME]
interface GigabitEthernet0/0
ip policy route-map PBR-Route
PBR(ポリシーベースルーティング)の動作確認
Ciscoルーターのデバッグコマンドを利用して、PBRの動作を確認します。
必要なデバッグコマンド
PBRの動作を確認するために、下記2つのデバッグコマンドを有効にします。
debug ip packet detail
debug ip policy
デバッグコマンド実行
Router1#debug ip packet detail
IP packet debugging is on (detailed)
Router1#debug ip policy
Policy routing debugging is on
全てのデバッグコマンドを停止する時は、下記のいずれかのコマンドを実行します。
no debug all
undebug all
「undebug all」は「u all」と短縮可能なため、覚えておくと便利です。
通常ルーティングの場合のデバッグログ確認
通常ルーティングの場合のデバッグログは下記のとおりです。
23:24:07.918: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100, len 84, policy rejected -- normal forwarding
23:24:07.919: ICMP type=8, code=0
23:24:07.919: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100, len 84, input feature
23:24:07.920: ICMP type=8, code=0, Policy Routing(103), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
23:24:07.921: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100, len 84, input feature
23:24:07.922: ICMP type=8, code=0, MCI Check(109), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
23:24:07.923: IP: tableid=0, s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/1), routed via RIB
23:24:07.923: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/1), g=172.16.1.2, len 84, forward
23:24:07.925: ICMP type=8, code=0
23:24:07.926: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/1), len 84, sending full packet
23:24:07.926: ICMP type=8, code=0
23:24:07.918: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100, len 84, policy rejected -- normal forwarding
- policy rejected → ポリシーに該当していないことを確認
- normal forwarding → 通常ルーティングで処理することを決定
23:24:07.923: IP: tableid=0, s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/1), routed via RIB
23:24:07.923: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/1), g=172.16.1.2, len 84, forward
23:24:07.926: IP: s=192.168.1.1 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/1), len 84, sending full packet
- routed via RIB → RIB(Routing Information Base)経由でルーティング処理
- forward → ルーティングテーブルに従って転送処理
- sending full packet → パケットの転送完了
PBRの場合のデバッグログ確認
PBRの場合のデバッグログは下記のとおりです。
23:19:15.033: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100, len 84, policy match
23:19:15.034: ICMP type=8, code=0
23:19:15.034: IP: route map B-PBR, item 10, permit
23:19:15.034: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), len 84, policy routed
23:19:15.035: ICMP type=8, code=0
23:19:15.035: IP: GigabitEthernet0/0 to GigabitEthernet0/2 172.16.2.3
23:19:15.035: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), len 84, input feature
23:19:15.035: ICMP type=8, code=0, Policy Routing(103), rtype 2, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
23:19:15.036: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), len 84, input feature
23:19:15.036: ICMP type=8, code=0, MCI Check(109), rtype 2, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
23:19:15.037: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), g=172.16.2.3, len 84, forward
23:19:15.037: ICMP type=8, code=0
23:19:15.038: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), len 84, sending full packet
23:19:15.038: ICMP type=8, code=0
23:19:15.033: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100, len 84, policy match
23:19:15.034: IP: route map B-PBR, item 10, permit
23:19:15.034: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), len 84, policy routed
- policy match → ポリシーに該当していることを確認
- policy routed → PBRで処理することを決定
23:19:15.035: IP: GigabitEthernet0/0 to GigabitEthernet0/2 172.16.2.3
23:19:15.037: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), g=172.16.2.3, len 84, forward
23:19:15.038: IP: s=192.168.1.2 (GigabitEthernet0/0), d=100.100.100.100 (GigabitEthernet0/2), len 84, sending full packet
- GigabitEthernet0/0 to GigabitEthernet0/2 172.16.2.3 → 転送先を決定
- forward → PBRに従って転送処理
- sending full packet → パケットの転送完了
PBR(ポリシーベースルーティング)の注意点
様々なルーティング処理を行えるPBRですが、実装上の注意点があるため、過度な利用は推奨しません。複雑なルーティング設計にならないように、利用は最小限に留めましょう。
往復異経路になりやすい
PBRは、通常のルーティングとは異なる経路へ転送するため、戻りの通信と異経路になることがあります。経路上にファイアウォールなどのネットワーク機器が存在すると、往復通信が異経路になっていることが原因で、通信不可となる可能性があります。
ルーターに負荷がかかる・遅延が発生する
PBRは、指定されたインターフェスに着信する全てのパケット対して、PBR対象かどうかをチェックします。そのため、以下のような問題が発生する可能性があります。
- ルーターに負荷がかかる
- パケットの転送に遅延が発生する
ルーティング設計が複雑になる
ネットワーク管理者にとって、ルーティング設計を把握することは、「ネットワーク環境の改善」や「障害時の対応」を行う際に重要なポイントとなります。
PBRを多用していると、ルーティング設計が複雑になり、管理しきれないネットワーク環境となってしまいます。
以上で、PBR(ポリシーベースルーティング)の説明と設定方法の解説は完了です!