Cisco IOS ルーティング – PBR(Policy Based Routing)の設定方法

スポンサーリンク

Policy Based Routingは送信元アドレスや入力インターフェースなどの複雑な条件に基づいたルーティング機能です。これは通常のスタティックルートやダイナミックルーティングでは充足できない場合に対応する「禁じ手」ですので、実務では濫用を避けましょう。濫用すると、構成把握コストが爆発的に増大し運用が破綻するリスクがあります。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config-route-map)# set ip next-hop <addr>
Router(config-route-map)# set ip default next-hop <addr>

各コマンドの挙動をまとめると以下の通りです。

コマンド 条件 挙動
set ip default next-hop 宛先アドレスがrouting tableに存在する routing tableに基づき転送される
set ip default next-hop 宛先アドレスがrouting tableに存在しない policyに基づき転送される
set ip next-hop next-hopで指定されたI/Fがup状態である policyに基づき転送される
set ip next-hop next-hopで指定されたI/Fがdown状態である routing tableに基づき転送される

構成図

以下の環境で動作確認を行います。検証の都合上、一部のinterfaceのみOSPFを有効にします。

 [ip address]

          192.168.12.0/24     192.168.2.0/24
          e0/0      e0/0      e0/2      e0/2
  +--------+.1      .2+--------+.1    .102+--------+
  |        +----------+        +----------+        |
  |   R1   |          |   R2   |            Host2  |
  |        +----------+        +----------+        |
  +--------+.1      .2+--------+.1    .102+--------+
          e0/1      e0/1      e0/3      e0/3
          192.168.21.0/24     192.168.22.0/24

 R1 Loopback0       R2 Loopback0
 10.1.1.1/32        10.2.2.2/32

 [ospf interface]


          192.168.12.0/24     192.168.2.0/24
          e0/0      e0/0      e0/2      e0/2
  +--------+.1      .2+--------+.1    .102+--------+
  |        +----------+        +----------+        | 
  |   R1   |          |   R2   |          | Host2  | 
  |        |          |        |          |        | 
  +--------+          +--------+          +--------+

 R1 Loopback0       R2 Loopback0
 10.1.1.1/32        10.2.2.2/32
 [R1]
router ospf 1
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.12.1 0.0.0.0 area 0
 network 192.168.21.1 0.0.0.0 area 0

 [R2]
router ospf 1
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.2.2 0.0.0.0 area 0
 network 192.168.12.2 0.0.0.0 area 0

 [Host2]
ip route 0.0.0.0 0.0.0.0 192.168.2.2

設定全文は下記ファイルです。

R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.21.1 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.12.1 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.21.2 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.2.2 255.255.255.0
 half-duplex
!
interface Ethernet0/3
 ip address 192.168.22.2 255.255.255.0
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.2.2 0.0.0.0 area 0
 network 192.168.12.2 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
Host2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Host2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 ip address 192.168.2.102 255.255.255.0
 half-duplex
!
interface Ethernet0/3
 ip address 192.168.22.102 255.255.255.0
 half-duplex
!
!
ip http server
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.168.2.2
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

Policy Based Routing

default next-hop

“set ip default next-hop”はルーティングテーブルで転送先が定義されていない場合のnex-hopの設定です。動作確認のため、以下設定をR1に投入します。

 [R1]
route-map RMAP_PBR permit 10
 set ip default next-hop 192.168.21.2
!
ip local policy route-map RMAP_PBR

R1のルーティングテーブルは以下のようになっております。192.168.2.0/24は知っていますが、192.168.22.0/24は知らない状態になっています。

 [R1]
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
C    192.168.21.0/24 is directly connected, Ethernet0/1
     10.0.0.0/32 is subnetted, 2 subnets
O       10.2.2.2 [110/11] via 192.168.12.2, 00:11:10, Ethernet0/0
C       10.1.1.1 is directly connected, Loopback0
O    192.168.2.0/24 [110/20] via 192.168.12.2, 00:11:10, Ethernet0/0
R1#

ルーティングテーブルによって宛先を知っている192.168.2.102の場合は、ルーティングテーブルによって転送されている事が分かります。一方、ルーティングテーブルに存在しない192.168.22.102の場合は、Policy Based Routingによって転送されている事が分かります。

 [R1]
R1#traceroute 192.168.2.102

Type escape sequence to abort.
Tracing the route to 192.168.2.102

  1 192.168.12.2 60 msec 104 msec 4 msec
  2 192.168.2.102 8 msec *  24 msec
R1#
R1#
R1#
R1#traceroute 192.168.22.102

Type escape sequence to abort.
Tracing the route to 192.168.22.102

  1 192.168.21.2 56 msec 76 msec 48 msec
  2 192.168.22.102 28 msec *  84 msec
R1#

next-hop

“set ip next-hop”はnext-hopとなるinterfaceがup状態である場合のみ、Policyに基づいて転送します。動作確認のため、以下設定をR1に投入します。

 [R1]
no ip local policy route-map RMAP_PBR
no route-map RMAP_PBR
!
route-map RMAP_PBR permit 10
 set ip next-hop 192.168.21.2
!
ip local policy route-map RMAP_PBR

next-hopとなるinterfaceがupの状態では、Policyに基づいて転送される事が分かります。

 [R1]
R1#traceroute 192.168.2.102

Type escape sequence to abort.
Tracing the route to 192.168.2.102

  1 192.168.21.2 32 msec 40 msec 8 msec
  2 192.168.2.102 24 msec *  16 msec
R1#

next-hopとなるinterfaceがdownの状態では、Policyではなくルーティングテーブルに基づいて転送される事が分かります。

 [R1]
R1(config)#int e0/1
R1(config-if)#shut
R1(config-if)#^Z
R1#
*Mar  1 00:01:56.639: %SYS-5-CONFIG_I: Configured from console by console
*Mar  1 00:01:57.219: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down
R1#
*Mar  1 00:01:58.219: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down
R1#
R1#
R1#traceroute 192.168.2.102

Type escape sequence to abort.
Tracing the route to 192.168.2.102

  1 192.168.12.2 40 msec 12 msec 4 msec
  2 192.168.2.102 12 msec *  36 msec
R1#
タイトルとURLをコピーしました