본문 바로가기

Ryu's Tech

Prefix-list [ Route Filtering ]

이번엔 ip prefix-list를 이용해서 Route Filtering을 해보도록 하겠습니다.

IP prefix list는 두가지 구성을 할 수 있습니다.
  • The Route Prefix [ subnet number ]
  • The Prefix Length [ subnet mask ]

거의 ACL로 했던 부분과 흡사하니 어려울 것 없습니다.

ip prefix-list list-name [seq seq-value] {deny | permit prefix/prefixlength}[ge ge-value] [le le-value]

조금 복잡해 보이지만 알고 나면 간단합니다.


Prefix List Parameter      Range of Prefix Length
Neither                    conf-length must = route-length
Both                       ge and le ge-value <= route-length <= le-value
Only le                    conf-length <= route-length <= le-value
Only ge                    ge-value <= route-length <= 32



위의 그림을 한 번 보시길 바랍니다.
ip prefix-list ryu deny 10.0.0.0/8 ge 20 le 22

ge 는 20보다 큰 le 는 22보다 작은 것을 의미하는 것입니다.
앞의 10.0.0.0/8 은 그것을 기준으로 해서 뒤의 ge, le등을 이용해서 더 자세한 범위를 설정해 주는 것입니다.


1. 10.0.0.0/8
2. 10.128.0.0/9
3. 10.1.1.0/24
4. 10.1.2.0/24
5. 10.128.10.4/30
6. 10.128.10.8/30

위의 6개 서브넷을 보도록 하겠습니다.

10.0.0.0/8 ge 9
위를 사용한다면 prefix 9부터 전부 사용하므로,
2~6번까지 모두 포함이 되겠네요.

10.0.0.0/8 ge 24 le 24
이는, prefix 24를 의미하죠 그렇다면 3,4 번 서브넷이 포함되겠네요.

10.0.0.0/8 le 28
말그대로 prefix 8~28 이므로, 1,2,3,4 번 서브넷이겠네요.

0.0.0.0/0
이는 아무것도 포함하지 않습니다.

0.0.0.0/0 le 32
이렇게 해야 모든 서브넷을 포함하는 prefix-list가 됩니다.



한가지 예를 만들어 보겠습니다.


!
interface Loopback0
 ip address 10.0.0.1 255.0.0.0
!        
interface Loopback1
 ip address 20.20.20.1 255.255.255.0
!
interface Loopback2
 ip address 30.30.0.1 255.255.0.0
!
interface Serial1/0
 ip address 192.168.1.2 255.255.255.0
 serial restart-delay 0
!
router eigrp 100
 network 10.0.0.0
 network 20.20.20.0 0.0.0.255
 network 30.30.0.0 0.0.255.255
 network 192.168.1.0
 no auto-summary
!

위와 같이 설정을 했습니다.

그렇다면 R1에서는
     20.0.0.0/24 is subnetted, 1 subnets
D       20.20.20.0 [90/2297856] via 192.168.1.2, 00:00:21, Serial1/0
D    10.0.0.0/8 [90/2297856] via 192.168.1.2, 00:00:26, Serial1/0
C    192.168.1.0/24 is directly connected, Serial1/0
     30.0.0.0/16 is subnetted, 1 subnets
D       30.30.0.0 [90/2297856] via 192.168.1.2, 00:00:06, Serial1/0

위와 같이 라우팅 정보가 넘어 오겠지요.




그렇다면 이제 R2에서
R2(config-router)#distribute-list prefix RYU out

이렇게 설정을하고 prefix-list를 만들어보겠습니다.
R2#sh ip prefix-list
ip prefix-list RYU: 2 entries
   seq 5 deny 30.0.0.0/8 le 16
   seq 100 permit 0.0.0.0/0 le 32
R2#


     20.0.0.0/24 is subnetted, 1 subnets
D       20.20.20.0 [90/2297856] via 192.168.1.2, 00:01:27, Serial1/0
D    10.0.0.0/8 [90/2297856] via 192.168.1.2, 00:01:27, Serial1/0

이렇게 30.30.0.0 네트워크가 제외된 것을 볼 수 있습니다. 그렇다면 하나를 더 해보겠습니다.

ip prefix-list RYU: 3 entries
   seq 5 deny 30.0.0.0/8 le 16
   seq 10 deny 20.0.0.0/8
   seq 100 permit 0.0.0.0/0 le 32
R2#

이번엔 20.0.0.0/8을 추가했습니다.
하지만 라우팅 정보는  20.0.0.0/24 이군요. 기존의 ACL을 생각하면 이는 필터링 되는 것이 맞겠죠.
     20.0.0.0/24 is subnetted, 1 subnets
D       20.20.20.0 [90/2297856] via 192.168.1.2, 00:00:00, Serial1/0
D    10.0.0.0/8 [90/2297856] via 192.168.1.2, 00:00:00, Serial1/0
C    192.168.1.0/24 is directly connected, Serial1/0
R1#
하지만 prefix-list에서는 필터링 되지 않습니다. 정확하게 맞는 prefix만을 필터링 하는 것이죠.

이번엔
ip prefix-list RYU: 3 entries
   seq 5 deny 30.0.0.0/8 le 16
   seq 10 deny 20.0.0.0/8 le 24
   seq 100 permit 0.0.0.0/0 le 32

이렇게 설정을 해 보겠습니다.
기존의 20.0.0.0 에 le 24를 추가한 것이죠

D    10.0.0.0/8 [90/2297856] via 192.168.1.2, 00:00:01, Serial1/0
C    192.168.1.0/24 is directly connected, Serial1/0

이제는 prefix에 포함이 되기 때문에 역시나 필터링 된 것을 볼 수 있습니다.


마지막으로 정리하면 Prefix-list는 ACL보다 좀 다른 필터링을 구현할 수 있습니다.
굳이 따지자면 summarize 된 주소를 필터링하는데 유용하다고 말할 수 있겠네요

10.10.0.0 /16 의 네트워크가 있을 때

ACL에서의 10.0.0.0 / 8 은 위 네트워크를 포함합니다.
하지만 prefix-list에서는 뒤의 prefix가 다르므로, 위 주소를 포함하지 않습니다.

이 두가지 차이를 아시면 prefix-list를 이해하셨다고 보시면됩니다.

그리고, ACL에서와 마찬가지로
permit 0.0.0.0/0 le 32
를 이용해서 나머지 전부를 허용해 주는 것은 이렇게 한다는걸 꼭 기억하시길 바랍니다.