0. NAT 의 정의
NAT ( Network Address Translation )
NAT는 사설IP 를 공인IP 로 변경에 필요한 주소 변환 서비스이다.
( 사설 IP → 공인 IP )
라우터(router) 등의 장비를 사용하여 다수의 사설 IP(Private IP)를 하나의 공인 IP(Public IP) 주소로 변환하는 기술이다.
주로 기업이나 기관에서 내부망을 사용하는 PC에 사설 IP를 제공하고
외부 인터넷에 연결 시엔 공인 IP 하나를 같이 사용하는 형태로 운영한다.
NAT 는 다수의 주소 변환 정보에 대해 IP주소와 Port 번호로 구성된
NAT Forwarding Table 을 보관하고 있고 이에 맞게 주소 변환 서비스를 제공한다.
1. NAT 의 특징
위 그림에서 NAT Table 부분에는 아래와 같은 특징이 있다.
- 내부 네트워크에 위치한 호스트들의 사설 IP 와 포트 번호에 대한 정보를 가지고 있다.
- 외부로 나갈 때의 동일한 공인 IP 와 각기 다른 포트 번호를 가지고 있다.
- 목적지 주소의 공인 IP와 서비스에 사용된 동일한 서비스 포트 번호를 가지고 있다.
공인IP는 같으나 , 포트 번호를 다르게 할당하여 각각의 호스트를 구분 짓는 구조 이다.
마치 회사 대표 전화번로를 사용하면서 내선번호를 지정한것과 유사하다.
이를 통해 외부로 통신을 내보내고, 이에 대해 받은 네트워크 응답을 다시 해당 호스트에 보내주는 것 이다.
따라서 사설 IP를 사용하는 호스트들이 외부에서 봤을 때(웹 서버가 봤을 때) 같은 클라이언트 같지만
각각의 웹 서핑이 가능한 구조가 될 수 있다.
첫 번째 호스트 - 192.168.1.1:8801 가 외부 호스트 - 68.1.31.1에 Telnet( port: 23) 으로 접속하는 시나리오를 생각해본다.
① 사설 IP - 192.168.1.1을 사용하는 호스트가 68.1.31.1에 접속을 원한다.
② 라우터는 NAT 기술을 사용하여 이 요청에 공인IP - 101.89.101.12와 포트번호 8801을 할당한다.
③ 요청은 인터넷을 통해 Telnet 서버 - 68.1.31.1.1에 도달한다.
④ Telnet 서버는 요청의 클라이언트 IP를 공인 IP - 101.89.101.12, 포트 8801로 인식하고 응답한다.
⑤ Telnet 서버의 응답이 라우터에 도착한다. 라우터는 포트 번호 8801을 응답 패킷에서 인식한다.
⑥ 라우터는 사설 IP 192.68.1.1:9688 호스트에 할당된 포트임을 NAT 테이블에서 찾아 응답을 돌려준다.
192.168.1.1:9688 = 101.89.101.12:8801 → 68.1.31.1.1:23
2. NAT 는 왜 필요한가?
NAT를 사용하는 데는 크게 두 가지 목적이 있다.
① 공인 IP 주소를 절약하는 것이다.
인터넷 상의 공인 IP 주소는 한정되어 있어 회사,학교등의 단체에 보급된 PC가 각각 고유한 공인IP를 모두 보유하게 된다면 IPv4 상에서의 인터넷 주소는 벌써 고갈이 되었을 것이다.
IPv4 체계의 인터넷 주소는 32비트 길이를 사용하는데 이는 2의 32승 → 4,294,967,296개의 IP주소를 표현할 수 있다.
IPv6가 보급이 되면 인터넷 주소 고갈 문제는 지금보다 더 나아질 것이다.
② 보안의 목적이 있다.
공개된 인터넷망은 외부에서 내부로의 해킹이나 침입의 위험이 있다.
따라서 내부망과 공개망 사이에 방화벽을 운영하여 외부 공격으로 부터 내부 인터넷망을 지킨다.
내부에서 사설 IP를 사용하는 것은 외부에서 개인 PC나 인터넷 장비로 직접적인 접근을 하지 못하는 이유도 포함된다. NAT 장비는 방화벽 ( Firewall ) 형태 일 수 도 있고 Router 일 수도 있다.
3. NAT 의 동작 원리
IP masquerading ( 마스쿼레이딩 )
NAT는 하나의 공인 IP뒤로 여러 개의 사설 IP 공간을 은닉하는 IP masquerading 기법을 사용한다.
masquerading이라는 영단어는 가장 무도회를 의미하는데, 다수의 인터넷 디바이스가 하나의 공인 IP 를 사용하여 외부 인터넷을 사용하는 것을 가능하게 해준다.
'IT 지식 > IT 정보' 카테고리의 다른 글
3-way / 4-way Handshake 개념 (0) | 2022.12.20 |
---|---|
웹 서버와 WAS의 차이 (0) | 2022.12.19 |
해시 ( Hash ) 개념 (0) | 2022.12.15 |
방화벽 ( Firewall ) 의 구성 형태 (0) | 2022.12.14 |
방화벽 ( Firewall ) 개념 , 기능, 동작 방식 (0) | 2022.12.13 |