【概要】
PBR(Policy Based Routing)
PBRは多くの場合、ルーティングテーブルに従わないルーティングを行うために利用します。
具体的には・・・
- Aのトラフィックは経路1(ルーティングテーブルに従う)
- Bのトラフィックは経路2(ルーティングテーブルに従わず、PBRに従う)
ルーティングテーブルとPBRの処理順番は以下の通りで、PBRはルーティングテーブルより先に
処理される事に起因します。
引用元:https://www.cisco.com/c/ja_jp/support/docs/ip/network-address-translation-nat/6209-5.html
NW構成 (Cisco CML利用)
ルーティング設定状況
全ルータ(R1~R5)はOSPFでルーティングしています。
OSPF Costを設定し、正常時以下の経路になるようにします。
- PC1 -> R1 -> R2 -> R5 -> PC3
- PC2 -> R1 -> R2 -> R5 -> PC3
R1#show ip route
O 5.5.5.0 [110/205] via 10.12.1.2, 00:52:44, GigabitEthernet0/1
Config
R1-config <click!>
hostname R1 ! interface GigabitEthernet0/0 ip address 192.168.1.254 255.255.255.0 ip policy route-map R-MAP ip ospf cost 5 ! interface GigabitEthernet0/1 ip address 10.12.1.1 255.255.255.0 ip ospf cost 100 ! interface GigabitEthernet0/2 ip address 10.13.1.1 255.255.255.0 ip ospf cost 200 ! interface GigabitEthernet0/3 ip address 10.14.1.1 255.255.255.0 ip ospf cost 300 ! router ospf 1 passive-interface GigabitEthernet0/0 network 0.0.0.0 255.255.255.255 area 0 ! ip access-list extended PBR permit ip host 192.168.1.100 host 5.5.5.5 ! route-map R-MAP permit 10 match ip address PBR set ip next-hop 10.13.1.3 ! control-plane ! end
R2-config<click!>
hostname R2 ! interface GigabitEthernet0/0 ip address 10.12.1.2 255.255.255.0 ip ospf cost 10 ! interface GigabitEthernet0/1 ip address 10.25.1.2 255.255.255.0 ip ospf cost 100 ! router ospf 1 network 0.0.0.0 255.255.255.255 area 0 ! control-plane ! end
R3-config<click!>
hostname R3 ! interface GigabitEthernet0/0 ip address 10.13.1.3 255.255.255.0 ip ospf cost 10 ! interface GigabitEthernet0/1 ip address 10.35.1.3 255.255.255.0 ip ospf cost 100 ! router ospf 1 network 0.0.0.0 255.255.255.255 area 0 ! control-plane ! end
R4-config<click!>
hostname R4 ! interface GigabitEthernet0/0 ip address 10.14.1.4 255.255.255.0 ip ospf cost 10 ! interface GigabitEthernet0/1 ip address 10.45.1.4 255.255.255.0 ip ospf cost 100 ! router ospf 1 network 0.0.0.0 255.255.255.255 area 0 ! control-plane ! end
R5-config<click!>
hostname R5 ! interface GigabitEthernet0/0 ip address 5.5.5.254 255.255.255.0 ip ospf cost 5 ! interface GigabitEthernet0/1 ip address 10.25.1.5 255.255.255.0 ip ospf cost 100 ! interface GigabitEthernet0/2 ip address 10.35.1.5 255.255.255.0 ip ospf cost 200 ! interface GigabitEthernet0/3 ip address 10.45.1.5 255.255.255.0 ip ospf cost 300 ! router ospf 1 passive-interface GigabitEthernet0/0 network 0.0.0.0 255.255.255.255 area 0 ! control-plane ! end
PBR設定の概要
最低限、以下 ①~③の設定が必要になります。
① PBRを適用するトラフィックをACLで定義する。 ip access-list extended PBR permit ip host 192.168.1.100 host 5.5.5.5
② route-mapでACLにマッチしたトラフィックのNext-hopを定義する route-map R-MAP permit 10 match ip address PBR set ip next-hop 10.13.1.3
③ Inboundのインターフェイスにpolicy route-mapを定義する interface GigabitEthernet0/0 ip policy route-map R-MAP
[set ip next-hop] を設定した結果
上記のPBRを設定すると、PC1とPC2で経路が変わります。
PBR設定無し
PC1 -> R1 -> R2 -> R5 -> PC3
PC2 -> R1 -> R2 -> R5 -> PC3
PBR設定有り
PC1 -> R1 -> R3 -> R5 -> PC3
PC2 -> R1 -> R2 -> R5 -> PC3
R1ルーティングテーブル
R1#show ip route ospf Gateway of last resort is not set 5.0.0.0/24 is subnetted, 1 subnets O 5.5.5.0 [110/205] via 10.12.1.2, 00:28:51, GigabitEthernet0/1
PC1のトレースルート
PC1:~$ traceroute 5.5.5.5 traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets 1 192.168.1.254 (192.168.1.254) 7.731 ms 3.174 ms 4.699 ms 2 10.13.1.3 (10.13.1.3) 10.422 ms 13.988 ms 12.895 ms 3 10.35.1.5 (10.35.1.5) 13.648 ms 15.332 ms 15.021 ms 4 5.5.5.5 (5.5.5.5) 8.396 ms 9.369 ms 6.720 ms
PC2のトレースルート
PC2:~$ traceroute 5.5.5.5 traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets 1 192.168.1.254 (192.168.1.254) 3.776 ms 5.802 ms 3.790 ms 2 10.12.1.2 (10.12.1.2) 10.321 ms 8.156 ms 7.954 ms 3 10.25.1.5 (10.25.1.5) 12.938 ms 16.911 ms 14.564 ms 4 5.5.5.5 (5.5.5.5) 21.267 ms 7.397 ms 7.567 ms
showコマンド
PBR設定の概要 ①~③で設定した内容をshow コマンドで確認します。
① トラフィックがACLにマッチしているか
R1#show ip access-lists PBR
Extended IP access list PBR
10 permit ip host 192.168.1.100 host 5.5.5.5 (28 matches)
② route-mapの設定内容を確認
R1#show route-map R-MAP route-map R-MAP, permit, sequence 10 Match clauses: ip address (access-lists): PBR Set clauses: ip next-hop 10.13.1.3 Policy routing matches: 28 packets, 1832 bytes
③ 適切なInboundにroute-mapが適用されているか
R1#show ip policy
Interface Route map
Gi0/0 R-MAP
debu ip policy
debugコマンドを設定する事により、route-mapにマッチしたログがR1で残ります。
R1#debug ip policy Policy routing debugging is on *Mar 3 07:49:22.133: IP: s=192.168.1.100 (GigabitEthernet0/0), d=5.5.5.5, len 84, FIB policy match *Mar 3 07:49:22.133: IP: s=192.168.1.100 (GigabitEthernet0/0), d=5.5.5.5, len 84, PBR Counted *Mar 3 07:49:22.133: IP: s=192.168.1.100 (GigabitEthernet0/0), d=5.5.5.5, g=10.13.1.3, len 84, FIB policy routed
set ip next-hop verify-availability 【有り】と【無し】
route-map R-MAP permit 10
match ip address PBR
set ip next-hop 10.13.1.3
set ip next-hop verify-availability
[set ip next-hop verify-availability]は文字通りnext-hopアドレスを監視します。
-
- verify-availability設定無し
10.13.1.3のIFがdownした場合
⇒通信が不可になります。 - verify-availability設定有り
10.13.1.3のIFがdownした場合
⇒PBRのルーティングを止め、ルーティングテーブルに従って通信する。
- verify-availability設定無し
set ip next-hop verify-availability 有り/無しの検証
R3 10.13.1.3 のIFをshutdownで確認
verify-availability 有り(正常時)
PBRに従ってルーティングする
PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
1 192.168.1.254 (192.168.1.254) 5.463 ms 9.920 ms 7.423 ms
2 10.13.1.3 (10.13.1.3) 11.866 ms 16.311 ms 15.378 ms
3 10.35.1.5 (10.35.1.5) 12.613 ms 6.497 ms 4.548 ms
4 5.5.5.5 (5.5.5.5) 5.426 ms 53.563 ms 12.796 ms
verify-availability 有り(R3 10.13.1.3 のIFをshutdown)
[set ip next-hop 10.13.1.3] 10.13.1.3がDownしたため、PBRを止め、ルーティングテーブルに従ってルーティング
PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
1 192.168.1.254 (192.168.1.254) 3.987 ms 3.237 ms 3.422 ms
2 10.12.1.2 (10.12.1.2) 4.637 ms 9.965 ms 9.461 ms
3 10.25.1.5 (10.25.1.5) 14.592 ms 12.007 ms 15.086 ms
4 5.5.5.5 (5.5.5.5) 13.235 ms 6.024 ms 7.488 ms
verify-availability 無し(正常時)
PBRに従ってルーティングする
PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
1 192.168.1.254 (192.168.1.254) 5.463 ms 9.920 ms 7.423 ms
2 10.13.1.3 (10.13.1.3) 11.866 ms 16.311 ms 15.378 ms
3 10.35.1.5 (10.35.1.5) 12.613 ms 6.497 ms 4.548 ms
4 5.5.5.5 (5.5.5.5) 5.426 ms 53.563 ms 12.796 ms
verify-availability 無し(R3 10.13.1.3 のIFをshutdown)
PC1:~$ traceroute 5.5.5.5 traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets 1 192.168.1.254 (192.168.1.254) 3.018 ms 4.978 ms 5.839 ms 2 * * * 3 * * *
【内部から外部へ】