PBR(Policy Based Routing) 설정
정책 기반 라우팅(Policy Based Routing)은 특정 조건에 일치하는 트래픽의 넥스트 홉 IP 주소를 변경하는 데 사용할 수 있습니다. 이는 특정 트래픽 유형에 대해 라우팅 테이블을 무시하고자 할 때 유용합니다. 이 강의에서는 정책 기반 라우팅을 설정하는 방법을 보여드리겠습니다.
설정
사용할 토폴로지는 다음과 같습니다:
위 토폴로지 그림을 살펴보세요. 모든 라우터에 OSPF가 설정되어 있습니다. 모든 곳에서 기가빗 인터페이스를 사용하고 있으므로, R1에서 4.4.4.4로 향하는 트래픽은 일반적으로 R2와 R3 사이에서 로드 밸런싱됩니다. 그러나 R1의 GigabitEthernet 0/3 인터페이스의 Cost를 변경하여 모든 트래픽이 R1 > R2 > R4로 가도록 설정했습니다.
장비 설정
직접 실습해 보고 싶다면, 아래에서 각 장비의 초기 설정을 확인할 수 있습니다.
H1
hostname H1
!
no ip routing
!
no ip cef
!
interface GigabitEthernet0/1
ip address 192.168.1.100 255.255.255.0
!
ip default-gateway 192.168.1.254
!
endR1
hostname R1
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.1.254 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.12.1 255.255.255.0
!
interface GigabitEthernet0/3
ip address 192.168.13.1 255.255.255.0
ip ospf cost 1000
!
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
network 192.168.12.0 0.0.0.255 area 0
network 192.168.13.0 0.0.0.255 area 0
!
endR2
hostname R2
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.12.2 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.24.2 255.255.255.0
!
router ospf 1
network 192.168.12.0 0.0.0.255 area 0
network 192.168.24.0 0.0.0.255 area 0
!
endR3
hostname R3
!
ip cef
!
interface GigabitEthernet0/0
no ip address
!
interface GigabitEthernet0/1
ip address 192.168.13.3 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.34.3 255.255.255.0
!
router ospf 1
network 192.168.13.0 0.0.0.255 area 0
network 192.168.34.0 0.0.0.255 area 0
!
endR4
hostname R4
!
ip cef
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface GigabitEthernet0/1
ip address 192.168.24.4 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.34.4 255.255.255.0
!
router ospf 1
network 4.4.4.4 0.0.0.0 area 0
network 192.168.24.0 0.0.0.255 area 0
network 192.168.34.0 0.0.0.255 area 0
!
end검증
이제 확인해 보겠습니다:
R1#show ip ospf interface GigabitEthernet 0/2 | include Cost:
Process ID 1, Router ID 192.168.13.1, Network Type BROADCAST, Cost: 1R1#show ip ospf interface GigabitEthernet 0/3 | include Cost:
Process ID 1, Router ID 192.168.13.1, Network Type BROADCAST, Cost: 1000위에서 증가된 Cost를 확인할 수 있습니다. H1에서 빠르게 traceroute를 실행해 보겠습니다:
H1#traceroute 4.4.4.4 probe 1
Type escape sequence to abort.
Tracing the route to 4.4.4.4
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.1.254 7 msec
2 192.168.12.2 6 msec
3 192.168.24.4 8 msec이제 4.4.4.4에 도달하기 위해 R1과 R3 사이의 링크를 사용하고 싶다고 가정해 보겠습니다. OSPF의 메트릭을 조정할 수 있지만, 이는 모든 트래픽에 적용됩니다. 특정 트래픽에 대해서만 이 링크를 사용하고 싶다면 어떻게 해야 할까요?
R1/R2 사이의 링크는 대부분의 트래픽에 사용하고, R1/R3 사이의 링크는 특정 트래픽에만 사용할 수 있습니다. 이는 매우 유용할 수 있습니다. 예를 들어, R1/R3 사이의 링크가 VoIP 트래픽을 위한 QoS를 제공하는 전용 링크라고 상상해 보세요.
이것은 PBR(Policy Based Routing)로 달성할 수 있습니다. 방법을 보여드리겠습니다!
PBR 설정 - 통과 트래픽
현재 모든 트래픽은 R2로 전송됩니다:
R1#show ip route | include 4.4.4.4
O 4.4.4.4 [110/3] via 192.168.12.2, 00:16:48, GigabitEthernet0/2이제 H1에서 4.4.4.4로 향하는 모든 ICMP 트래픽이 R1/R3 사이의 링크를 통과하도록 설정하겠습니다. 방법은 다음과 같습니다:
R1(config)#ip access-list extended ICMP_H1
R1(config-ext-nacl)#permit icmp host 192.168.1.100 host 4.4.4.4먼저, 트래픽에 매칭되는 액세스 리스트(Access-List)를 생성합니다. 이제 라우트맵(Route-Map)을 생성해야 합니다:
R1(config)#route-map PBR_H1 permit 10
R1(config-route-map)#match ip address ICMP_H1
R1(config-route-map)#set ip next-hop 192.168.13.3트래픽이 액세스 리스트에 매칭될 때마다 넥스트 홉을 192.168.13.3 (R3)으로 변경합니다.
마지막으로, 이를 활성화합니다:
R1(config)#interface GigabitEthernet 0/1
R1(config-if)#ip policy route-map PBR_H1동작을 확인해 보겠습니다. 실시간으로 확인하기 위해 R1에서 디버그를 활성화합니다:
R1#debug ip policy
Policy routing debugging is on이제 H1에서 핑을 보내겠습니다:
H1#ping 4.4.4.4 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!
Success rate is 100 percent (1/1), round-trip min/avg/max = 13/13/13 ms핑이 동작합니다. R1에서 어떻게 처리되는지 확인해 보겠습니다:
R1#
IP: s=192.168.1.100 (GigabitEthernet0/1), d=4.4.4.4, len 100, FIB policy match
IP: s=192.168.1.100 (GigabitEthernet0/1), d=4.4.4.4, len 100, PBR_H1 Counted
IP: s=192.168.1.100 (GigabitEthernet0/1), d=4.4.4.4, g=192.168.13.3, len 100, FIB policy routed위에서 192.168.13.3으로 정책 라우팅된 것을 확인할 수 있습니다. 라우트맵을 조회하여 이를 검증할 수도 있습니다:
R1#show route-map PBR_H1
route-map PBR_H1, permit, sequence 10
Match clauses:
ip address (access-lists): ICMP_H1
Set clauses:
ip next-hop 192.168.13.3
Nexthop tracking current: 0.0.0.0
192.168.13.3, fib_nh:0,oce:0,status:0
Policy routing matches: 1 packets, 114 bytes액세스 리스트에 매칭되지 않는 트래픽을 테스트해 보겠습니다. 예를 들어 텔넷:
H1#telnet 4.4.4.4
Trying 4.4.4.4 ... OpenH1은 연결할 수 있지만 정책 라우팅되지 않습니다:
R1#
IP: s=192.168.1.100 (GigabitEthernet0/1), d=4.4.4.4, len 40, FIB policy rejected(no match) - normal forwarding위에서 볼 수 있듯이, 이 텔넷 트래픽은 일반 경로를 통해 라우팅됩니다.
PBR 설정 - 로컬 트래픽
한 가지 더 보여드릴 것이 있습니다. 정책 기반 라우팅에서는 라우터를 통과하는 트래픽과 라우터에서 발생하는 트래픽 사이에 차이가 있습니다.
위의 예시는 라우터를 통과하는 트래픽에 대한 것이었습니다. R1에서 발생하는 트래픽을 정책 라우팅하려면 어떻게 해야 할까요? 이를 활성화하기 위해 다른 명령을 사용해야 합니다. 새로운 라우트맵을 생성해 보겠습니다:
R1(config)#ip access-list extended ICMP_R1
R1(config-ext-nacl)#permit icmp host 192.168.12.1 host 4.4.4.4
R1(config-ext-nacl)#permit icmp host 192.168.13.1 host 4.4.4.4R1(config)#route-map PBR_R1 permit 10
R1(config-route-map)#match ip address ICMP_R1
R1(config-route-map)#set ip next-hop 192.168.13.3위 라우트맵은 R1에서 4.4.4.4로 향하는 모든 트래픽을 R3으로 리다이렉트합니다. 이를 활성화하려면 다른 명령을 사용해야 합니다:
R1(config)#ip local policy route-map PBR_R1이번에는 ip local policy 명령을 사용해야 합니다. 테스트해 보겠습니다:
R1#ping 4.4.4.4 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!
Success rate is 100 percent (1/1), round-trip min/avg/max = 19/19/19 msR1#
IP: s=192.168.12.1 (local), d=4.4.4.4, len 100, policy match
IP: route map PBR_R1, item 10, permit
IP: s=192.168.12.1 (local), d=4.4.4.4 (GigabitEthernet0/3), len 100, policy routed
IP: local to GigabitEthernet0/3 192.168.13.3R1에서 발생한 트래픽이 정책 라우팅되었습니다.
결론
이 강의에서는 정책 기반 라우팅(PBR)을 설정하는 방법을 배웠습니다. PBR을 사용하면 특정 조건에 매칭되는 트래픽의 넥스트 홉을 변경하여 라우팅 테이블을 무시할 수 있습니다. 라우터를 통과하는 트래픽에는 인터페이스에서 ip policy route-map 명령을 사용하고, 라우터 자체에서 발생하는 트래픽에는 ip local policy route-map 명령을 사용합니다.