NAT(네트워크 주소 변환)란? 기초 원리 정리

공유기 하나로 여러 기기가 같은 공인 IP를 나눠 쓰는 NAT의 원리를 RFC 2663·3022·4787 기준으로 정리하고, 변환 테이블과 포트포워딩, 통신사 CGNAT까지 이어서 설명합니다.

🔄

NAT(네트워크 주소 변환)란

집이나 회사 내부에서 쓰는 사설 IP 주소를, 인터넷에서 통하는 공인 IP 주소로 서로 변환해주는 라우터의 핵심 기능입니다.

우리 집 공유기에 연결된 노트북, 스마트폰, TV는 각각 192.168.0.x 같은 사설 IP 주소를 갖지만, 인터넷에는 통신사가 공유기에 부여한 공인 IP 주소 하나로만 나갑니다. 공유기가 내부 기기의 요청이 나갈 때는 출발지 주소를, 응답이 돌아올 때는 목적지 주소를 서로 바꿔치기하면서 여러 기기가 하나의 공인 IP를 함께 쓸 수 있게 해주는 것이 NAT입니다.

🌍

NAT이 필요한 이유: IPv4 주소 고갈

전 세계에 할당 가능한 IPv4 주소는 약 43억 개뿐이라, 기기마다 공인 IP를 하나씩 줄 수 없어 등장한 절충안이 NAT입니다.

스마트폰, 노트북, IoT 기기까지 인터넷에 연결되는 장치 수가 IPv4 주소 개수를 훨씬 넘어선 지 오래입니다. 만약 모든 기기가 공인 IP를 하나씩 가져야 한다면 진작에 주소가 바닥났겠지만, NAT 덕분에 집 안의 수십 개 기기가 통신사가 준 공인 IP 주소 단 하나만으로도 동시에 인터넷을 쓸 수 있습니다. 근본적인 해결책은 주소 공간이 훨씬 넓은 IPv6로 전환하는 것이지만, 그 전환이 끝날 때까지 NAT이 사실상 필수적인 다리 역할을 해왔습니다.

🔢

PAT(포트 주소 변환): 가정용 공유기의 실제 동작 방식

공인 IP 하나를 여러 기기가 나눠 쓸 수 있는 건, IP 주소뿐 아니라 포트 번호까지 함께 바꿔주는 PAT(NAPT) 방식 덕분입니다.

노트북과 스마트폰이 동시에 인터넷에 접속해도 서로 구분이 되는 이유는, 공유기가 내부 기기별 (사설 IP, 포트) 조합을 공인 IP의 서로 다른 포트 번호에 매핑하기 때문입니다. 가상 예시로, 노트북의 요청은 공인 IP의 40001번 포트로, 스마트폰의 요청은 40002번 포트로 내보내고, 응답이 돌아오면 포트 번호를 보고 어느 기기로 돌려줘야 할지 구분합니다. 가정용 공유기가 쓰는 방식이 바로 이 PAT(Port Address Translation), 흔히 NAPT라고도 부르는 방식입니다.

📋

NAT 변환 테이블: 매핑 정보를 기억하는 장부

공유기는 내부 IP·포트와 외부로 나가는 IP·포트의 대응 관계를 NAT 테이블(변환 테이블)에 기록해두고, 응답이 돌아올 때 이 표를 참고해 되돌려줍니다.

연결이 새로 생길 때마다 공유기는 "내부 192.168.0.5:51000이 외부로 나갈 때는 공인IP:40001로 나간다"는 식의 항목을 임시로 만들어 관리합니다. 이 항목은 통신이 끝나거나 일정 시간 동안 응답이 없으면 자동으로 지워지는데, 게임이나 화상통화처럼 오랫동안 연결을 유지해야 하는 서비스에서 이 항목이 예상보다 일찍 지워지면 연결이 끊기는 문제가 생기기도 합니다.

🗂️

정적 NAT과 동적 NAT의 차이

사설 IP 하나와 공인 IP 하나를 고정으로 짝지어주는 정적 NAT과, 필요할 때마다 사용 가능한 공인 IP 풀에서 하나를 빌려주는 동적 NAT으로 나뉩니다.

