1. 개요 (Overview)
NAT (Network Address Translation)는 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술이다. 주로 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해 사용된다.
- 주요 목적: IPv4 주소 고갈 문제 해결, 내부 네트워크 보안 강화
- 표준: RFC 2663, RFC 3022
2. 핵심 개념 (Core Concepts)
- 사설 IP 주소 (Private IP Address)
- 내부 네트워크(LAN)에서만 사용되도록 예약된 IP 주소 대역. 인터넷을 통해 직접 접근할 수 없으며, 라우팅되지 않는다.
- 대역:
- Class A: 10.0.0.0 – 10.255.255.255
- Class B: 172.16.0.0 – 172.31.255.255
- Class C: 192.168.0.0 – 192.168.255.255
- 공인 IP 주소 (Public IP Address)
- ISP(인터넷 서비스 제공업체)가 제공하는 고유한 IP 주소. 전 세계 인터넷상에서 식별 가능하며, 직접 통신이 가능하다.
- NAT Translation Table
- NAT 장비(라우터 등)가 IP 주소와 포트를 변환한 내역을 기록하는 테이블. 이 테이블을 참조하여 외부에서 들어오는 패킷을 정확한 내부 호스트로 전달한다.
- 구성 항목: 출발지 사설 IP/Port, 변환된 공인 IP/Port, 목적지 IP/Port 등
3. 동작 방식 (Mechanism)
Outbound Traffic (LAN → Internet)
- 패킷 생성: 내부 호스트(192.168.0.10)가 외부 서버(8.8.8.8)로 패킷을 생성한다.
- Source IP: 192.168.0.10, Destination IP: 8.8.8.8
- 주소 변환: 패킷이 NAT 장비에 도달하면, 장비는 패킷의 출발지 주소를 자신의 공인 IP 주소(211.100.10.1)와 임의의 포트 번호로 변경한다.
- Source IP: 211.100.10.1, Destination IP: 8.8.8.8
- 테이블 기록: NAT 장비는 변환 내역(192.168.0.10:port_A → 211.100.10.1:port_B)을 Translation Table에 기록한다.
- 패킷 전송: 변환된 패킷을 인터넷을 통해 목적지로 전송한다.
Inbound Traffic (Internet → LAN)
- 응답 수신: 외부 서버(8.8.8.8)가 NAT 장비의 공인 IP(211.100.10.1)로 응답 패킷을 보낸다.
- Source IP: 8.8.8.8, Destination IP: 211.100.10.1
- 테이블 조회: NAT 장비는 수신된 패킷의 목적지 포트 번호를 확인하고, Translation Table을 조회하여 매핑된 내부 호스트 정보를 찾는다.
- 주소 재변환: 테이블 기록을 바탕으로 패킷의 목적지 주소를 원래의 사설 IP(192.168.0.10)로 재변환한다.
- Source IP: 8.8.8.8, Destination IP: 192.168.0.10
- 패킷 전달: 재변환된 패킷을 해당 내부 호스트로 전달한다.
4. 주요 유형 (Major Types)
- Static NAT (1:1 NAT)
- 정의: 사설 IP와 공인 IP를 1:1로 고정하여 매핑한다.
- 특징: 외부에서 사설 네트워크의 특정 호스트(서버 등)로의 접속이 필요할 때 사용된다. 보안성은 낮지만 특정 서비스를 외부에 노출시키기 용이하다.
- 주요 용도: 외부 접속용 웹 서버, 메일 서버 등.
- Dynamic NAT
- 정의: 다수의 공인 IP Pool을 설정하고, 내부 호스트가 외부 접속을 요청할 때 Pool에서 사용 가능한 공인 IP를 동적으로 할당한다.
- 특징: 할당할 공인 IP 개수만큼의 동시 접속만 허용한다.
- PAT (Port Address Translation) / NAPT (Network Address Port Translation)
- 정의: 하나의 공인 IP 주소를 사용하되, 포트 번호를 다르게 할당하여 여러 내부 호스트의 동시 접속을 가능하게 한다.
- 특징: 현재 가장 보편적으로 사용되는 NAT 방식. IP 주소와 포트 번호의 조합으로 연결을 식별한다. (예: 211.100.10.1:10001, 211.100.10.1:10002)
- 주요 용도: 가정용 공유기, 대부분의 기업 네트워크 환경.
5. 개발 환경에서의 적용 (Application)
- 클라우드 컴퓨팅 (AWS 예시)
- VPC (Virtual Private Cloud): 논리적으로 격리된 사설 네트워크 환경.
- EC2 Instance: 생성 시 기본적으로 사설 IP를 할당받는다.
- Internet Gateway: VPC와 인터넷 간의 통로. EC2에 공인 IP를 할당하고 외부에서 접속할 수 있도록 한다.
- NAT Gateway: Private Subnet에 위치한 인스턴스(DB 서버 등)가 외부 인터넷(OS 업데이트, 패키지 다운로드 등)으로 통신할 필요가 있을 때 사용되는 아웃바운드 전용 게이트웨이.
- Elastic IP: 고정된 공인 IP 주소를 인스턴스에 할당하는 서비스로, Static NAT의 한 형태이다.
- 컨테이너 (Docker 예시)
- Docker Network: 컨테이너는 기본적으로 docker0 브리지 네트워크에 연결되며, 호스트와 격리된 사설 IP 대역(172.17.0.0/16)을 할당받는다.
- Outbound 통신: 컨테이너가 외부로 통신을 시도할 때, Docker 호스트의 커널이 iptables의 MASQUERADE 규칙을 사용하여 컨테이너의 사설 IP를 호스트의 공인(또는 사설) IP로 변환한다. 이는 PAT 방식과 동일하게 동작한다.
- 포트 포워딩 (Port Forwarding): docker run -p 8080:80 옵션은 호스트의 8080 포트로 들어오는 트래픽을 컨테이너의 80 포트로 전달하는 규칙을 생성한다. 이는 외부에서 컨테이너 내부의 서비스에 접근하기 위한 일종의 NAT 설정이다.
'컴퓨터 네트워크' 카테고리의 다른 글
| 서버 연결에 관하여(HTTP, 톰캣, 소켓, 포트) (0) | 2025.11.24 |
|---|---|
| CDN(콘텐츠 분배 네트워크) (0) | 2025.11.06 |
| DNS (Domain Name System) (0) | 2025.10.13 |
| 2. 애플리케이션 계층 (0) | 2025.04.24 |
| 1. 컴퓨터 네트워크와 인터넷 (0) | 2025.03.11 |