핵심 인사이트 (3줄 요약)

  1. 본질: NAT-T(NAT Traversal)는 ESP 암호화 덩어리가 "포트 번호가 없다"는 치명적 약점 때문에 공유기(NAT/PAT)를 통과하지 못하고 버려지는 대참사를 막기 위해, ESP 덩어리를 통째로 "UDP 4500번"이라는 가짜 포트 봉투에 한 번 더 싸서 공유기를 무사히 속이고 통과시키는 궁극의 생명 연장 기술이다.
  2. PAT(공유기)의 포트 패러독스: 공유기는 IP 주소 하나를 수십 대가 나눠 쓰기 위해 포트 번호(Port)를 갈아 끼우며 트래픽을 구별한다. 하지만 IPsec의 ESP 패킷은 L4(TCP/UDP)가 아니라 프로토콜 50번을 쓰므로 아예 포트 번호란 게 존재하지 않아, 공유기가 "이거 누구 노트북으로 줘야 해?"라며 멘붕에 빠진다.
  3. NAT-D (사전 탐색): IKE 협상 단계(Phase 1)에서 두 방화벽이 "야, 우리 중간에 엿 같은 NAT 장비 끼어 있냐?"를 먼저 탐지(NAT-Discovery)한 뒤, 하나라도 껴있다면 "오케이, 지금부터 모든 패킷을 UDP 4500번에 싸서 쏘자!"라고 자동 합의를 이끌어낸다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: IPsec 트래픽(ESP)이 NAT 또는 PAT(Port Address Translation) 장비를 통과할 수 있도록, ESP 패킷을 UDP 4500번 헤더로 추가 캡슐화하여 포트 정보를 부여하는 기능 (RFC 3947).

  • 필요성: 직원이 카페 와이파이(NAT 공유기)를 잡아 노트북으로 회사에 IPsec VPN을 연결했다. 노트북은 IKE(UDP 500)로 협상을 잘 마치고 ESP 암호화 패킷을 쐈다. 공유기는 패킷을 밖으로 보낸다. 본사에서 답장이 왔다. 그런데 공유기가 받아보니 겉면에 IP만 있고 포트 번호가 없다! (ESP는 포트가 없으니까). "어? 내 뒤에 노트북 10명이나 와이파이 쓰고 있는데, 이 패킷 누구한테 줘야 해?" ──▶ 공유기는 패킷을 쓰레기통에 냅다 버린다. (통신 단절). "야, 포트가 없으면 억지로라도 가짜 UDP 포트 껍데기를 하나 씌워서 공유기 입맛에 맞게 속여주자!!" 이것이 NAT-T의 탄생 배경이다.

  • 💡 비유: NAT-T는 택배 배달의 "동/호수 추가 기입" 꼼수입니다.

    • ESP: 금고. 겉면에 "서울시 은마아파트(IP)" 까지만 적혀 있고, 몇 동 몇 호(Port)인지가 없습니다. 경비실(NAT)에서 "이거 누구 집 거야!" 하고 버립니다.
    • NAT-T (UDP 4500): 금고 겉면에 억지로 종이상자를 하나 더 씌우고 매직으로 **"101동 502호(UDP 4500 포트)"**라고 가짜 동호수를 적어 줍니다. 경비실은 이 번호표만 보고 손쉽게 배달을 마칩니다.

📢 섹션 요약 비유: NAT-T는 포트(Port)가 없어 통과증을 못 받는 ESP 금고에게, **"UDP 4500"**이라는 합법적이고 가벼운 프리패스 완장을 하나 덧씌워주어 깐깐한 공유기(PAT)의 바코드 스캐너를 무사히 통과하게 만드는 완벽한 변장술입니다.


Ⅱ. NAT-T의 3단계 동작과 패킷 캡슐화 구조 (Deep Dive)

1. IKE의 NAT-Discovery (NAT 존재 여부 탐지)

두 장비가 무작정 UDP 4500을 쓰는 게 아니다. IKE Phase 1 협상 중에, 송신자와 수신자는 서로의 오리지널 IP와 헤더 상태를 교환하며 핑퐁을 친다.

  • "어? 내가 쏜 출발지 IP가 192.x 인데, 네가 받은 패킷의 출발지 IP는 211.x 라고? 헐, 중간에 누군가(공유기)가 IP를 바꿨구나!!"
  • 중간에 NAT가 존재함을 양쪽이 확신(Detection)하게 된다.

2. 포트 쉬프팅 (UDP 500 ──▶ UDP 4500)

NAT가 발견되면, 두 방화벽은 Phase 2로 넘어가기 전에 약속을 바꾼다.

  • "야, 기존 IKE 협상하던 포트(UDP 500)도 다 버려! 꼬일 수 있으니 지금부터는 협상(IKE)도, 실제 데이터(ESP)도 모조리 통째로 UDP 4500번 포트로 갈아타서 쏘자!"
  • 이 순간부터 모든 VPN 통신은 UDP 4500번이라는 하나의 터널 구멍으로 대통합된다.

3. NAT-T 패킷의 4단 샌드위치 구조 (핵심)

와이어샤크로 NAT-T 패킷을 잡아보면 엄청나게 뚱뚱해진 걸 볼 수 있다. (터널 모드 기준)

  1. 내부 데이터: [ 원본 사설 IP 헤더 ] + [ TCP 데이터 ]
  2. ESP 보호막: 이 알맹이를 [ ESP 헤더 ]가 감싸서 암호화한다.
  3. NAT-T 꼼수 헤더 ★: 그 위에 [ UDP 헤더 (포트 4500) ]를 추가로 씌운다. (이게 핵심).
  4. 외부 배달 껍데기: 맨 바깥에 [ New IP 헤더 (공유기 공인 IP) ]를 씌운다.
 ┌─────────────────────────────────────────────────────────────┐
 │                NAT-T 적용 전/후의 패킷 구조 차이 (터널 모드)      │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   [ 1. NAT-T 미적용 (일반 ESP) ] - 공유기가 버림!                  │
 │   [ New IP 헤더 ] ──▶ [ ESP 헤더 ] ──▶ [ 암호화된 알맹이 ]           │
 │                       (포트가 없어 PAT 불가)                     │
 │                                                             │
 │   [ 2. NAT-T 적용 완료 ] - 공유기 프리패스!                       │
 │   [ New IP 헤더 ] ──▶ [ UDP (Port 4500) ] ──▶ [ ESP 헤더 ] ──▶  │
 │                       (공유기: "오 UDP 통신이네? 통과!")         │
 │                                                             │
 │   ▶ "방화벽/VPN 엔지니어는 반드시 외부 방화벽 룰에                  │
 │      UDP 500 (IKE) 와 UDP 4500 (NAT-T) 두 개를 모두          │
 │      허용(Allow)해 두어야 재택근무자 연결이 안 터진다!"           │
 └─────────────────────────────────────────────────────────────┘

📢 섹션 요약 비유: ESP 패킷이 **"번호판 없는 스텔스 장갑차"**라면, 톨게이트(공유기)는 번호판이 없다고 통과를 거부합니다. NAT-T는 이 장갑차 겉면에 **"UDP 4500"**이라는 가짜 렌터카 번호판을 철썩 붙여주어 톨게이트 직원을 속이고 무사히 톨게이트를 빠져나가게 하는 위장술입니다.