정적 NAT은 항상 같은 공인 IP로 매핑되어야 하는 서버 등에 쓰이며, 외부에서 특정 내부 장비로 항상 접근할 수 있어야 할 때 적합합니다. 동적 NAT은 여러 개의 공인 IP 주소 풀을 두고 필요한 시점에만 하나씩 임시로 배정하는 방식으로, 기업 네트워크에서 제한된 공인 IP를 여러 사용자가 돌아가며 쓸 때 활용됩니다. 다만 가정용 공유기에서 우리가 실제로 매일 사용하는 방식은 이 둘보다는 앞서 설명한 PAT에 훨씬 가깝습니다.

🚧

NAT의 한계: 포트포워딩과 P2P 연결의 어려움

NAT은 기본적으로 내부에서 시작한 통신에만 응답을 돌려주므로, 외부에서 먼저 내부 기기로 접속을 걸어오는 상황은 별도 설정 없이는 막혀 있습니다.

집에서 운영하는 홈서버나 게임 콘솔의 P2P 매칭처럼 외부에서 먼저 내 기기로 접속해야 하는 경우, NAT 뒤에 있으면 기본적으로 연결이 되지 않습니다. 이를 해결하려면 특정 포트를 미리 지정한 내부 기기로 열어주는 포트포워딩이나, 필요할 때 자동으로 포트를 여는 UPnP 같은 기능을 함께 써야 합니다. 온라인 게임에서 나타나는 NAT 유형(Open·Moderate·Strict) 문제도 결국 이 한계에서 비롯됩니다.

🛡️

NAT의 부수적인 보안 효과

NAT은 보안 기능으로 설계된 것은 아니지만, 외부에서 임의로 내부 기기에 접속하는 것을 기본적으로 차단해 방화벽과 비슷한 부수 효과를 냅니다.

외부의 공격자가 내 공인 IP로 접속을 시도해도, NAT 테이블에 해당 연결에 대한 항목이 없으면 공유기는 이 트래픽을 어느 내부 기기로 보내야 할지 알 수 없어 자연히 버립니다. 이 덕분에 가정용 네트워크는 별다른 설정 없이도 어느 정도 보호를 받지만, 이는 어디까지나 NAT의 동작 원리에서 나오는 부수적인 결과일 뿐 정식 방화벽을 대체할 수는 없다는 점을 기억해야 합니다.

한눈에 보기

NAT(Network Address Translation)는 패킷이 서로 다른 주소 영역(address realm)의 경계를 지날 때 IP 주소, 필요하면 포트까지 바꿔 쓰는 기술입니다. RFC 2663(1999년 8월)은 주소 영역을 "네트워크 주소가 개체마다 유일하게 할당된 네트워크 영역"으로 정의하고, 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 NATIP 주소만 바꿈. 외부 주소 블록을 따로 확보해 내부 호스트에 대응주소 단위 변환
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:443203.0.113.10:40001 → 198.51.100.7:443노트북 51000과 외부 40001 기록
나감192.168.0.6:51000 → 198.51.100.7:443203.0.113.10:40002 → 198.51.100.7:443스마트폰 51000과 외부 40002 기록
들어옴198.51.100.7:443 → 203.0.113.10:40002198.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나 도메인으로 집 서버에 접속하면 밖에서는 되는데 안에서는 안 되는 현상이 생기는 이유가 이 기능과 관련될 수 있습니다. 구체적인 원인은 장비마다 다르므로 일반 원리로만 이해하세요.

직접 확인해 보기

흔한 오해와 정정

한계와 더 알아볼 점

이 글은 일반 원리를 다루며, 장비별 변환 테이블 크기·타임아웃·포트 선택 방식은 제조사마다 다릅니다. 위키백과는 포트가 비활성 시간 뒤 반환되며 하나의 공인 주소가 동시에 다룰 수 있는 연결이 대략 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 제공 여부를 문의해 보세요.

이 글은 일반 정보이며 특정 장비·통신사 환경의 설정을 보증하지 않습니다.