prefix-list와 route-map의 동작 원리
1. prefix-list는 ‘주소를 고르는 조건문’이다
prefix-list는 네트워크 주소를 선택하는 필터(조건문) 역할을 한다.
즉, “어떤 네트워크를 통과시킬지, 막을지”를 정하는 규칙표.
ip prefix-list TEST seq 5 permit 192.168.0.0/16 le 32
이건 “192.168.0.0/16 ~ 192.168.x.x/32 범위 안의 모든 주소를 허용”한다는 뜻이다.
2. 0.0.0.0/0과 0.0.0.0/0 le 32는 완전히 다르다
이 두 개를 같은 뜻으로 착각할 수 있지만, 실제로는 완전히 다르다.
| 명령어 | 의미 | 예시 |
| 0.0.0.0/0 | 기본 경로(Default Route) 하나만 의미 | “모든 트래픽을 한 곳으로 보내라”는 디폴트 게이트웨이 |
| 0.0.0.0/0 le 32 | /0부터 /32까지 모든 네트워크를 전부 포함 | 즉, “세상 모든 네트워크” |
따라서 deny 0.0.0.0/0은 “기본 경로 하나만 차단”이고,
deny 0.0.0.0/0 le 32는 “모든 네트워크 전부 차단”이라는 의미가 된다.
3. route-map은 ‘조건문을 실행하는 순서표’다
route-map은 prefix-list를 실제 정책으로 적용시키는 명령 집합.
route-map SKT-OUT deny 10
match ip address prefix-list SKT-OUT
route-map SKT-OUT permit 100
- prefix-list SKT-OUT에 해당하는 네트워크를 찾아서 deny(차단) 해라.
- 그 밖의 나머지 네트워크들은 permit(허용) 해라.
즉, 첫 번째 줄이 “막을 것”이고, 두 번째 줄이 “나머지 허용”.
4. “permit 100”은 왜 굳이 넣을까?
그 이유는 route-map에는 ‘암묵적인 deny all’ 이 존재하기 때문이다.
만약 아무 조건에도 매칭되지 않으면, 그 경로는 기본적으로 차단된다.
그래서 “나머지는 허용”을 명시적으로 표현하기 위해 마지막에 permit 100을 넣는다.
| 이유 | 설명 |
| 명시적 허용 | “이 route-map은 일부만 차단하고 나머지는 허용한다”는 것을 명확히 표현하기 위해 |
| 미래 확장성 | 나중에 prefix-list 조건을 바꿔도 나머지 네트워크는 자동으로 통과되도록 하기 위해 |
5. 실제 구성 예시별 의미 정리
중요 : match ip address prefix-list는 prefix-list에서 permit된 항목만 매칭한다. (deny는 "매칭되지 않음"을 의미)
예시 A: 디폴트만 허용, 나머지 차단
ip prefix-list SKT-OUT seq 5 deny 0.0.0.0/0
ip prefix-list SKT-OUT seq 10 permit 0.0.0.0/0 le 32
route-map SKT-OUT deny 10
match ip address prefix-list SKT-OUT
route-map SKT-OUT permit 100
- 0.0.0.0/0 → prefix-list에서 deny → route-map 10에 매칭되지 않음 → permit 100에서 허용
- 그 외 모든 경로 → prefix-list에서 permit → route-map 10에서 차단 → 결론: "디폴트만 허용, 나머지 차단" 구조.
예시 B: 디폴트만 차단, 나머지 허용
ip prefix-list SKT-OUT seq 5 permit 0.0.0.0/0
route-map SKT-OUT deny 10
match ip address prefix-list SKT-OUT
route-map SKT-OUT permit 100
- 0.0.0.0/0 → prefix-list에서 permit → route-map 10에서 차단
- 그 외 모든 경로 → prefix-list에 매칭되지 않음 → permit 100에서 허용 → 결론: "디폴트만 차단, 나머지 허용" 구조.
참고: prefix-list에 deny 0.0.0.0/0 le 32 같은 줄을 추가해도 route-map 매칭에는 영향을 주지 않는다(route-map은 prefix-list의 permit만 매칭으로 본다). 따라서 예시 B처럼 디폴트만 permit 한 줄이면 충분하다.
6. 정리 요약
| 구성 요소 | 의미 | 역할 |
| prefix-list | 네트워크 선택 필터 | 어떤 경로를 막거나 허용할지 지정 |
| 0.0.0.0/0 | 기본 경로 하나 | 디폴트 게이트웨이만 의미 |
| 0.0.0.0/0 le 32 | 모든 네트워크 | 전체 주소 범위 의미 |
| route-map deny | 매칭된 네트워크 차단 | prefix-list 조건을 실행함 |
| route-map permit 100 | 나머지 허용 | 암묵적 deny를 방지하고 확장성 확보 |
7. prefix-list 활용
prefix-list를 단독으로 쓰는 경우 → permit/deny가 그대로 “허용 / 차단” 의미
prefix-list를 route-map에 붙여서 쓰는 경우 → permit만 “True(매칭됨)” 으로 간주되고, deny는 “False(매칭 안 됨)” 으로만 해석
즉, 같은 prefix-list라도 적용되는 위치(맥락)에 따라 동작 방식이 다르다는 게 핵심.
1) prefix-list를 단독으로 쓸 때
예를 들어 OSPF나 BGP 필터 명령에 직접 붙이면,
permit과 deny가 그대로 의미를 가진다.

| 경로 | 구분 | 동작 |
| 0.0.0.0/0 | deny | OSPF에서 수용하지 않음 (차단) |
| 나머지 경로(/1~32) | permit | OSPF에서 허용함 (수용) |
즉, prefix-list가 OSPF나 BGP에 직접 걸릴 때는
deny는 진짜 거부, permit은 허용의 의미로 동작한다.
2) prefix-list를 route-map 안에서 쓸 때
prefix-list의 permit/deny 자체가 “허용/차단”을 의미하지 않고,
그냥 “매칭 조건 결과(True/False)” 로만 사용된다.
route-map SKT-OUT deny 10 match ip address prefix-list SKT-OUT
- prefix-list에서 permit된 네트워크 → “match 성공(True)” → route-map이 처리
- prefix-list에서 deny된 네트워크 → “match 실패(False)” → route-map이 무시
즉, 여기서 “차단”할지 “허용”할지는 route-map의 permit/deny가 결정하고,
prefix-list는 단지 “이 네트워크가 해당 조건에 들어오나?”만 판정하는 역할을 한다.