본문 바로가기
네트워크 (LAN,WAN)

PBR - 정책기반 라우팅 설정

by 날으는물고기 2009. 12. 1.

PBR - 정책기반 라우팅 설정

PBR이란? Policy Based Routing
route-map을 이용하여 특정 조건에 해당하는 패킷을 라우팅 테이블과 상관없이 관리자가 원하는 곳으로 전송시키는 기능을 말한다. 
route-map에 해당되지 않는 패킷은 라우팅테이블에 따라 전송된다. PBR을 사용하면 패킷의 출발지 또는 목적지 주소에 따라 원하는 경로를 선택할 수 있기 때문에 경우에 따라 유용하다. 예를 들면 2개의 ISP를 신청중이라면 PBR사용해서 IP에 따라 ISP를 선택 사용할 수 있다.

1. PBR 설정
router(config)# access-list [엑세스리스트넘버] [permit | deny] [네트워크아이디] [외일드마스크]
 (PBR을 적용시킬 패킷을 엑세스리스트를 이용하여 지정)
router(config)# route-map [route-map이름] [permit | deny] [route-map 순서]
 (PBR에서 사용할 루트맵 생성)
router(config-route-map)# match ip address [엑세스리스트 넘버]
 (match 명령어를 사용하여 앞서 만든 엑세스리스트를 지정)
router(config-router-map)# set ip net-hop [route-list 정책이 맞을 경우 패킷을 전송할 아이피]
 (match명령어에 의해 지정된 패킷을 전송할 ip지정, 해당되는 패킷을 전송할 수도 드랍할 수도 있도록 설정 가능)
router(config-router-map)# exit
router(config)# interface [정책을 적용할 패킷이 들어오는 인터페이스]
 (패킷이 유입되는 인터페이스지정)
router(config-if)# ip policy route-map [route-map이름]
 (해당 인터페이스에 루트맵 설치) 

2. PBR 설정 실습
위 토폴로지는 eigrp로 구성되어 있다. 만약 PBR 정책을 적용하지 않는다면 R0에서 172.16.1.0을 패킷이 이동할 때,  R1을 지나 R3로 이동 할 것이다.
왜냐하면 eigrp는 기본적으로 비균등로드를 하지 않기 때문에 가장 빠른 경로를 선택하여 패킷을 전송한다.
        
그러나, route-map을 사용하여 PBR정책을 적용할 경우 라우팅테이블에 올라온 경로를 무시하고 정책대로 패킷의 경로를 지정 할 수 있는데 위 토폴로지에서는 192.168.1.0 /24 네트워크에서 유입되는 패킷을 R2를 경유해서 목적지 172.16.1.0 /24로 도착하게 정책을 설정 하였다.

1) PBR 정책 설정
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
 (엑세스리스트를 사용하여 PBR에 적용시킬 리스트 1번을 만든다)
R1(config)# route-map psk permit 1   (첫번째 라우트맵을 psk란 이름으로 만듬)
R1(config-route-map)# match ip address 1    (엑세스리스트 1번이 유입될 경우.....
R1(config-route-map)# set ip next-hop 192.168.2.2                                           192.168.2.2 홉으로 보냄) 
R1(config-route-map)# exit
R1(config)# interface s1/0
R1(config-if)# ip policy route-map psk   (라우트맵 psk를 패킷이 유입되는 s1/0에 설치)

2) R1의 라우팅 테이블 

3) 192.168.1.0 /24 에서 172.16.1.0 /24로 패킷이 이동하는 결과
 
4) R1에서 debug ip policy 결과

3. PBR을 이용한 선택적인 메트릭 재분배
보통 다른 프로토콜사이에서 재분배를 하다보면 관리자가 직접 재분배로 인하여 외부도메인을 통해서 들어오는 패킷의 메트릭을 지정해야 한다.
그러나 관리자가직접 지정하는 메트릭은 실제로 서브넷마다 메트릭이 달라도 외부도메인에서 볼때 동일하게 적용되는 문제점을 가지고 있다.
그래서 PBR을 이용하여 조건을 지정해 서브넷 별로 메트릭을 다르게 설정할 수 있는데 방법은 다음과 같다.

(2. 번의) 일반적인 PBR설정에서는 유입되는 패킷(인터페이스에 적용설정)에 라우트맵을 적용하는 반면, 재분배에 적용시에는 라우터 설정모드에서 재분배 명령에 첨부하여 적용설정 한다.

    1) 정책설정 (인터페이스 주소 설정 제외)
      R2(config)# access-list 10 permit 199.172.0.0 0.0.2.255
      R2(config)# route-map ripospf permit 1
      R2(config-route-map)# match ip add 10
      R2(config-route-map)# set metric 100
      R2(config-route-map)# set metric-type type-1
      R2(config-route-map)# exit
      R2(config)# route-map ripospf permit 2
      R2(config)# router rip
      R2(config-route)# net 199.172.2.2
      R2(config-route)# net 199.172.1.2
      R2(config-route)# exit
      R2(config)# router ospf 1
      R2(config-route)# net 192.168.1.0 0.0.0.255 area 0
      R2(config-route)# re rip subnets route-map ripospf
      R2(config-route)# exit

      2) R3 (ospf라우터) 라우팅테이블 확인
      
      - R2 (재분배 라우터의 route-map 설정 확인)


