네트워크 용어 사전
인터넷 계층포트 포워딩 · IPv6

NAT

사설 IP를 공인 IP로 바꿔 여러 장치가 하나의 주소를 공유하게 하는 기술. IPv4 고갈의 임시 처방이었다.

사설 IP를 공인 IP로 바꿔 여러 장치가 하나의 공인 주소를 나눠 쓰게 하는 기술.

왜 필요했나

IPv4 주소는 32비트 = 약 43억 개 인터넷에 연결되는 기기가 그보다 훨씬 많아졌다

  • 집·회사 안에서는 '사설 IP' 를 쓰고
    • 밖으로 나갈 때만 공인 IP 하나로 바꿔 준다
사설 IP 대역 (인터넷에서 라우팅되지 않는다)
  10.0.0.0/8         (약 1,678만)
  172.16.0.0/12      (약 104만)
  192.168.0.0/16     (65,536)

어떻게 구분하나 — 포트로

[내부]                          [NAT 테이블]                    [외부]
192.168.0.5:51000  ──→  1.2.3.4:40001  ←→  93.184.216.34:443
192.168.0.7:51000  ──→  1.2.3.4:40002  ←→  93.184.216.34:443
                         ^^^^^ 포트를 다르게 매핑해 구분한다

응답이 오면 포트를 보고 어느 내부 장치로 돌려줄지 판단한다. 정확히는 포트까지 바꾸므로 NAPT(또는 PAT)라고 부른다.

따라오는 제약

  • ① 밖에서 안으로 먼저 연결할 수 없다

    • NAT 테이블에 항목이 없으면 어디로 보낼지 모른다
    • 서버를 열려면 '포트 포워딩' 을 수동 설정해야 한다
  • ② P2P 가 어렵다

    • 양쪽 다 NAT 뒤에 있으면 서로 먼저 연결할 수 없다
    • STUN · TURN · 홀 펀칭 같은 우회 기법이 필요하다
    • (WebRTC 가 이 문제를 다루는 대표 사례)
  • ③ 종단 간 원칙이 깨진다

    • 중간 장비가 주소를 고치므로 "양 끝이 직접 통신한다" 는 인터넷의 원래 설계가 흐려진다

확인해 보기

ip addr                       # 내 사설 IP
curl ifconfig.me              # 밖에서 보이는 공인 IP
# 둘이 다르면 NAT 뒤에 있는 것이다

IPv6는 무엇이 다른가

128비트 — 약 3.4 × 10^38 개
  → 모든 장치에 공인 주소를 줄 수 있다 → NAT 이 원리적으로 불필요
  → 헤더가 단순해지고 중간 라우터의 단편화가 사라졌다
  → 보급이 느린 이유는 NAT 이 '충분히 잘 동작해서' 이기도 하다

면접 함정

  • "NAT은 보안 기능" → 부수 효과로 외부 접근을 막지만 방화벽이 아니다. 보안은 별도로 설계한다.
  • "사설 IP는 인터넷에서 못 쓴다" → 정확히는 라우팅되지 않는다. 내부에서는 정상 동작한다.

NAT 유형과 P2P 난이도

  • Full Cone — 한 번 나가면 아무나 그 포트로 들어올 수 있다 (관대)

  • Restricted — 나갔던 상대 IP 에서만

  • Port Restricted 나갔던 상대 IP·포트에서만

  • Symmetric — 목적지마다 다른 외부 포트를 쓴다 → 홀 펀칭이 거의 불가능 (엄격)

  • 양쪽 다 Symmetric 이면 TURN 서버로 트래픽을 중계해야 한다 — 비용이 든다

홀 펀칭의 원리

  • A 와 B 가 모두 NAT 뒤에 있다

  • ① 둘 다 시그널링 서버(STUN)에 접속한다 → 각자의 공인 IP:포트가 확인된다

  • ② 서버가 서로에게 상대의 주소를 알려 준다

  • ③ 동시에 서로에게 패킷을 보낸다

    • 나가는 패킷이 각자의 NAT 에 매핑을 만든다
    • 상대의 패킷이 그 매핑을 타고 들어온다 (구멍이 뚫린다)

확인 명령

ip addr | grep inet          # 사설 IP
curl -s ifconfig.me          # 공인 IP
conntrack -L 2>/dev/null | head   # 리눅스 NAT 테이블 (iptables/nftables 사용 시)

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — IP 계층 — 라우팅·서브넷·NAT·best-effort