[GNS3] NAT 구성하기_실습
NAT 란 무엇인가요?
- NAT는 네트워크 주소 변환(Network Address Translation)의 약자로, 비공인 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하는 방법입니다.
- NAT를 처리해 주는 장치를 NAT Gateway라고 부릅니다.
NAT의 종류
1. Static NAT
각 내부 IP 주소에 대해 외부 IP주소가 1:1로 각각 대응된다.
- 주로 서버와 같은 정적인 주소에서 사용된다.
- 지정된 서설 주소는 항상 지정된 공인 주소로 변경된다.
2. Dynamic NAT
여러 개의 내부 IP 주소에 대해 여러 개의 외부 IP주소를 동적으로 할당시킨다.외부 IP주소가 모두 사용 중이라 할당 받을 IP가 없을 경우 외부에서의 연결은 제한된다.
- 내부 IP가 인터넷을 사용하고자 할 때 외부 IP주소 풀에서 동적으로 선택해서 할당 받는다.
- 고정된 공인 주소와 매핑 되지 않으므로 서버에는 적용하지 않는 방법
3. Port Address Translation : PAT
하나의 외부 IP주소를 다수의 내부 IP 주소가 port번호로 구분하여 사용한다. well-kown port를 제외하고 랜덤으로 사용한다.
- 한개의 공인 주소를 여러개의 사설 주소가 공유하는 방법
- Static : 정적으로 port를 할당해주는 방식(외부에서 내부로 접속해야하는 경우에 주로 사용)
- Dynamic : 동적으로 port를 할당해주는 방식(내부에서 외부로 접속해야하는 경우에 주로 사용)
--------------------서버는 정적 NAT------------------
웹서버 -> 211.183.3.11
웹서버 -> 211.183.3.12
웹서버 -> 211.183.3.13
FTP서버 1 -> 211.183.3.14
------------ 부서별로 1개의 공인 IP주소 부여 --------
영업팁 : 192.168.1.0/24 --> 211.183.3.10 : Dynamic PAT
기술팀 : 192.168.2.0/24 --> 211.183.3.9 : Dynamic PAT
NAT를 구성하는데 필요한 명령어(HQ라우터)
access-list 1 permit any //모든 내부 주소를 허용한다.
ip nat inside source list 1 int fa0/0 overload //
int fa0/0
ip nat outside
int range fa0/1 , fa1/0 , fa2/0
ip nat inside
access-list 1 permit any
: 모든 내부 주소를 허용한다.
ip nat
: 지금부터 주소를 변경하겠다.
ip nat inside source list 1 int fa0/0 overload
-
inside source list 1
: 내부에 있는 출발지의 ip(내부 ip)는 access-list 1 과 같다. 즉 주소를 변경해야 하는 사설 주소는 모든 주소를 허용한다. -
int fa0/0
: 모든 사설 주소는 fa0/0에 있는 공인 아이피 주소로 변경된다. -
overload
: 여러 사설 주소가 한개의 공인 주소를 공유하는 것을 허락한다. // PAT활성화
int fa0/0 > ip nat outside
:공인 주소로 변경하여 내보낼 인터페이스에 할당
int range fa0/1 , fa1/0 , fa2/0 > ip nat inside
: 사설 주소가 있는 곳에 설정
위 그림과 같은 네트워크 환경을 만들어준다.(앞선 실습들을 참고)
정적 NAT 설정하기
ip nat inside source static tcp 192.168.101.111 80 int fa0/0 80
2222포트 접속하면 내부에 있는 22번 포트로
ip nat inside source static tcp 192.168.101.111 22 int fa0/0 2222
리눅스 설정
cd /etc/ssh
vi ssh_config
실습2
시작하기 전에 TIP : 명령어 치다가 다음 명령어가 생각이 안날때는 ?
를 입력하면 다음에 올 명령어를 알수 있다.
실습 내용 :
Static PAT
Linux : 192.168.101.111(사설) < ==== > 192.168.108.111(공인)
Dynamic PAT
192.168.101.(일반) < ==== > 192.168.108.99
-
access-list 1 permit any
-
공인 ip pool 만들기
R1(config)#ip nat pool TEST 192.168.108.99 192.168.108.99 prefix-length 24
ip nat pool 이름 범위 크기
- 권한 설정
R1(config)#ip nat inside so list 1 pool TEST overload
- inside outside설정
int fa0/1
ip nat inside
exit
int f0/0
ip nat outside
-
정적으로 접속하고 싶은 리눅스 컴퓨터를 공인 ip에 연결해 준다.
R1(config)#ip nat inside source static 192.168.101.111 192.168.108.111
-
제한 설정하기
access-list 111 deny ip any any /제한 그룹 만들기('111'그룹제한 출발지ip 도착지ip) ip access-group 111 in /설정하기 no ip access-group 111 in /해지하기
ACL(Access-Control List)
-
이름이나 번호를 이용하여 정책을 설정하고 설정된 정책에 의해 트래픽을 분류하거나 필터링 할 수 있는 기술
-
패킷의 어느부분을 확인하여 필터링/분류하느냐에 따라 Standard/Extended 로 구분한다.
-
Standard
-
패킷의 출발지 IP주소만을 확인하고 그 외의 부분은 확인하지 않는다.
-
일반적으로 1~99를 사용한다.
출발지 주소 wild card bit
-
access-list 1 permit 192.168.10.0 0.0.0.255
-
access-list 1 deny 5.5.5.5 0.0.0.0
-
-
-
Extended
-
패킷의 L3/L4 모든 부분을 확인하여 필터링/분류 할 수 있다.
-
일반적으로 100~199를 일반적으로 사용한다.
-
-
추가 원리
- ip 제한 명령어
ex> access-list 1 permit 1.1.1.0 0.0.255 0000001.0000001.0000001.0000000 0000000.0000000.0000000.1111111 ------------------------------- 0000001.0000001.0000001.xxxxxxx => 1.1.1.0~1.1.1.255 0: Look at this bit 1: Don't care bit ex> access-list 1 deny 5.5.5.5 0.0.0.0 5.5.5.5만 제한 ( = access-list 1 deny host 5.5.5.5) ex> access-list 1 deny 0.0.0.0 255.255.255.255 ( = access-list 1 deny any any)
- top-down 방식
ex> 외부에서 유입되는 모든 트래픽을 차단하라. 단, 2.2.2.2는 허용한다. access-list 1 per host 2.2.2.2 access-list 1 deny any
- ACL의 가장 아래에는 "나머지는 모두 차단된다" 가 생략되어 있다.
ex> 외부에서 유입되는 모든 트래픽을 허용하고 2.2.2.2는 차단된다. access-list 1 deny host 2.2.2.2 access-list 1 per any (access-list 1 deny any) <-- 생략되어 있다.
- 작성된 ACL은 인터페이스, NAT 등에 적용해 주어야 활성화 된다.
예1) int fa0/0 ip access-group 1 in 예2) int nat inside source list 1 int fa0/0 overload
실습 3
실습 내용 : access-list 적용시켜보기
R1(config)#line vty 0 4
R1(config-line)#login local
R1(config-line)#exit
R1(config)#username hgd password test123
R1(config)#access-list 1 permit host 1.1.1.1
R1(config)#line vty 0 4
R1(config-line)#access-class 1 in