同じインターネット宛でも、社員PCは業務回線、ゲストWi-Fiは別回線へ流したい。宛先IPだけでは区別できない要件で使うのがPBRです。
PBRは、送信元やプロトコルなどの条件に合う通信へ、通常とは別の転送先を指定する仕組みです。経路表を丸ごと置き換える機能ではありません。対象を選び、転送先を決め、入口へ適用するという順で、設定の意味を読み解きます。
PBRは、宛先以外の条件でも経路を選べる
通常のルーティングでは、その経路表にある宛先の経路から出力先を選びます。同じ宛先へ向かう通信を、送信元の部署や用途で分けたいときは、それだけでは判断できません。
PBRでは、条件に合うパケットへ別の次ホップを指定します。次ホップは、最終宛先ではなく、次にパケットを渡す装置です。
| 通常のルーティング | PBR | |
|---|---|---|
| 判断に使う情報 | 宛先IPアドレスのみ | 送信元IP、宛先IP、プロトコル、ポート、パケット長など |
| 参照するもの | ルーティングテーブル | route-map(一致しなければルーティングテーブル) |
| 適用の単位 | 機器全体 | パケットを受信したインターフェース単位 |
| 評価の順序 | ロンゲストマッチ | route-mapのシーケンス番号順(先に一致した行で確定) |
- 送信元別の回線振り分け:ゲストWi-Fiのセグメントだけ、業務回線ではなくインターネット専用回線へ流す
- アプリ別の経路制御:特定の業務システム宛だけ、遅延の小さい専用線を通す
- 検査装置の経由:特定セグメントの通信だけ、プロキシやIPSを必ず経由させる
- 移行期間中の並行運用:一部拠点だけ新回線へ寄せて、問題があれば設定を外して戻す
route-mapに一致しない通信は、通常の経路表による転送へ進みます。すべての通信を別経路へ移すつもりで読むと、対象外の動作を取り違えます。
宛先ごとの経路で要件を満たせるなら、通常のルーティングで済むかを先に考えましょう。PBRを追加すると、入口、条件、障害時の動作を確認する項目が増えます。
ACLで対象を選び、route-mapで次ホップを指定する
例は10.1.10.0/24からの通信を、到達可能な次ホップ172.28.31.1へ送る設定です。まずACLのpermitで対象を選び、route-mapのmatchでそのACLを参照し、setで転送先を指定します。
最後のip policy route-mapは、その通信を受信するインターフェースへ設定します。送信側へ付けても、意図した入口のパケットは評価されません。
! 1. 対象をACLで定義する
Router(config)# ip access-list extended PBR-GUEST
Router(config-ext-nacl)# permit ip 10.1.10.0 0.0.0.255 any
Router(config-ext-nacl)# exit
! 2. route-mapで転送先を指定する
Router(config)# route-map PBR-MAP permit 10
Router(config-route-map)# match ip address PBR-GUEST
Router(config-route-map)# set ip next-hop 172.28.31.1
Router(config-route-map)# exit
! 3. パケットを受信するインターフェースへ適用する
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip policy route-map PBR-MAP
Router(config-if)# end
ルーター自身が作るpingなどは、端末から入口へ来るパケットと別です。自身の通信に適用するlocal policyは、対応機種と設定を確認します。端末の試験をルーターのpingだけで代用しないようにします。
default next-hopは「デフォルトルートがあると無効」ではない
set ip next-hopは、ポリシーで指定した次ホップを優先する使い方です。指定先が利用できない場合の通常転送や到達性の判定は、機種と設定に合わせて確認します。
set ip default next-hopは、宛先への明示的な経路がある場合、その経路を使います。明示的な経路がなく、デフォルトルートだけが一致する場合には、ポリシーで指定した次ホップへ送ります。
| コマンド | 先に確認するもの | 結果 |
|---|---|---|
set ip next-hop |
指定したネクストホップがルーティングテーブルにあるか | あればPBRで転送。無ければ通常のルーティングテーブルで転送 |
set ip default next-hop |
宛先への明示的な経路(デフォルトルート以外)があるか | あればPBRを使わず通常転送。無ければPBRで転送 |
ここは間違えやすいところです。「デフォルトルートがあるから発動しない」とは言えません。Ciscoの比較資料でも、デフォルトルートだけがある構成でPBRが働く例を示しています。
試験では、宛先への個別経路がある場合と、デフォルトルートしかない場合を分けてください。二つのコマンド名が似ていても、経路を優先する条件が違います。
適用先、条件の一致、実際の転送を別々に確認する
show ip policyで入口にroute-mapが付いているかを見ます。次にACLとroute-mapの内容・カウンターを読み、対象の端末から試験通信を発生させます。
一致数が増えない場合は、送信元、ワイルドカード、入口、試験の条件を照合します。一致していても、指定先の隣接状態や先の経路が足りなければ、業務通信は成立しません。
Router# show route-map
Router# show ip policy
Router# show access-lists PBR-GUEST
| コマンド | 見るところ |
|---|---|
show route-map |
match / set の内容と、ポリシーで転送されたパケット数 |
show ip policy |
どのインターフェースにどのroute-mapが適用されているか |
show access-lists |
ACLのヒットカウンタ。増えていなければ対象に一致していない |
- 適用インターフェースが受信側か
送信側に付けていないか。show ip policyで適用先を確認します。 - ACLに一致しているか
show access-listsの機種ごとのカウンタ反映条件を確認し、実際の転送と合わせて見ます。送信元アドレスの範囲、ワイルドカードマスクの桁を確認します。 - ネクストホップに到達できるか
set ip next-hopの基本例では直結の次ホップを指定します。対象機種での利用可否判定と到達性監視の設定を確認し、障害時の転送を実際に試します。 - set ip default next-hop を使っていないか
明示的な経路がある宛先と、デフォルトルートだけの宛先を分けて試します。 - 戻り通信の経路を確認する
行きだけPBRで曲げると、戻りが別経路になって非対称になります。状態管理するFWを別々に通る場合などは、非対称経路が通信失敗の原因になり得ます。
| 試験する通信 | 期待する転送 | 確認するもの |
|---|---|---|
| 送信元10.1.10.0/24に一致、ネクストホップ到達可能 | PBRで指定先へ | ACL・route-mapのヒットと実際の経路 |
| ACLに不一致 | 通常の経路表へ | 宛先経路、戻り経路、ヒット数の変化なし |
| 指定ネクストホップが到達不能 | 機種・設定のフォールバック動作を検証 | 実際の通信、ログ、切り戻し条件 |
カウンターの表示や更新は、ハードウェア転送や機種によって差があります。増えた・増えないだけで原因を確定せず、キャプチャや実際の経路と組み合わせます。
対象に一致する通信と、一致しない通信の両方を試すと、振り分けの境界が分かります。試験前後の時刻と数値を残し、別の通信による増加も区別してください。
戻り経路と、次ホップ障害時の動作も設計する
行きだけ別回線へ送ると、返信が元の回線へ戻る場合があります。経路が非対称でも通信できる構成はありますが、途中のステートフルFWやNATの状態に合わないと失敗します。
行きの矢印と戻りの矢印を別に図へ書き、どの装置を通るかを確認します。PBRが戻り経路も自動的に作るわけではありません。
- 戻り通信をどうするか:対向の経路表とNATの変換条件を確認し、FWの状態管理が必要な往路・復路が同じ装置を通るか試す
- ネクストホップが落ちたときの動作:次ホップの利用可否判定と通常経路への移行を、機種・監視設定に合わせて検証する
- 構成図への書き方:通常経路とポリシー経路を別の線で描く。configだけでは他の人が追えません
- 試験項目:一致する通信と、一致しない通信の両方を試験する。一致しない側が通常経路に乗ることまで確認します
- 切り戻し手順:
no ip policy route-mapをインターフェースから外すだけで戻せるか、ACLも消す必要があるか
指定した次ホップの先が故障しても、隣接リンクだけは生きていることがあります。必要なら到達性監視の仕組みを検討し、検知後にどの経路を使うかを試験します。
切り戻しでは、入口のポリシーを外したあと、通常経路で通信が戻るかを確認します。ACLやroute-mapを削除する場合は、別の設定から参照されていないかも確かめます。
設定の三つの役割を、図と一緒に説明する
ACLは対象、route-mapは判断と転送先、ip policy route-mapは適用する入口。この三つを分けると、PBRの設定を読みやすくなります。
default next-hopを使う場合は、宛先の明示的な経路の有無を確認します。デフォルトルートだけの状態とは区別してください。
最後に、対象外通信、戻り通信、次ホップ故障時の通信まで試します。意図した通信一本が通ることから、振り分け全体が正しく動くことへ確認を広げていきましょう。
