Carrier-Grade Network Address Translation (CGNAT) Double NAT

agnusdei·2025년 11월 7일

Carrier-Grade Network Address Translation (CGNAT)

Carrier-Grade Network Address Translation (CGNAT) (캐리어급 네트워크 주소 변환), 또는 Large-Scale NAT (LSN) (대규모 NAT)은 Internet Service Provider (ISP) (인터넷 서비스 제공업체)가 IPv4 (Internet Protocol version 4) 주소 고갈 문제에 대응하고 IPv6 (Internet Protocol version 6) 전환을 지원하기 위해 사용하는 Network Address Translation (NAT) (네트워크 주소 변환)의 일종입니다. 이는 다수의 최종 사용자(가정 또는 모바일 네트워크)가 하나의 공인 IPv4 주소를 공유할 수 있도록 하는 이중 NAT (Double NAT) 구조를 채택한 대규모 솔루션입니다.


1. CGNAT의 정의 및 구조

CGNAT는 최종 사용자 네트워크에서의 NAT 기능에 더해 ISP 네트워크 내부에 한 겹의 변환 계층을 추가하는 NAT444 구조를 핵심으로 합니다.

  • 주요 목적: 한정된 공인 IPv4 주소 자원을 보존하여 수백에서 수천 명의 가입자에게 서비스를 제공하고, IPv6로의 완전한 전환 전까지 IPv4 서비스 지속성을 확보합니다.
  • CGNAT 전용 주소 범위: ISP는 고객의 CPE (Customer Premises Equipment, 고객 구내 장비) WAN (Wide Area Network) 인터페이스에 할당하기 위해 RFC 6598에 의해 CGN (Carrier Grade Network) 용도로 예약된 사설 주소 범위인 100.64.0.0/10 을 사용합니다.

요약 다이어그램 (패킷 흐름의 논리적 주소 변환)

[내 폰 192.168.0.55] (고객 사설 IP)
       ↓ (1차 NAT)
[공유기 192.168.0.1 / 211.34.56.78] (ISP 사설 IP: 100.64.x.x 범위일 수 있으나 예시에서는 공인처럼 보임. CGNAT 대상 IP)
       ↓ (2차 CGNAT)
[ISP 엣지 211.34.56.1] (CGNAT 장비)
       ↓ (공인 IP + 포트 변환)
[ISP 공인 IP (다수가 공유)] → [KIX] → [네이버 서버 223.130.195.200]

참고: 위 예시 다이어그램에서 공유기에 할당된 WAN 주소(211.34.56.78)가 공인 주소처럼 보이지만, 실제 CGNAT 환경에서는 이는 100.64.x.x 범위의 ISP 사설 IP 주소이며, 이 주소가 CGNAT 장비에서 공인 IP 주소로 최종 변환됩니다.


2. 실제 패킷 흐름 예시 (Traceroute 분석)

Traceroute (트레이스라우트) 명령어는 특정 목적지까지 패킷이 거쳐가는 라우터(Hop, 홉)의 IP 주소를 순서대로 보여줍니다. CGNAT 환경에서는 NAT 장비가 Hop으로 표시되거나, 변환된 IP 주소로 표시될 수 있습니다.

$ traceroute naver.com
 1  192.168.0.1          (공유기)
 2  211.34.56.1          (SKT 엣지)
 3  211.34.100.50        (CGNAT 후)
 4  10.100.0.1           (SKT 백본)
 5  203.233.100.1        (KIX)
 6  223.130.195.200      (네이버 서버)

