~/network/nat
IP 주소 & 할당

NAT

Network Address Translation

NAT는 사설 IP 주소를 공인 IP 주소로(또는 그 반대로) 변환하는 기술이며, 주위에서 흔히 볼 수 있는 IP 공유기가 대표적인 NAT를 수행하는 장비이다. 1990년대 IPv4 주소 고갈 문제가 가시화되면서 본격적으로 도입되었으며, 거의 모든 가정과 기업 네트워크에서 사용된다.

왜 필요한가

IPv4 주소는 32비트로 약 43억 개밖에 만들 수 없다. 인터넷 단말 수가 폭발적으로 늘어나면서 모든 단말에 공인 IP를 부여하는 것이 불가능해졌다.

NAT는 다음과 같이 이 문제를 완화한다.

  • 내부망에서는 사설 IP를 자유롭게 사용한다.
  • 외부 인터넷과 통신할 때만 공인 IP로 주소를 변환한다.
  • 결과적으로 한 개의 공인 IP로 수많은 단말이 인터넷을 사용할 수 있다.

가정용 공유기를 떠올리면 쉽다. 통신사로부터 받는 공인 IP는 1개지만, 그 안에 노트북, 스마트폰, TV, IoT 기기 수십 대가 동시에 인터넷을 쓸 수 있는 이유가 NAT이다.

사설 IP 대역 (RFC 1918)

NAT가 동작하기 위해 정해진 사설 IP 대역이 있다. 이 대역은 인터넷에서 라우팅되지 않는다.

대역범위일반 용도
10.0.0.0/810.0.0.0 ~ 10.255.255.255대규모 사설망 (대기업)
172.16.0.0/12172.16.0.0 ~ 172.31.255.255중규모 사설망
192.168.0.0/16192.168.0.0 ~ 192.168.255.255소규모/가정용 공유기

종류

Static NAT (정적 NAT)

사설 IP 1개에 공인 IP 1개를 1:1로 고정 매핑하는 방식이다.

  • 매핑이 고정되어 있어 외부에서도 내부 서버로 직접 접근 가능
  • 공인 IP가 단말 수만큼 필요하므로 IP 절감 효과는 없음
  • 주로 외부 공개 서버(웹, 메일)에 사용

Dynamic NAT (동적 NAT)

공인 IP 풀(pool)에서 사설 IP에 동적으로 할당하는 방식이다. N:N 매핑.

  • 풀 안의 IP가 다 쓰이면 새 단말은 통신 불가
  • 정적 NAT보다는 효율적이지만 여전히 풀 크기만큼 공인 IP 필요

PAT / NAPT (Port Address Translation) 🌟

한 개의 공인 IP를 포트 번호로 구분하여 여러 사설 IP가 공유하는 방식이다. 1:N 매핑.

  • IP 절감 효과가 가장 크다
  • 가정용 공유기, 회사 인터넷 게이트웨이가 모두 PAT를 사용
  • "NAT"라고 부를 때 일반적으로 이 방식을 의미

PAT 동작 흐름 (예시)

내부 PC(192.168.0.10)가 외부 웹서버(8.8.8.8:80)로 접속하는 상황을 보자.

PAT 동작 흐름 다이어그램: 사설 IP와 공인 IP 사이의 양방향 변환과 NAT 매핑 테이블
  1. PC가 패킷 전송

    • 출발지: 192.168.0.10:51234
    • 목적지: 8.8.8.8:80
  2. NAT 라우터가 출발지를 공인 IP로 변환하고 매핑 테이블에 기록

    • 출발지: 203.0.113.5:60001 (공인 IP + 새 포트)
    • 목적지: 8.8.8.8:80
  3. 응답 패킷이 NAT 라우터로 돌아옴

    • 출발지: 8.8.8.8:80
    • 목적지: 203.0.113.5:60001
  4. 매핑 테이블을 보고 다시 사설 IP로 변환하여 PC에 전달

    • 목적지: 192.168.0.10:51234

핵심은 출발지 포트(또는 새 포트) 를 키로 사용해 어떤 내부 단말의 통신인지 식별한다는 점이다. 이 포트 매핑이 있기 때문에 한 공인 IP로 수많은 단말의 통신을 구분할 수 있다.

장점

  • IP 주소 절약: 가장 큰 도입 이유
  • 내부망 보호: 외부에서 내부 IP를 직접 알 수 없고 접근도 어렵다
  • 내부 주소 체계의 유연성: ISP가 바뀌어도 내부 IP 정책을 그대로 유지 가능

한계점

NAT는 IP 절감이라는 큰 이득의 대가로 몇 가지 구조적 한계를 안고 동작한다.

  • 포트 자원 한계: 한 공인 IP가 가지는 포트는 65,535개로 제한적이다. 통신사처럼 사용자 풀이 매우 큰 환경에서는 단일 NAT로 부족해 CGNAT(Carrier-Grade NAT) 같은 다단 NAT 설계를 추가로 도입해야 한다.
  • End-to-End 통신 모델의 붕괴: Internet Transparency라는 인터넷 설계 원칙(RFC 2775)이 깨진다. 그 결과 P2P, 외부 접속, 음성/영상 통화 같은 통신 패턴에 우회 기법이 필요해진다. 본질적으로 더 까다로운 한계라 아래에서 자세히 다루겠다.

