access-group
인터페이스에서의 트래픽을 제어
access-class
VTY 라인에서의 접근을 제어
(= 텔넷, ssh 등의 원격접속)
ip access-group <acl번호> <in|out>
int 인터페이스명
ip access-group 1 in
ip access-class <acl번호> <in|out>
int 인터페이스명
ip access-class 1 in
* standard ACL은 출발지 주소만 확인한다. 목적지 주소를 확인하려면 확장 ACL 사용
(config)#ip access-list standard 1
(config-std-nacl)#11 permit 1.1.1.3
(config-std-nacl)#do sh ac
Standard IP access list 1
10 permit host 1.1.1.1 (4 match(es))
11 permit host 1.1.1.3
20 permit host 1.1.1.2
시퀀스 번호는 중간삽입이 가능하도록 10단위로 설정되는데, 번호를 지정하여 룰 추가 가능
(config-std-nacl)#10 deny host 1.1.1.4
% Duplicate sequence numbe
시퀀스 번호 중복 불가능
확장 ACL Numbered형
출발지와 목적지 IP 주소뿐만 아니라 프로토콜, 출발지 포트, 목적지 포트 번호 등을 지정해서 트래픽을 세밀하게 제어
access-list <ACL number> {permit|deny} <프로토콜>
<출발지 IP> <와일드카드 마스크> [연산자 <출발지 포트>]
<목적지 IP> <와일드카드 마스크> [연산자 <목적지 포트>]
* [] 대괄호는 생략 가능
연산자
eq 일치 gt 지정된 것보다 큼 lt 지정된 것보다 작음
neq 일치하지 않음 range 지정된 두 포트 사이
ex)
access-list 100 permit tcp 1.1.1.0 0.0.0.255 1.1.1.0 0.0.0.255 eq 22
tcp 1.1.1.0 대역에서 1.1.1.0 대역의 22포트로 가는 패킷은 허용
access-list 100 deny ip any any
모든 ip deny
(config)#int g0/0
(config-if)#ip access-group 100 in
(config)#int g0/1
(config-if)#ip ac 100 in
적용
ssh용 포트 22만 허용했기 때문에, 1.1.1.1 -> 1.1.1.254 ssh 접속은 가능하고 ping 메시지는 불가능한 상태
do sh run | section int
=> 인터페이스에 설정된 ac 정책 확인
erase startup-config
라우터 초기화
ip access-list extended 100
ACL 번호 100에 대한 ACL을 수정할 수 있는 모드로 진입
---------------- 여기까지 배운것은 numbered 방식
named 실습
no ip ac extended 100
=> 기존 100번 룰 삭제
#ip access-list ?
extended Extended Access List
standard Standard Access List
#ip access-list extended ?
<100-199> Extended IP access-list number
WORD name
WORD name 방식을 사용할 수 있다
(config)#ip access-list extended myacl
(config-ext-nacl)#permit tcp 1.1.1.1 0.0.0.0 1.1.1.254 0.0.0.0 eq 22
(config-ext-nacl)#deny tcp any 1.1.1.254 0.0.0.0 eq 22
#do sh ac
Extended IP access list myacl
10 permit tcp host 1.1.1.1 host 1.1.1.254 eq 22
20 deny tcp any host 1.1.1.254 eq 22
=> 조회하면 지정했던 이름인 myacl로 나온다
#int g0/0
#ip access-group myacl in
* line vty에 acl을 적용할 경우, 포트번호가 들어간 ACL 명령은 배운 명령어로는 적용불가능하다
그것도 모르고 line vty에 access-class로 설정하고 왜 안되지 하고 있었음
포트번호를 빼면 아마 적용 가능하지 않을까?
관련 설정은 강사님이 확인 후 알려주시기로 함
+
ip access-class 이름
access-class acl숫자
NAT 네트워크 주소 변환기술
집, 카페, 호텔 등의 공유기에서 사설 ip를 NAT를 통해 변환하여 통신
ip nat inside source static <사설IP주소> <공인IP주소>
int 인터페이스명
ip nat inside
ip nat outside
사설 네트워크 : inside
공용 네트워크 : outside
실습)
라우터1, 2에 연결된 각 사설망이 있을때
10.10.10.1 -> server1.com(100.100.12.21, 사설 10.10.10.1) 접속시
라우터1
인바운드 패킷에서는 출발지 주소가 10.10.10.1(사설)이었는데,
아웃바운드 패킷에서는 100.100.12.11로 변경되었다.
라우터2
인바운드 패킷의 목적지 주소가 100.100.12.21이었다가
아웃바운드 패킷에서는 10.10.10.1(사설)로 변경되었다
요청과 마찬가지로 응답메시지는 거꾸로 변경된다
실습환경은 static NAT (정적, 관리자가 직접 설정) 이다.
정적NAT 설정하기
그림을 보면 내부망에 해당하는 인터페이스는 f0/0이고
외부망에 해당하는 인터페이스는 s0/0/0이다
먼저 사설 ip 주소와 공인 ip 주소를 매칭시켜 정책을 적용
(config)#ip nat inside source static 10.10.10.1 100.100.12.11 (config)#ip nat inside source static 10.10.10.2 100.100.12.12 (config)#ip nat inside source static 10.10.10.3 100.100.12.13 (config)#int f0/0 (config-if)#ip nat inside (config-if)#int s0/0/0 (config-if)#ip nat outside (config-if)#exit |
내부망에 ip nat inside
외부망에 ip nat outside
R1과 R2에 각각의 사설망 ip를 매칭하여 적용해주면 끝
동적dynamic NAT
access-list <ACL number> permit <사설 IP> <wildcard mask>
ip nat pool <pool name> <start ip> <end ip> netmask [subnet mask]
ip nat inside source list <ACL number> pool <pool name>
내부망 인터페이스에 ip nat inside
외부망 인터페이스에 ip nat outside
access-list 1 permit 10.10.10.0 0.0.0.255
=> acl 1번에서 10.10.10.0.24 대역을 허용한다
ip nat pool nattest 100.100.12.11 100.100.12.13 netmask 255.255.255.0
=> pool 이름은 nattest이고 100.100.12.11부터 100.100.12.13까지 /24 대역을 지정한다
ip nat inside source list 1 pool nattest
=> 내부 정책 소스를 1번으로 지정하고 pool이름은 nattest이다
라우터1이 연결된쪽은 사설망이 연결되고, 라우터2가 연결된쪽은 공인망을 사용하는 상황.
라우터1에만 동적 NAT를 설정해주면 된다 (NAT는 사설망에 필요한 것이므로)
그 외 route는 rip이나 ospf를 사용하면 된다
단, 이 경우 11 12 13의 IP 3개를 사용하는데, PC가 3개를 초과할 경우 그 이후의 PC들은 공인 IP가 할당되지 못한다
이를 위해 나온 것이 NAT PAT로, 공인 IP 하나를 포트번호를 이용해 구분하여 여러 PC가 사용하는 방식이다
NAT PAT 형식
access-list 1 permit [사설 IP] [wildcard mask]
ip nat inside source list [ACL number] interface [outside interface]
설정 (인터페이스를 활용)
access-list 1 permit 10.10.10.0 0.0.0.255
ip nat inside source list 1 interface s0/0/0
int f0/0
ip nat inside
int s0/0/0
ip nst outside
왜 100.100.12.1로 변환되느냐면, 100.100.12.1이 라우터 ip이기 때문
PC1과 PC2에서 출발한 Ping의 변환된 주소가 같다
#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 100.100.12.1:5 10.10.10.2:5 100.100.20.1:5 100.100.20.1:5
보면 PC2에서 출발한 ping은 5번포트로 발송되었다