액세스 리스트(Access List) (2) - 스탠더드 액세스 리스트
이번 시간에는 저번 시간에 이어 액세스 리스트에 대하여 알아볼 건데 액세스 리스트 중 스탠더드 액세스 리스트에 대하여 알아보도록 하겠습니다.
스탠더드 액세스 리스트는 저번 시간에 말씀드린대로 오직 출발지 주소만을 참고하며 인터페이스에 IN과 OUT으로 구성됩니다.
스탠더드 액세스 리스트의 흐름은 다음과 같습니다.
1) 라우터의 인터페이스로 패킷이 들어옴
2-1) 인터페이스에 액세스 리스트가 설정되어 있지 않다면 바로 통과
2-2) 인터페이스에 액세스 리스트가 설정되어 있다면 액세스 리스트에 들어있는 주소와 들어온 패킷의 출발지 주소를 비교
3) 주소가 일치하면 액세스 리스트를 적용
4-1) 액세스 리스트의 조건이 Deny일 경우 패킷의 흐름을 막은 후 'host unreachable'라는 ICMP 메시지를 보냄
4-2) 액세스 리스트의 조건이 Permit일 경우 정해진 경로로 내보냄
자 그럼 위와 같은 흐름을 네트워크에 적용시켜 보도록 하겠습니다.
그 전에 명령어에 대하여 알아볼 텐데 액세스 리스트의 명령어는 다음과 같습니다.
Router(config)# access-list [access-list-number] {permit | deny} {source [source-wildcard]} | any}
access-list 입력 후 1~99 범위의 액세스 리스트 번호를 넣어줍니다.
그 다음은 permit인지 deny인지 결정한 후 출발지 주소 or 출발지 네트워크를 적습니다.
그 뒤는 와일드카드 마스크를 적는데 만약 와일드카드 마스크를 생략했다면 와일드카드 마스크가 0.0.0.0인 경우입니다.
와일드카드 마스크는 네트워크가 아닌 호스트를 지칭할 때 0.0.0.0을 사용합니다.
와일드카드 마스크의 경우는 OSPF 시간에 배웠던것 같은데 서브넷 마스크의 1과 0을 뒤집어 버린 값이 와일드카드 마스크입니다. 즉 1 -> 0, 0 -> 1로 바꾸면 됩니다.
만약에 출발지 주소를 넣지 않고 any라고 작성했을 경우 모든 주소가 포함됩니다.
예를 들어서
Router(config)# access-list 10 permit 192.123.123.0 0.0.0.255
위의 경우는 192.123.123.0 네트워크의 액세스 리스트를 허가한다는 뜻입니다. 반대로
Router(config)# access-list 10 deny any
위의 경우는 모든 네트워크를 막아버린다는 뜻입니다.
이렇듯 액세스 리스트 명령을 입력했다면 인터페이스에 적용해야 합니다.
Router(config-if)# ip access-group [access-list-number] {in | out}
ip access-group를 입력해주신 후 액세스 리스트 번호를 입력하고 in인지 out인지를 정해줍니다.