패킷 흐름 분석:

  1. Hop 1 (192.168.0.1): 사용자의 공유기입니다. 패킷은 여기서 1차 NAT를 거쳐 사설 IP 주소(192.168.0.X)에서 공유기의 WAN 주소(이 경우 CGNAT의 입력 주소)로 변환됩니다.
  2. Hop 2 (211.34.56.1): ISP (SKT) 네트워크의 엣지 라우터입니다. 이 장비가 CGNAT 기능을 수행하는 Middlebox (중간 장치)일 가능성이 높습니다.
  3. Hop 3 (211.34.100.50): CGNAT 장비를 통과한 ISP 공인 IP 주소를 나타낼 수 있습니다. 이 주소는 여러 가입자가 공유하는 공인 IP 주소 풀의 일부입니다. 이 홉에서 2차 NAT (CGNAT) 가 완료되어 사설 주소 정보가 공인 주소 정보로 변환됩니다.
  4. Hop 4 (10.100.0.1): SKT 백본 라우터입니다. 10.x.x.xISP의 내부 Private IP 주소 대역으로, ISP의 코어 네트워크 내부를 지나고 있음을 보여줍니다.
  5. Hop 5 (203.233.100.1): 외부 Internet Exchange Point (IXP) (인터넷 교환 지점)인 KIX (Korea Internet Exchange)와 같은 교환 지점을 거치며, 이제 패킷은 공인 인터넷망을 통해 목적지로 이동합니다.
  6. Hop 6 (223.130.195.200): 최종 목적지인 네이버 서버에 도달합니다.

3. CGNAT의 기술적 영향

CGNATPort Address Translation (PAT) (포트 주소 변환)을 사용하여 다수의 사용자를 구별합니다. 이로 인해 다음과 같은 기술적 제약이 발생합니다.

이슈 유형상세 설명
Double NAT 문제NAT444 구조로 인해 Port Forwarding (포트 포워딩), DMZ (Demilitarized Zone) 설정, Inbound (인바운드, 수신) 연결이 필요한 P2P (Peer-to-Peer) 통신이나 게임 서버 호스팅이 불가능하거나 매우 복잡해집니다.
IP 추적의 복잡성하나의 공인 IP 주소를 여러 가입자가 공유하므로, 특정 악성 트래픽 발생 시, ISP는 방대한 Port 할당 로그를 분석해야만 실제 가입자를 특정할 수 있습니다.
Port 고갈CGNAT 장비는 각 가입자에게 할당할 수 있는 TCP (Transmission Control Protocol) 및 UDP (User Datagram Protocol) Port 범위가 제한되어 있어, 사용자가 과도한 동시 연결을 시도하면 Port가 고갈되어 추가 연결이 차단될 수 있습니다.
콜래터럴 데미지한 공유 IP 사용자가 차단 목록에 오르면, 해당 IP를 공유하는 다른 선량한 사용자들까지 서비스 접근이 차단되는 피해(Collateral Damage)를 입을 수 있습니다.

CGNAT는 현재 IPv4 고갈 문제 해결을 위한 필수적인 기술이지만, End-to-End 연결성을 저해하고 Port 제한을 두는 등 최종 사용자 경험에 직접적인 영향을 미칠 수 있습니다.

1. 🏠 CGNAT (캐리어급 네트워크 주소 변환)란 무엇인가요?

CGNAT는 Internet Service Provider (ISP) (인터넷 서비스 제공업체)가 IP 주소 부족 문제를 해결하기 위해 사용하는 특별한 방법이에요.

  • 배경: 인터넷 초기에는 IPv4 (Internet Protocol version 4) 주소가 넉넉할 줄 알았지만, 스마트폰, IoT (Internet of Things) 기기가 폭발적으로 늘면서 전 세계적으로 주소가 고갈되었어요.
  • 목적: 한정된 공인 IP 주소 하나를 수십~수백 명의 가입자가 나누어 쓸 수 있게 해주는 기술입니다.
  • 비유 (아파트 비유):
    • 공인 IP 주소: 아파트 전체의 대표 주소 (예: 서울시 강남구 삼성동 123번지).
    • CGNAT 장비: 이 아파트의 경비실 (또는 우편물 관리 센터).
    • 각 세대 (가입자): 아파트에 사는 각 가구 (예: 101호, 102호).

2. 🧱 더블 NAT (Double NAT)의 두 단계 변환

CGNAT 환경은 기본적으로 NAT (Network Address Translation)가 두 번 일어나는 Double NAT 구조, 즉 NAT444를 사용합니다.

단계수행 장소변환 목적비유에서의 역할
1차 NATHome Router (공유기)내 컴퓨터의 사설 IP 주소를 공유기의 WAN IP (ISP가 할당한 사설 주소)로 바꿉니다.101호 내부에서 101호 입구로 우편물을 들고 나가는 것.
2차 NATCGNAT 장비 (ISP)공유기의 WAN IP (ISP 사설 주소)를 ISP 공인 IP 주소로 최종 변환합니다.101호 입구에서 아파트 경비실로 우편물이 이동하여 대표 주소로 바뀌는 것.

