한눈에 보기
NAT(Network Address Translation)는 패킷이 서로 다른 주소 영역(address realm)의 경계를 지날 때 IP 주소, 필요하면 포트까지 바꿔 쓰는 기술입니다. RFC 2663(1999년 8월)은 주소 영역을 "네트워크 주소가 개체마다 유일하게 할당된 네트워크 영역"으로 정의하고, NAT의 변환은 세션 단위로 이뤄진다고 설명합니다. 위의 카드는 개념을 하나씩 나눈 요약이고, 아래에서는 용어의 정확한 뜻, 변환 테이블이 움직이는 과정, 실제 제도와 사례, 흔한 오해를 이어서 다룹니다.
- 가정용 공유기의 NAT은 대부분 주소와 포트를 함께 바꾸는 NAPT(PAT)입니다.
- NAT의 핵심 자료구조는 변환 테이블이며, 테이블에 항목이 없는 외부 발 패킷은 전달할 곳이 없습니다.
- 포트포워딩은 외부에서 온 특정 포트를 특정 내부 기기로 보내도록 항목을 미리 만들어 두는 일반 원리입니다.
- NAT은 주소 부족을 늦추기 위해 쓰였고, 보안 기능으로 설계된 것이 아닙니다.
배경: 왜 NAT이 생겼나
IPv4 주소는 32비트라서 전체 232 = 4,294,967,296개입니다. 그중 상당수는 예약되어 있어 공인 주소로 쓸 수 없습니다. RFC 1918(1996년 2월)은 내부망 전용 사설 대역으로 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16을 정했습니다. 이 대역은 인터넷에서 라우팅되지 않으므로 NAT과 짝을 이룹니다. 위키백과(Network address translation) 기준으로 RFC 1631(1994)은 NAT을 주소 고갈과 라우팅 확장 문제에 대한 "단기 해법"으로 소개했고, RFC 3022(2001년 1월)가 이를 대체(Obsoletes: 1631)하며 Traditional NAT를 정리했습니다.
주소 고갈은 기록으로 남아 있습니다. 위키백과(IPv4 address exhaustion) 기준으로 IANA의 미할당 주소 풀은 2011년 2월 3일까지 모두 배분되었고, 아시아태평양 레지스트리 APNIC이 2011년 4월 15일 처음으로 자유 배정 주소가 바닥났으며, 북미 ARIN은 2015년 9월 24일 고갈을 선언했습니다. 해당 문서에는 갱신이 필요하다는 안내가 붙어 있으므로 세부 일정은 각 레지스트리 공지를 확인하는 것이 좋습니다.
용어 정리: RFC 2663과 RFC 3022의 구분
NAT이라는 말은 여러 동작을 뭉뚱그려 부르기 때문에 용어를 나눠 두면 이해가 쉽습니다. 아래 정의는 RFC 2663·3022의 서술을 기준으로 옮긴 것입니다.
| 용어 | 의미 | 비고 |
|---|---|---|
| Traditional NAT | 세션이 사설망에서 바깥으로 향하는 단방향(outbound)인 NAT. Basic NAT과 NAPT 두 변형 | RFC 3022 |
| Basic NAT | IP 주소만 바꿈. 외부 주소 블록을 따로 확보해 내부 호스트에 대응 | 주소 단위 변환 |
| NAPT (PAT) | IP 주소와 전송 계층 식별자(TCP/UDP 포트)를 함께 바꿔 여러 호스트가 외부 주소 하나를 공유 | RFC 2663 |
| 정적 주소 할당 | 사설 주소와 외부 주소를 고정 1:1로 대응 | 서버 공개 등 |
| 동적 주소 할당 | 사용 필요에 따라 외부 주소를 그때그때 배정 | 주소 풀 사용 |
| 양방향(Two-way) NAT | 공인망 쪽에서 시작한 세션도 처리 | RFC 2663 |
| Twice NAT | 패킷의 출발지와 목적지 주소를 모두 변경. 두 영역의 주소가 겹칠 때 사용 | RFC 2663 |
SNAT과 DNAT은 벤더와 문맥에 따라 뜻이 조금 달라집니다. 일반적으로 SNAT은 나가는 패킷의 출발지를 바꾸는 쪽(가정용 공유기의 기본 동작), DNAT은 들어오는 패킷의 목적지를 바꾸는 쪽(포트포워딩, 서비스 공개)을 가리키는 것으로 쓰입니다. 위키백과도 SNAT의 의미가 벤더마다 다르다고 적고 있으므로, 장비 문서에서 정의를 확인하세요.
변환 테이블이 움직이는 과정 (가상 예시)
아래 숫자는 이해를 돕기 위한 가상 예시이며, 실제 장비가 고르는 포트 번호는 구현마다 다릅니다. 공유기의 공인 IP를 203.0.113.10(문서용 예약 대역), 노트북을 192.168.0.5, 스마트폰을 192.168.0.6이라고 하겠습니다.
| 방향 | 변환 전 | 변환 후 | 테이블 동작 |
|---|---|---|---|
| 나감 | 192.168.0.5:51000 → 198.51.100.7:443 | 203.0.113.10:40001 → 198.51.100.7:443 | 노트북 51000과 외부 40001 기록 |
| 나감 | 192.168.0.6:51000 → 198.51.100.7:443 | 203.0.113.10:40002 → 198.51.100.7:443 | 스마트폰 51000과 외부 40002 기록 |
| 들어옴 | 198.51.100.7:443 → 203.0.113.10:40002 | 198.51.100.7:443 → 192.168.0.6:51000 | 항목 조회 후 스마트폰으로 전달 |
| 들어옴 | 198.51.100.99:443 → 203.0.113.10:40999 | 전달 불가 | 항목 없음, 폐기 또는 거부 |
두 기기가 같은 내부 포트(51000)를 써도 외부 포트가 달라 구분됩니다. RFC 4787은 충돌이 나도 같은 외부 포트를 두 호스트에 주는 동작(port overloading)을 "대부분의 애플리케이션이 실패한다"고 경고하며 금지(MUST NOT)합니다. 항목은 일정 시간 트래픽이 없으면 지워집니다. RFC 4787은 UDP 매핑 타이머를 2분보다 짧게 만료시키지 말 것(예외 있음), 기본값은 5분 이상을 권장한다고 정합니다. TCP 타이머 값은 장비 설정을 확인하세요.
실제 사례
사례 1. 통신사 CGNAT와 포트포워딩 불가
IPv4 고갈 이후 통신사가 자기 망 안에서 NAT을 한 번 더 수행하는 Carrier-grade NAT(CGN, LSN이라고도 함)가 쓰이게 됐습니다. IETF는 이를 위해 RFC 6598로 100.64.0.0/10을 공유 주소 공간으로 할당했습니다(위키백과 Carrier-grade NAT 기준). 이 경우 가입자 공유기의 WAN 주소는 진짜 공인 IP가 아니라 통신사 NAT 뒤의 주소일 수 있고, 같은 문서의 표현대로 CGN은 가입자의 포트포워딩 사용을 보통 막습니다. 그래서 공유기에서 포트포워딩을 맞게 설정해도 외부 접속이 안 되는 상황이 생깁니다. 배울 점은 공유기 WAN 주소가 100.64.x.x나 10.x.x.x 같은 사설·공유 대역이면 포트포워딩 이전에 NAT이 한 겹 더 있다는 신호라는 것입니다.
사례 2. FTP와 ALG: 주소가 데이터 안에 들어 있을 때
RFC 3022는 FTP처럼 응용 계층 데이터 안에 IP 주소를 실어 보내는 프로토콜은 NAT이 헤더만 바꿔서는 동작하지 않으므로 응용 계층 게이트웨이(ALG)가 필요하다고 설명합니다. FTP를 NAT 장비에 가장 흔히 상주하는 ALG로 꼽고, 페이로드가 암호화되면 ALG가 동작하기 어렵다는 한계도 적습니다. 또 NAT은 IP 주소의 종단 간(end-to-end) 의미를 없애므로 IPsec의 종단 간 보안을 가정할 수 없다고 같은 문서가 언급합니다. NAT이 투명한 장치가 아니라는 대표 사례입니다.
사례 3. 헤어피닝(hairpinning)이 필요한 순간
내부의 두 호스트가 서로를 외부 주소와 포트로 부르는 상황을 헤어피닝이라 하며, RFC 4787의 REQ-9는 NAT이 이를 지원해야(MUST) 한다고 요구합니다. 위키백과는 이를 NAT loopback, NAT reflection이라고도 부르며 RFC 5128에서 다룬다고 소개합니다. 공유기에 따라 집 안에서 자기 공인 IP나 도메인으로 집 서버에 접속하면 밖에서는 되는데 안에서는 안 되는 현상이 생기는 이유가 이 기능과 관련될 수 있습니다. 구체적인 원인은 장비마다 다르므로 일반 원리로만 이해하세요.
직접 확인해 보기
- 공유기 관리 화면의 WAN IP와 "내 IP 확인" 사이트가 보여주는 주소를 비교해 보세요. 두 주소가 다르고 WAN IP가 사설·공유 대역(RFC 1918, 100.64.0.0/10)이라면 NAT이 중첩된 환경입니다.
- 포트포워딩 항목은 "외부 포트 → 내부 IP:포트" 형태입니다. 내부 IP가 DHCP로 바뀌면 규칙이 어긋나므로 고정 할당을 함께 점검하세요(DHCP 기초).
- 외부에 열어 둔 포트는 해당 서비스가 인터넷에 직접 노출된다는 뜻입니다. 필요한 포트만 열고 쓰지 않으면 닫으세요.
흔한 오해와 정정
- 오해: NAT이 곧 방화벽이다. 실제: 변환 테이블에 항목이 없는 외부 발 패킷이 전달되지 못하는 것은 동작의 결과이며, 위키백과도 보안은 매핑이 아니라 필터링 동작에 달려 있다고 정리합니다. RFC 4787 역시 매핑 방식은 NAT의 보안 특성에 차이를 만들지 않는다고 적습니다. 규칙 기반 차단은 방화벽이 따로 필요합니다.
- 오해: 공유기를 쓰면 외부 어디서나 내 기기에 접속할 수 있다. 실제: RFC 3022의 Traditional NAT은 사설망에서 시작한 세션이 기본이며, 외부에서 먼저 들어오는 접속은 정적 매핑(포트포워딩 등)이 있어야 가능합니다.
- 오해: NAT이 IPv4 고갈을 해결했다. 실제: 공인 주소가 꼭 필요한 용도(웹 호스팅 등)의 고갈은 CGN으로도 해결되지 않는다고 위키백과가 지적합니다. 공유로 고갈을 늦춘 것에 가깝습니다.
- 오해: NAT 종류는 "오픈·보통·엄격" 세 가지로 정해져 있다. 실제: 그것은 게임 콘솔 등이 보여주는 표시이고, 표준 용어는 NAT의 종류에서 정리한 RFC 4787의 매핑·필터링 동작입니다.
한계와 더 알아볼 점
이 글은 일반 원리를 다루며, 장비별 변환 테이블 크기·타임아웃·포트 선택 방식은 제조사마다 다릅니다. 위키백과는 포트가 비활성 시간 뒤 반환되며 하나의 공인 주소가 동시에 다룰 수 있는 연결이 대략 6만 개대로 제한된다고 설명합니다. IPv6에서는 주소 공간이 넓어 NAT의 필요성이 줄지만, 전환 방식과 운영 정책은 환경마다 다릅니다(IPv6 전환 방식). 특정 접속 문제는 장비 매뉴얼과 통신사 안내를 우선 확인하세요.
NAT의 세부 유형이 더 궁금하다면
온라인 게임에서 자주 보이는 Full Cone, Symmetric NAT 같은 세부 분류가 궁금하다면NAT의 종류 완전정복을 확인해보세요.
포트포워딩과 함께 알아두면 좋아요
NAT의 한계를 넘어 외부에서 내 기기에 직접 접속하고 싶다면포트포워딩 설정하는 방법도 참고해보세요. 사설 주소 대역은 사설 IP 대역 정리에서 이어 볼 수 있습니다.
자주 묻는 질문
NAT과 방화벽은 같은 건가요?
아닙니다. NAT은 원래 주소를 변환해주는 기능일 뿐이고, 외부 접속을 기본적으로 차단하는 것은 그 동작 방식에서 나오는 부수적인 효과입니다. 세밀한 규칙으로 트래픽을 걸러내려면 별도의 방화벽 기능이 필요합니다.
IPv6를 쓰면 NAT이 필요 없나요?
IPv6는 주소 공간이 매우 넓어 이론적으로는 모든 기기에 공인 주소를 줄 수 있어 NAT이 필수는 아닙니다. 다만 현실적으로는 IPv4와 IPv6를 함께 쓰는 환경이 많아 당분간은 NAT이 계속 쓰일 것으로 보입니다.
PAT와 NAPT는 다른 건가요?
RFC 2663·3022는 NAPT(Network Address Port Translation)라는 용어를 쓰고, 벤더 문서에서는 PAT, NAT overload 등으로 부르는 경우가 많습니다. 모두 주소와 함께 포트를 바꿔 하나의 외부 주소를 공유하는 방식을 가리킵니다.
정적 NAT과 포트포워딩은 어떻게 다른가요?
정적 NAT은 사설 주소와 외부 주소를 1:1로 고정 대응시키는 것이고, 포트포워딩은 외부 주소의 특정 포트로 온 트래픽만 특정 내부 주소와 포트로 보내는 것입니다. 공유기 화면에서는 둘이 같은 메뉴에 섞여 보이기도 하므로 용어보다 실제 규칙(어느 포트가 어디로)을 확인하세요.
공유기 WAN 주소가 100.64로 시작하는데 이상한 건가요?
RFC 6598이 통신사 CGN 용도로 할당한 공유 주소 공간(100.64.0.0/10)이므로 통신사 NAT 뒤에 있을 가능성이 큽니다. 이 경우 포트포워딩이 막히는 경우가 많으니 통신사에 공인 IP 제공 여부를 문의해 보세요.
이 글은 일반 정보이며 특정 장비·통신사 환경의 설정을 보증하지 않습니다.