위 네트워크 구성을 가지고 액세스 리스트 실습을 해보겠습니다.
위 구성은 OSPF를 사용하고 있으며 현재 모든 통신에는 이상이 없습니다.
여기서 다음과 같은 조건을 만족시키려 합니다.
1) PC 3번은 PC 1번에 접속할 수 없다
2) PC 4번을 제외한 10.10.3.0 네트워크의 모든 PC는 PC 2에 접속할 수 있다
먼저 1번을 수행해보겠습니다.
라우터 A에 접속하여 우리가 배운데로
Router-A(config)# access-list 10 deny 10.10.3.1
Router-A(config)# interface fa 0/0
Router-A(config-if)# ip access-group 10 out
명령어를 입력합니다.
액세스 리스트 번호는 범위안의 숫자 중 하나인 10을 임의로 넣었고 PC 3번을 접속할 수 없게 만드는 것이기 때문에 deny를 사용했으며 3번 PC의 IP 입력 후 와일드 마스크를 입력해야 하나 호스트이기 때문에 생략합니다.
그후 인터페이스에 접속하여 ip access-group 명령을 사용해주는데 라우터 기준으로 PC 1로 가는 PC 3의 접근을 막는 것이기 때문에 in이 아닌 out을 써야 합니다.
물론 라운터의 이더넷 인터페이스가 아닌 Se0/1 포트에서 들어오는 정보로 하여금 막을 수도 있습니다.
즉 Fa0/0이 아닌 Se0/1 인터페이스에 접근하여 out이 아닌 in으로 명령어를 내릴 수도 있습니다.
결과론적으로 보면 PC 3이 PC 1로 가는 통신이 불가능해지는 것은 맞으나 PC 3이 라우터와도 통신할 수 없게 됩니다.
따라서 위 문제대로라면 라우터의 이더넷 인터페이스에서 막는것이 맞습니다.
자 명령을 입력한 후 PC 3번에서 PC 1번으로 핑을 보내니 핑이 보내지지 않는 것을 확인했습니다.
목표는 달성하였으나 혹시 몰라 PC 4번에서 PC 1번으로 핑을 보내니 이상하게도 핑이 가지를 않습니다.
왜그럴까요?
우리는 여기서 저번 시간에 배웠던 3가지 규칙 중 2번째를 기억해야 합니다.
2. 액세스 리스트의 맨 마지막에 line에 "permit any"를 넣지 않을 경우는 default로, 어느 액세스 리스트도 match 되지 않은 나머지 모든 address는 deny 된다.
라고 했었는데요 간단히 말씀드리면 내가 입력한 것을 제외한 모든 접근은 deny 상태가 된다고 했습니다.
즉 PC 3번이 PC 1번과 통신이 불가능하게 되는 것은 물론이고 그밖에 설정하지 않은 모든 네트워크의 통신을 deny 한다 라는 뜻입니다.
그렇기에 PC 2, PC 3, PC 4번 모두 PC 1번에게 통신할 수 없습니다.
따라서 우리는 각 네트워크들을 일일이 permit 하거나 아니면 any 명령어를 사용해야 합니다.
Router-A(config)# access-list 10 deny 10.10.3.1
Router-A(config)# access-list 10 permit any
Router-A(config)# interface fa 0/0
Router-A(config)# ip access-group 10 out
위처럼 명령어를 입력하셔야 나머지 PC들은 통신이 되는 것을 확인할 수 있습니다.
여기서 permit any를 나중에 사용하면 PC 3번도 통신이 되는 거 아니냐?라고 말씀하실 수도 있지만 규칙 1번을 보시면
1. 액세스 리스트는 윗줄부터 하나씩 차례로 수행된다.
즉 위에 있는 access-list 10 deny 10.10.3.1 가 먼저 적용이 됐기 때문에 PC 3은 통신이 불가능합니다.
자 그러면 이번에는 두 번째 목표인 PC 4번을 제외한 10.10.3.0 네트워크의 모든 PC는 PC 2에 접속할 수 있다를 적용시켜 보겠습니다.
목적지는 PC 2번이니 당연히 라우터 B에 이더넷 인터페이스에서 작업을 해줍니다.
Router-B(config)# access-list 20 deny 10.10.3.2 PC 4번의 통신을 거부
Router-B(config)# access-list 20 permit any 모든 통신을 허용
Router-B(config)# interface Fa 0/0
Router-B(config)# ip access-group 20 out 라우터를 기준으로 라우터에서 PC 쪽으로 나가는 것이니 OUT
자 이렇게 스탠더드 액세스 리스트에 대해서도 알아봤습니다.
명령어를 숙지하는 것은 당연이고 몇 가지만 주의하시면 됩니다.
계속해서 말씀드리지만 액세스 리스트를 사용할 라우터는 목적지에서 가장 가까운 라우터를 사용하며 항상 deny all이라는 명령어는 디폴트 값이다 이 2가지는 꼭 주의하셔야 합니다.
다음 시간에는 익스텐디드 액세스 리스트에 대하여 알아보도록 하겠습니다.