End-to-End 통신 모델이 깨진다

인터넷 본래의 설계 철학은 "모든 호스트가 고유한 공인 IP를 가지고, 서로 직접 통신할 수 있어야 한다"는 것이었다. 이를 Internet Transparency(인터넷 투명성)라 하며 RFC 2775에 정리되어 있다. 중간 장비는 패킷을 전달만 하고, 통신의 의미와 상태는 양 끝단(End)에만 두자는 모델이다. NAT는 이 모델을 네 가지 측면에서 무너뜨린다.

  1. 외부에서 내부로 먼저 접속할 수 없다

    • 외부 호스트는 내부의 사설 IP 자체를 알 수 없다.
    • NAT 매핑은 내부에서 외부로 나갈 때만 만들어진다.
    • 통신은 항상 내부에서 시작해야만 성립한다. 외부에서 먼저 말을 걸 수 없다.
  2. 호스트의 고유 식별자가 사라진다

    • 한 공인 IP 뒤에 수십 ~ 수만 명의 단말이 있다.
    • IP만으로는 "누가 누구인지" 알 수 없고, 포트 + 시간 정보까지 같이 봐야 단말 식별이 가능해진다.
    • 이 영향으로 보안 로깅·추적이 어려워진다. 사고 발생 시 책임 단말을 특정하려면 NAT 매핑 로그를 타임스탬프 단위로 보존해야 한다.
  3. 상태 의존성이 생긴다

    • NAT 매핑은 일정 시간(보통 수십 초 ~ 수 분)이 지나면 자동 만료된다.
    • 트래픽이 잠깐 끊기면 매핑이 사라져, 외부에서 다시 도달하려 해도 길이 닫혀 있다.
    • 그래서 VoIP, 메신저 같은 장기 연결 서비스는 주기적으로 keep-alive 패킷을 보내 매핑을 유지한다.
  4. L7 페이로드 안의 IP와 충돌한다

    • FTP, SIP, RTSP, H.323 같은 프로토콜은 페이로드 안에 자기 IP/포트를 박아 넣는다.
    • NAT는 IP 헤더만 변환하므로, 페이로드 안에는 여전히 사설 IP가 남아 상대방이 그 주소로 응답하면 도달하지 못한다.
    • 이를 보정하려면 NAT가 특정 프로토콜을 해석해 페이로드까지 고쳐주는 ALG(Application Layer Gateway) 기능이 필요하지만, 모든 프로토콜을 다 지원할 수는 없다.

대표적으로 문제가 되는 상황:

  • 외부에서 집 서버에 접속하기 → 포트 포워딩을 수동으로 설정해야 함
  • 양쪽 모두 NAT 뒤에 있는 P2P/게임 → 직접 연결이 성립하지 않음
  • VoIP/영상 통화의 직접 미디어 경로 → 시그널링은 되어도 미디어가 NAT를 못 넘는 경우가 흔함

NAT 트래버설 기법

위 한계를 우회하기 위해 만들어진 기술들을 통칭해 NAT 트래버설(NAT Traversal) 이라 한다. 본질적으로 모두 "NAT가 매핑을 만들도록 유도하거나, 변환된 공인 주소를 미리 알아내거나, 공인 인터넷의 중계 서버를 거치는" 방식이다.

대표적인 접근법은 다음과 같다.

  • STUN: 외부 서버에 물어 자신의 공인 IP/포트가 무엇으로 보이는지 알아낸다.
  • TURN: 공인 인터넷의 릴레이 서버가 양 끝단의 트래픽을 중계한다. 비용이 들지만 가장 어려운 NAT에서도 동작.
  • ICE: STUN + TURN + 직접 연결을 모두 시도해 최적 경로를 선택하는 프레임워크. WebRTC가 채택한 표준.
  • 포트 포워딩 / UPnP: NAT에 수동(또는 앱이 동적으로) 매핑을 만들어 외부에서 들어오는 통로를 연다.

NAT 트래버설이 필요하다는 사실 자체가 NAT의 본질적 한계를 보여준다. 원래라면 "상대방 IP로 패킷 보내면 끝"이어야 할 통신이, NAT 때문에 별도 인프라가 있어야만 성립하기 때문이다.

NAT와 IPv6

IPv6는 주소 공간이 사실상 무제한이라 NAT가 필수는 아니다. 그래도 다음 이유로 NAT가 일부 환경에서 여전히 쓰인다.

  • 보안 관점에서 내부망을 외부에 직접 노출하지 않으려는 정책
  • IPv4 → IPv6 전환기 동안 IPv4-IPv6 변환을 위한 NAT64 같은 변형

다만 IPv6에서는 NAT보다 방화벽으로 보안을 처리하는 것이 권장되는 방향이다.

정리

  • NAT는 IPv4 주소 고갈을 완화하는 핵심 기술이며, 동시에 내부망 보호 효과도 있다
  • 가정용 공유기, 회사 라우터 모두 기본적으로 PAT(NAPT) 로 동작한다
  • E2E 통신과 음성/영상/P2P 트래픽에서는 NAT가 장애 요소가 되기도 한다
  • IPv6에서는 NAT의 역할이 줄어들지만, 보안 정책상 여전히 쓰이는 경우가 있다