engineering/Network Eng.2006. 8. 10. 15:37
Tip! Tip! Tip!은 싸이버정보통신에서 네트워크 엔지니어로 종사하고 있는 박상철(zesum@cyberinfocomm.com)씨가 현업에서의 경험을 공유하고, 실무에 적용할 수 있는 정보를 제공하고자 마련한 것입니다. 네트워크와 관련된 많은 문서와 서적이 있지만 단순히 이론적인 측면에 많이 치우쳐져 있습니다. 이 코너는 현장에서 일하는 엔지니어와 네트워크 관리자들이 필요로 하는 살아있는 지식을 전달하는 역할을 할 것입니다.

박상철 | 싸이버정보통신 네트워크 엔지니어

라우터에서 액세스 리스트는 패킷 필터링, QoS, 라우팅 프로토콜 관련 정책 등 다방면으로 사용된다. 그런데, 액세스 리스트를 사용하다 보면 한가지 불만이 생긴다. 왜 액세스 리스트는 이해하기 편한 서브넷 마스크를 사용하지 않고 어렵고 복잡한 와일드카드 마스크를 이용할까. 이 문제에 대해 우스게 소리로, 한 친구는 "액세스 리스트를 잘못 설정하면 네트워크에 큰 영향을 끼칠 수 있기 때문에 일부러 어렵게 만들어서 네트워크를 잘 모르는 사람은 아예 사용할 수 없도록 하기 위해서"라고 하기도 했다.
액세스 리스트가 서브넷 마스크 대신 와일드카드 마스크를 고집하는 데는 분명 이유가 있을 것이다. 하지만 네트워크 교재나 기술 문서를 아무리 찾아봐도 이 부분에 대해 언급한 내용은 없었다. 예전에 뉴스그룹에서 이것에 대해 토론 공방이 있었는데 그 중에서 가장 신빙성이 있고 현실적으로 피부에 와닿는 내용이 있어서 대략적으로 정리해보도록 하겠다.

액세스 리스트는 필수적으로 갖춰야 할 조건이 있다. 여러 조건이 있겠지만, 그 중에서  가장 기본이 되는 것은 구현할 수 있는 방법이 많아야 되고 효율적이어야 한다는 것이다. 만약 서브넷 마스크를 이용하면 구현할 수 있는 방법이 몇 가지 밖에 안되지만, 와일드 카드 마스크를 이용하면 그것의 몇 배 혹은 몇 십배 이상 많다면 어떨까? 그리고 서브넷 마스크를 이용하면 수십, 수백 줄의 라인이지만, 와일드카드 마스크를 이용하면 단 몇 줄로 줄어든다고 한다면 어떨까?
당연히 액세스 리스트의 라인 갯수가 줄어들면 CPU가 처리해야 될 양이 줄어들고 절약도 된다. 그리고 관리자가 세팅해야 될 환경설정이 수십 줄 줄어든다면, 네트워크 관리자도 오히려 더 편할 것이다. 추측하건데 이 같은 여러 가지 점을 고려할 때 와일드카드 마스크를 사용하지 않았을까 한다.
다음 두 가지 상황에 대해 서브넷 마스크를 이용해 구현하는 방법과 와일드카드 마스크를 이용해 구현하는 방법을 비교해 보자.


[1] 짝수 번호만 필터링하는 예제(100.100.100.0/24 기준)


(1) 서브넷 마스크(약 120여 줄)


access-list 100 deny ip 100.100.100.2 255.255.255.255
access-list 100 deny ip 100.100.100.4 255.255.255.255
access-list 100 deny ip 100.100.100.6 255.255.255.255
...
...
access-list 100 deny ip 100.100.100.250 255.255.255.255
access-list 100 deny ip 100.100.100.252 255.255.255.255
access-list 100 deny ip 100.100.100.254 255.255.255.255   
access-list 100 permit ip any any


(2) 와일드카드 마스크(2줄)


access-list 101 deny ip 100.100.100.0 0.0.0.254
access-list 101 permit ip any any
    
짝수 번호의 특징은 마지막 비트(32번째)가 모두 0이라는 점이다.


(표 1)에서 보듯이 첫번째 비트부터 31번째 비트에는 어떤 수가 와도 괜챦다(don't care)는 것이다. 이것은 와일드카드 마스크의 개념인 don't care bit(그림에서 x로 표시)에 아주 적합한 내용이다.


[2] 좀 더 범위를 크게 잡아 보도록 하자


전체 IP 100.100.0.0/16, 각 서브넷은 C클래스 디폴트(255.255.255.0)를 사용, 각 서브넷의 디폴트 게이트웨이(라우터) IP 어드레스는 모두 1번임, 모든 네트워크(255개)에서 각 네트워크의 디폴트 게이트웨이 IP 어드레스인 100.100.x.1으로 들어오는 패킷을 막고 나머지를 모두 허용하는 경우


(1) 서브넷 마스크(약 250여 줄)
             
access-list 100 deny ip any 100.100.1.1 255.255.255.255
access-list 100 deny ip any 100.100.2.1 255.255.255.255
...
...
access-list 100 deny ip any 100.100.253.1 255.255.255.255
access-list 100 deny ip any 100.100.254.1 255.255.255.255
access-list 100 permit ip any any


(2) 와일드카드 마스크(2줄)


access-list 101 deny ip any 100.100.255.1 0.0.255.0 
access-list 101 permit ip any any


서브넷 마스크는 불연속적인 0과 1을 사용하지 못하지만, 와일드카드 마스크는 불연속적인 0과 1을 허용하는 것이 가장 큰 차이점이다. 결론적으로 각 비트를 펼쳐 놓고 이것은 x(don't care 비트)로 표현하면 이것이 결국은 와일드카드 마스크로 축약된다는 것이다.

Posted by theYoungman