패킷 흐름 예시 (출발)

사용자 PC (192.168.1.100)가 네이버 서버 (223.130.195.200)로 접속하는 경우:

  1. PC 출발: 출발지: 192.168.1.100 (내 방 주소) \rightarrow 도착지: 223.130.195.200 (네이버 주소)
  2. 공유기 (1차 NAT):
    • 출발지 \rightarrow 100.64.0.5 (공유기 WAN IP. ISP가 정한 아파트 101호 대표 주소)로 변환.
    • 공유기는 이 변환 기록 (NAT 테이블)을 저장합니다.
  3. CGNAT 장비 (2차 NAT):
    • 출발지 \rightarrow 203.233.100.10 (ISP의 공인 대표 IP. 아파트 전체 대표 주소)로 변환.
    • CGNAT는 이 변환 기록 (LSN 테이블)을 저장합니다.
  4. 인터넷 도착: 네이버 서버는 당신의 주소를 203.233.100.10 으로 인식합니다.

핵심: 당신이 보낸 패킷은 인터넷에 나가기 전에 두 개의 주소 변환 장치(공유기, CGNAT)를 거치기 때문에 Double NAT이라고 불리는 것입니다.


3. 🚨 CGNAT가 일으키는 문제점 (가장 중요한 부분!)

CGNAT는 외부에서 나가는 통신 (Outbound) 에는 문제가 없지만, 외부에서 나에게 들어오는 통신 (Inbound) 에는 치명적인 문제를 일으킵니다.

A. 인바운드 연결 불가 (Port Forwarding 제한)

  • 문제: 외부 친구가 당신의 컴퓨터에 접속(예: 게임 서버 운영, CCTV 접속)하려고 할 때, 친구는 CGNAT 공인 IP (203.233.100.10)로 접속을 시도합니다.
  • 경비실 (CGNAT 장비)의 상황: CGNAT 장비는 이 요청이 들어왔을 때, LSN 테이블에 해당 공인 IP로 나간 기록만 있을 뿐, 외부에서 시작된 이 요청을 아파트 내의 누구에게 (예: 101호, 102호) 전달해야 할지 알 수 없습니다.
  • 결과: 외부에서 나에게 직접 연결하는 행위(예: Port Forwarding (포트 포워딩), P2P (Peer-to-Peer) 연결)가 기본적으로 차단됩니다.

B. 포트 고갈 (Port Exhaustion)

  • 문제: 하나의 공인 IP 주소는 기술적으로 약 6만 5천 개의 Port (포트)를 가질 수 있어요.
  • CGNAT의 관리: CGNAT는 이 6만 5천 개의 포트를 수백 명의 가입자에게 나누어 할당합니다 (예: A 가입자에게 30000~30500번 포트만 사용하도록 제한).
  • 결과: 만약 당신이 토렌트처럼 동시에 수많은 연결을 시도하면, 할당받은 포트 번호가 금방 다 소진되어 더 이상 인터넷 연결을 만들 수 없게 됩니다.

C. 공통 IP 사용으로 인한 연쇄 피해

  • 문제: 만약 A 가입자가 공유하는 공인 IP (203.233.100.10)를 사용해서 해킹이나 스팸 메일을 보내면, 외부 서비스(예: 해외 웹사이트, 게임 서버)는 이 공인 IP차단 목록에 올립니다.
  • 결과: 착한 B 가입자도 같은 공인 IP를 사용하고 있기 때문에, 아무 잘못 없이 해당 외부 서비스에 접속이 차단되는 피해를 입을 수 있습니다 (Collateral Damage, 연쇄 피해).

4. 💡 해결책

CGNATIPv4의 임시 해결책일 뿐이며, 근본적인 해결책은 모든 기기가 고유한 공인 IP 주소를 가질 수 있는 IPv6로 전환하는 것입니다.

  • IPv6 (Internet Protocol version 6): 주소 개수가 거의 무한대에 가까워 NAT 자체가 필요 없으며, 모든 기기가 공인 주소를 가지므로 Double NAT 문제나 Port 제한 문제가 완전히 사라집니다.
profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글