PBR(ポリシーベースルーテ ィング)の説明と設定方法

PBR(ポリシーベースルーティング)の説明と設定方法
目次

PBR(ポリシーベースルーティング)とは

概要説明

PBR(ポリシーベースルーティング – Policy-Based Routing)とは、ルーティングテーブルに従って転送するのではなく、特定の条件に一致したパケットのネクストホップを指定して転送する方式のことを言います。※この「特定の条件」のことをポリシーと呼びます。

PBRの概要説明

PBRの用途

PBRを利用すると、下記のようにサーバーとの通信経路が2つあるネットワークで、特定のホスト(PC)からの通信だけ、別のルーターを経由させることができます。

PBRの動作概要 ※クリックで再生

PBR(ポリシーベースルーティング)の設定方法

ネットワーク構成

下記のネットワークを例に、PBRの設定方法を説明します。

PBRの設定例

ルーター1に「送信元がPC2(192.168.1.2)の場合のみ、ルーター3へ転送する設定」を行います。

設定方法

STEP
対象通信の特定(アクセスリストの適用)

PBR対象の通信を特定するためにアクセスリストを設定します。

ip access-list extended [ACL-NAME]
 permit [Protocol] [Source address] [Source wildcard] [Destination address] [Destination wildcard]
設定例)ルーター1
ip access-list extended PBR-Host
 permit ip 192.168.1.2 255.255.255.255 any

送信元は「PC2のIPアドレス」、送信先は「Any」を指定

STEP
ルートマップによるネクストホップの指定

ルートマップを設定し、対象通信のネクストホップを指定します。

route-map [MAP-NAME] permit 10
 match ip address [ACL-NAME]
 set ip next-hop [NEXT-HOP address]
設定例)ルーター1
route-map PBR-Route permit 10
 match ip address PBR-Host
 set ip next-hop 172.16.2.3

転送先(next-hop)は「ルーター3のIPアドレス」を指定

STEP
適用インターフェースの指定

PBR対象の通信を受信するインターフェースにルートマップを適用します。

interface [INTERFACE-NAME]
 ip policy route-map [MAP-NAME]
設定例)ルーター1
interface GigabitEthernet0/0
 ip policy route-map PBR-Route

受信インターフェス「Gi0/0」に、設定したルートマップを適用

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
STEP
PBRのポリシーに該当しているかチェック
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 → 通常ルーティングで処理することを決定
STEP
通常ルーティングで処理
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
STEP
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: 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で処理することを決定
STEP
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(ポリシーベースルーティング)の説明と設定方法の解説は完了です!

  • URLをコピーしました!
  • URLをコピーしました!
目次