1. R2에서 출발지 주소가 1.1.1.1 이고 목적지 주소가 1.1.4.4 인 패킷은 R2에서 S1/0.23 으로 전송하게 하자.
   (원래는 S1/0.32 로만 가게 되어있다. why? S1/0.32 가 bandwidth = 2Mbps 로 더 좋은 회선이기 때문에)

R2#debug ip policy
R2#conf t
R2(config)#ip access-list extended R1=>R4
R2(config-ext-nacl)#permit ip host 1.1.1.1 host 1.1.4.4
R2(config-ext-nacl)#exit
R2(config)#route-map P-R1=>R4
R2(config-route-map)#mat ip add R1=>R4
R2(config-route-map)#set ip next-hop 1.1.23.3
R2(config-route-map)#int s1/0.12
R2(config-subif)#ip policy route-map P-R1=>R4
R2(config-subif)#end
R2#
*Mar  1 00:11:53.759: PR-RP: Set Serial1/0.12 policy_routemap=P-R1=>R4; cached_map=P-R1=>R4
*Mar  1 00:11:53.767: PR-RP: Set Serial1/0.12 policy_routemap=P-R1=>R4; cached_map=P-R1=>R4
*Mar  1 00:12:07.983: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:12:07.983: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, g=1.1.23.3, len 100, FIB policy routed

2. 일반라우팅을 우선 하고 라우팅테이블 경로가 없을때 PBR 적용하게 하기

R2(config)#route-map P1-R1=>R4
R2(config-route-map)#mat ip add R1=>R4
R2(config-route-map)#set ip default next-hop 1.1.23.3

@@@ R1#ping 1.1.4.4 so 1.1.1.1 re 2 @@@

R2(config-subif)#
*Mar  1 00:21:30.919: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:21:30.919: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy rejected(explicit route) - normal forwarding

R2(config)#ip prefix-list BAN-R4 deny 1.1.4.0/24
R2(config)#ip prefix-list BAN-R4 permit 0.0.0.0/0 le 32
R2(config)#
R2(config)#router ospf 1
R2(config-router)#distribute-list prefix BAN-R4 in s1/0.23
R2(config-router)#distribute-list prefix BAN-R4 in s1/0.32
R2(config-router)#do sh ip ro ospf
     1.0.0.0/24 is subnetted, 7 subnets
O       1.1.1.0 [110/65] via 1.1.12.1, 00:00:09, Serial1/0.12
O       1.1.3.0 [110/51] via 1.1.32.3, 00:00:09, Serial1/0.32
O       1.1.34.0 [110/114] via 1.1.32.3, 00:00:09, Serial1/0.32

@@@ R1#ping 1.1.4.4 so 1.1.1.1 re 2 @@@

R2(config-router)#
*Mar  1 00:23:21.759: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:23:21.759: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, g=1.1.23.3, len 100, FIB policy routed

3. PBR 부하분산

R4(config)#int lo 2
R4(config-if)#ip add 2.2.4.4 255.255.255.0
R4(config-if)#ip os ne point-to-p
R4(config-if)#router os 1
R4(config-router)#net 2.2.4.4 0.0.0.0 ar 0

R2(config)#ip access-list extended R1=>R4-2
R2(config-ext-nacl)#permit ip host 1.1.1.1 host 2.2.4.4
R2(config-ext-nacl)#exit
R2(config)#route-map P-LB
R2(config-route-map)#mat ip add R1=>R4
R2(config-route-map)#set ip next-hop 1.1.23.3
R2(config-route-map)#exit
R2(config)#route-map P-LB 20      
R2(config-route-map)#mat ip add R1=>R4-2    
R2(config-route-map)#set ip next-hop 1.1.32.3
R2(config-route-map)#exit
R2(config)#
R2(config)#int s1/0.12
R2(config-subif)#ip policy route-map P-LB

R1#p 1.1.4.4 so lo 0 re 1
*Mar  1 00:32:54.867: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, len 100, FIB policy match
*Mar  1 00:32:54.867: IP: s=1.1.1.1 (Serial1/0.12), d=1.1.4.4, g=1.1.23.3, len 100, FIB policy routed

R1#p 2.2.4.4 so lo 0 re 1
*Mar  1 00:33:04.675: IP: s=1.1.1.1 (Serial1/0.12), d=2.2.4.4, len 100, FIB policy match
*Mar  1 00:33:04.675: IP: s=1.1.1.1 (Serial1/0.12), d=2.2.4.4, g=1.1.32.3, len 100, FIB policy


출처 : http://light99.egloos.com

728x90

댓글