NAT
contents
1. 핵심 개념: NAT란 무엇인가?
NAT (Network Address Translation) 는 라우터와 같은 네트워크 장비가 패킷을 중계하는 동안, 패킷 헤더에 있는 IP 주소 정보를 수정하여 하나의 IP 주소 공간을 다른 IP 주소 공간으로 재매핑(Remapping) 하는 기술입니다.
- 해결하려는 문제: 전 세계적으로 IPv4 주소는 매우 부족합니다. 모든 기기(노트북, 스마트폰, 냉장고, 카메라 등)에 고유한 공인 IP를 하나씩 줄 수가 없습니다.
- 해결책: NAT를 사용하면 거대한 사설 네트워크(집, 사무실, 회사 등) 전체가 단 하나의 공인 IP(Public IP) 뒤에 숨어서 인터넷을 사용할 수 있게 됩니다.
비유: 회사 우편물실 (Mailroom)
수백 명의 직원이 근무하는 거대한 회사 빌딩(내부 네트워크)을 상상해 보세요.
- 사설 IP (Private IPs): 직원들은 "101호 책상", "102호 책상" 같은 내선 번호를 가집니다. 이 번호는 빌딩 안에서만 의미가 있고, 외부 우체부는 "101호 책상"이 어디인지 모릅니다.
- 공인 IP (Public IP): 이 빌딩은 "세종대로 123번지"라는 단 하나의 공식 주소를 가집니다.
- NAT 장비: 로비에 있는 안내 데스크 직원입니다.
- 발신 (Sending): "101호 책상" 직원이 밖으로 편지를 보낼 때, 안내 직원은 보낸 사람 주소에서 "101호"를 지우고, 회사의 공식 주소인 "세종대로 123번지" 도장을 찍어서 내보냅니다.
- 수신 (Receiving): "세종대로 123번지" 앞으로 답장이 오면, 안내 직원은 기록해 둔 장부를 봅니다("아, 아까 101호 직원이 보낸 편지의 답장이구나"). 그리고 봉투에 "101호"라고 적어서 내부로 전달합니다.
2. NAT 작동 원리: 패킷 변조 과정
패킷이 LAN(내부망)에서 WAN(외부망)으로 이동할 때, 라우터는 물리적으로 데이터 패킷의 헤더(Header) 내용을 수정합니다.
단계별 흐름 (PAT / Masquerading 방식)
상황: 사용자님의 노트북(192.168.1.5)이 구글(8.8.8.8)에 접속하려고 합니다.
- 요청 발송 (노트북 $\rightarrow$ 라우터):
- 출발지:
192.168.1.5:12345(내부 IP + 랜덤 포트 번호) - 목적지:
8.8.8.8:80(구글 웹 서버) - 패킷이 라우터에 도착합니다.
- 출발지:
- 변환 (라우터의 행동):
- 라우터는 자신의 NAT 변환 테이블(Translation Table) 에 기록을 남깁니다.
- 출발지 IP를 자신의 WAN IP(
203.0.113.1)로 바꿔치기합니다. - 출발지 포트를 자신이 관리하는 고유 번호(
55001)로 바꿔서 이 대화를 추적합니다.
- 인터넷 구간 (라우터 $\rightarrow$ 구글):
- 출발지:
203.0.113.1:55001(라우터의 공인 얼굴) - 목적지:
8.8.8.8:80 - 구글이 응답을 보냅니다.
- 출발지:
- 응답 수신 (구글 $\rightarrow$ 라우터):
- 출발지:
8.8.8.8:80 - 목적지:
203.0.113.1:55001(라우터의 공인 IP로 도착)
- 출발지:
- 역변환 (라우터의 행동):
- 라우터가 테이블을 확인합니다: "55001번 포트 누가 쓰고 있었지? 아, 192.168.1.5의 12345번 포트였구나."
- 목적지 IP를 다시
192.168.1.5로 되돌립니다. - 목적지 포트를 다시
12345로 되돌립니다. - 노트북에게 패킷을 전달합니다.
3. NAT의 종류
모든 NAT가 같은 것은 아닙니다. 어떤 종류를 쓰느냐에 따라 서버 운영이 쉬울 수도, 어려울 수도 있습니다.
A. Static NAT (1:1 NAT)
- 방식: 사설 IP 하나를 공인 IP 하나와 영구적으로 1:1 매핑합니다.
- 용도: 기업의 웹 서버나 메일 서버.
- 장점: 양방향 통신이 기본적으로 허용됩니다.
- 단점: 모든 내부 기기 개수만큼 비싼 공인 IP를 사야 합니다.
B. Dynamic NAT
- 방식: 공인 IP 여러 개(예: 5개)를 풀(Pool)로 가지고 있다가, 선착순으로 빌려줍니다. 6번째 사람은 대기해야 합니다.
- 용도: 요즘은 잘 안 쓰이는 방식입니다.
C. PAT (Port Address Translation) / NAT Overload
- 방식: 수천 개의 사설 IP를 단 하나의 공인 IP에 매핑합니다. 구분은 포트 번호(Port Number) 로 합니다.
- 핵심: TCP 포트가 65,535개나 되기 때문에, 라우터 하나가 이론상 6만 개 이상의 동시 연결을 구분해서 처리할 수 있습니다.
4. NAT 용어 정리 (Cisco 표준)
네트워크 문서나 Orchestrator 매뉴얼에서 자주 보게 될 헷갈리는 4가지 용어입니다.
| 용어 | 정의 |
|---|---|
| Inside Local | 내부망에 있는 기기의 실제 IP |
| Inside Global | 외부 세상이 보기에 내부 기기가 사용하는 IP |
| Outside Global | 목적지 서버의 실제 공인 IP |
| Outside Local | 내부 호스트가 보기에 목적지가 사용하는 IP |
5. NAT Traversal: NAT를 뚫는 방법들
NAT는 기본적으로 외부에서 들어오는 트래픽을 차단(보안 기능)하므로, 이를 우회하는 기술들이 있습니다.
- 포트 포워딩 (Static): 라우터에게 수동으로 명령합니다. "8080번 포트로 누가 오면 무조건 기기 X로 보내." (지금 사용하신 방법)
- DMZ (Demilitarized Zone): "누군지 모르는 손님은 일단 무조건 기기 X로 다 보내." (편하지만 위험한 방법)
- UPnP (Universal Plug and Play): 내부 기기가 라우터에게 자동으로 "나 554번 포트 좀 열어줘"라고 부탁하는 기능.
- 홀 펀칭 (Hole Punching - STUN/TURN): 줌(Zoom), 스카이프, P2P 게임 등이 쓰는 방식. 내부 클라이언트가 외부 서버에 먼저 신호를 보내서 NAT 테이블에 구멍(Entry)을 잠시 뚫어놓고, 그 구멍으로 상대방과 통신하는 기술입니다.
개발자를 위한 요약
- NAT는 "N 대 1" IP 멀티플렉서(Multiplexer)입니다.
- 변환 테이블(Translation Table) 이 NAT의 핵심 상태 머신(State Machine)입니다. 라우터가 재부팅 되면 이 테이블이 날아가므로 모든 활성 연결(SSH, 스트리밍 등)은 즉시 끊어집니다.
- 인바운드(Inbound)는 기본 차단: 내부에서 먼저 시작한 요청(기록이 테이블에 있음)이거나, 정적 규칙(포트 포워딩)이 없는 한, NAT는 들어오는 패킷을 무조건 폐기(Drop) 합니다. 이것이 바로 카메라에 직접 핑(Ping)을 때릴 수 없었던 이유입니다.
references