ACL / Standard ACL
ACL
ACL (Router 장비)
라우터가 받으면 무조건 in, 나갈때는 out.
하나의 인터페이스에서 나갈 때 ACL을, 들어올 때 ACL을 걸러낼 수 있음.
라우터를 꼭 방화벽처럼 쓰고 있는 것.
즉, 외부에서 학원에 특정 네트워크가 들어올 수 있게/없게 설정할 수 있다는 것.데이터가 들어올 때/나갈 때 자동으로 목록(List)을 체크함. (IN / OUT)
이 리스트는 우리가 설정하는 것임.방화벽 개념은 다 비슷함.
말 그대로 필터링 한다는 의미ACL을 라우터 인터페이스에 설정을 함. 들어올 때/나갈 때 ACL을 걸 수 있다.
ACL은 문형이 2개임
숫자에 따른 분류에서 숫자를 조심하자.
숫자를 이름형식으로도 할 수 있다.
명령어
Standard ACL : 1-99, Only 출발지 IP (혹은 네트워크 주소)
conf t
access-list [1-99] [permit/deny] [출발지IP/네트워크주소] [Wildcard Mask] -> 조건 만들기
interface s1/0 -> 만들고 나서 적용하는 과정
ip access-group [1-99] [in/out]
- Subnet Mask가 하는 역할?
- -> IP 주소가 있으면 어디까지가 네트워크 주소이고, 호스트 주소인지를 구분해주는 것.
- IP 주소 = Network 주소 자리(비트 1로 표기) + Host 주소 자리(0)
- Network (1) + Host (0)
ex.
192.168.10.1 255.255.255.0 -> 192.168.10 + 1
192.168.10.1 255.255.0.0 -> 192.168 + 10.1
192.168.10.1 255.0.0.0 -> 192 + 168.10.1
192.168.10.1 0.255.255.255 (이런 서브넷 마스크는 존재 X)
192.168.10.1 255.255.0.255 (존재 X)
- Subnet Mask가 하는 역할?
Wildcard Mask : 조건을 주기 위해서 사용하는 것.
비트로 했을 때, 1은 조건 검사를 하지 않겠다는 것.
비트로 했을 때, 0은 조건 검사를 하겠다는 것.
ex.
192.168.10.1 0.0.0.255 -> 192.168.10.X (0에서 255까지 모두 포함)
192.168.10.1 0.0.255.255 -> 192.168.X.X (3,4번째 자리는 뭐가 오든 관계X)
192.168.10.1 0.255.255.255 -> 192.X.X.X
192.168.10.1 0.255.0.255 -> 192.X.10.X
192.168.10.1 0.0.0.0 -> 192.169.10.1
와일드 카드가 0.0.0.0인 경우 정확하게 ip 주소가 옴.(즉, 특정ip 주소를 의미)
이걸 우리는 의미하는 키워드가 있는데 host 192.168.10.1 -> 192.168.10.1 이라고 나타내기도 한다.
192.168.10.1 255.255.255.255 -> X.X.X.X (그럼 앞에 오는 것이 의미가 없음)
이거랑 같은 건 0.0.0.0 255.255.255.255 -> X.X.X.X (보통 모든 주소를 의미할 때는 ip 주소가 아니라 0.0.0.0을 줌)
이걸 간단한 키워드로 나타내기도 하는데 any -> X.X.X.X
정리
특정 주소 표현
192.168.10.1 0.0.0.0
host 192.168.10.1
모든 주소 표현
192.168.10.1 255.255.255.255
0.0.0.0 255.255.255.255
any
Ex.
access-list 10 permit 192.168.10.1 0.0.0.0
access-list 10 deny 192.168.10.0 0.0.0.255
access-liat 10 permit host 192.168.10.2
interface s1/0
ip access-group 10 out
s1/0에서 10번이 나갈 때 검사할 때,
위에서 밑으로 조건을 하나하나 따짐.
조건에 맞으면 더 이상 밑에 조건을 체크하지 않음.
ex01. 출발지 = 192.168.10.1 (목적지는 신경 쓸 필요X) -> 첫 번째 조건 맞음. permit이기 때문에 나감.
ex02. 출발지 = 192.168.10.2 -> 두 번째 조건 맞음. deny기 때문에 못 나감.
그럼 마지막은 의미가 없어짐. 두 번째에서 걸리기 때문에.
그래서 ACL은 위아래 순서가 중요함!
그렇다면 순서를 바꿔보자.
access-list 10 permit 192.168.10.1 0.0.0.0
access-list 10 permit host 192.168.10.2
access-list 10 deny 192.168.10.0 0.0.0.255
그럼 위로 갈 수록 좁아지고, 밑으로 갈 수록 넓어지는 것이 좋다.
ex03. 출발지 = 192.168.20.1 -> 나가려고 하는데 ACL이 걸려있음.
첫 번째, 두 번째, 세 번째 조건 모두 안 맞음.
조건에 맞는 게 하나도 없으면 전부 다 거름.
항상 ACL 제일 끝에는 눈에는 보이지 않지만
[access-list 10 deny 0.0.0.0 255.255.255.255]
이 조건이 항상 들어가 있음. 우리는 이것을 묵시적인 거부
라고 부름.
즉 조건에 안 맞으면 무조건 거부한다는 뜻.
조건에 안 맞는 것은 다 허용하고 싶으면 마지막 줄에 다 허용해주면 됨.
access-list 10 permit 0.0.0.0 255.255.255.255
Ex01.
조건)
우선 1.1.1.1이 2.1.1.1이 ping이 되면
1.1.1.1이 2.1.1.1으로 못 나가게 out 시켜라.
나머지는 다 넘어가게 시켜라.
방법)
access-list 10 deny host 1.1.1.1
access-list 10 permit any
interface e0/1
ip access-goup 1o out
ping 하면 1.1.1.1은 drop.
but 2.1.1.1에서 ping은 in.(in은 아무 관계 없음. 왜냐면 우리는 out을 했음.)
되돌아 갈 때 막히는 것.
Standard ACL은 한 쪽에서 ping이 안 되면 양쪽에서 다 안 되는 것.
3.1.1.1은 통신이 잘 되도록 하기.
1.1.1.1이랑 3.1.1.1은 ping잘 되도록.
결과)
그럼 router에서 2.1.1.1으로 ping을 하면 ping이 감.
router에서 출발하는 건 2.1.1.2에서 출발하는 것이기 때문임
주의) 라우터를 경유하는 경우에만 ACL이 적용 되어 짐.
만약 access-list 10 deny host 2.1.1.1이라면
L3에서 L2를 갈 때는 가지만 out할 때만 안 됨.
Ex02. Standard ACL
모든 PC가 다 ping이 되도록.
방법)
access-list 10 deny host 192.168.10.1
access-list 10 deny 192.168.20.0 0.0.0.255
access-list 10 deny 1.1.23.0 0.0.0.255
access-list 10 permit 0.0.0.0 255.255.255.255
interface e0/0
ip access-group 10 out
결과)
느김표 = 통신이 잘 되어진다는 뜻.
통신이 안 되는 것.
막혀있다는 뜻.
참고.
# show run
# show access-list
# show ip access-list
중에 아무거나 확인해도 됨.
# show ip interface e0/0
in/out 중 어디에 걸려 있는지 확인.
유형)
유형1 - 거부 목록 -> 나머지 전부 허용
유형2 - 허용 목록 -> 나머지 전부 거부
Ex. Standard ACL
풀이
access-list 30 deny host 192.168.10.1
access-list 30 deny 1.1.12.0 0.0.0.255
access-list 30 permit 0.0.0.0 255.255.255.255
interface e0/1
ip access-group 30 out
access-list 20 permit host 192.168.10.1
access-list 20 permit 1.1.12.0 0.0.0.255
interface e0/0
ip access-group 20 out
궁금한 점) ACL 번호가 다른 데 ping은 어떻게 확인하는 지.
-> 해결 : e0/0랑 e0/1이기 때문에 관계 X