네트워크 기초

NAT와 IPv6 개요

meellon 2026. 7. 2. 05:10

학습 목표

IPv4 주소 고갈RFC 1918 사설 IP가 왜 쓰이는지 설명할 수 있다.

NAT / NAPT가 출발지 IP·포트를 바꿔 여러 내부 호스트공인 IP 하나로 나가게 하는 방식을 설명할 수 있다.

NAT의 한계(수신 연결, P2P, end-to-end)를 설명할 수 있다.

IPv6128비트 주소·표기·듀얼 스택 전환 배경을 설명할 수 있다.

문제 상황

  • 집·회사 PC는 192.168.x.x인데, whatismyip전혀 다른 공인 IP다
    • 사설 주소NAT를 모르면 “같은 IP를 전 세계가 쓰나?” 혼란
  • 로컬에서 띄운 서버(localhost:8080)를 외부에서 접속하게 하려면 포트 포워딩이 필요하다
    • NAT는 기본적으로 아웃바운드 위주 — 인바운드는 규칙 추가
  • kubectl port-forward·LoadBalancer·Ingress 뒤에도 SNAT/DNAT 개념이 깔려 있다
  • IPv6는 “언젠가 온다”는데, 실무에서는 여전히 IPv4 + NAT가 대부분이다
    • IPv6가 필요한지, 지금 어떻게 공존하는지 구분이 필요하다

IP·라우팅·ICMP까지 봤다. 주소 부족을 메우는 NAT차세대 주소 체계 IPv6다.

1. IPv4 고갈과 사설 IP

IPv432비트 — 이론상 약 43억 주소. 인터넷 호스트·모바일·IoT가 늘면서 공인(global) 주소부족해졌다.

대응 내용
CIDR 주소 블록 할당·서브넷 효율화 (IP와 라우팅)
사설 IP (RFC 1918) 조직 내부에서만 쓰는 재사용 가능 블록
NAT 사설 IP 호스트가 공인 IP대신 나가게 함

대역 CIDR 용도 예
10.0.0.0 – 10.255.255.255 10.0.0.0/8 대형 VPC·캠퍼스
172.16.0.0 – 172.31.255.255 172.16.0.0/12 Docker 기본 브리지 등
192.168.0.0 – 192.168.255.255 192.168.0.0/16 가정·소규모 LAN
  • 사설 IP공인 인터넷에서 라우팅되지 않음 — 중복 사용 OK (집마다 192.168.1.1 가능)
  • 공인 IP전역 유일 — ISP·클라우드가 할당
  • 사설만 있으면 외부와 통신 불가NAT 라우터(게이트웨이) 가 경계

2. NAT와 NAPT

NAT(Network Address Translation) 는 IP 패킷의 주소 필드변환한다. 가정·소규모 회선에서 흔한 형태는 NAPT(Network Address Port Translation) — IP + 포트 함께 바꿈. 일상에서는 “NAT”라고 하면 보통 이것.

LAN Host A     192.168.1.10:51432
       |
       |  TCP src 192.168.1.10:51432  dst 93.184.216.34:443
       v
NAT Router     LAN 192.168.1.1  |  WAN 203.0.113.50
       |  rewrite src → 203.0.113.50:62001
       |  NAT table: 192.168.1.10:51432 ↔ 203.0.113.50:62001
       v
Internet       dst still 93.184.216.34:443
       |
       v  reply to 203.0.113.50:62001
NAT Router     reverse lookup → forward to 192.168.1.10:51432
용어 설명
SNAT 출발지 주소 변환 — LAN → 인터넷 나갈 때
DNAT 목적지 주소 변환 — 포트 포워딩·로드밸런서
NAPT / PAT 여러 내부 (IP, port)공인 IP의 서로 다른 포트
Translation table (내부 IP, port, proto)(공인 IP, port)타임아웃 후 삭제
  • 아웃바운드 — 내부가 먼저 연결 → NAT가 임시 매핑 생성 → 응답은 역변환
  • 인바운드(서버 공개) — 라우터에 포트 포워딩 규칙: WAN:443192.168.1.20:8443
  • Connection tracking — TCP 상태를 보고 역방향만 허용 (stateful NAT)

3. NAT의 한계와 운영 이슈

NAT는 주소 부족을 완화했지만, end-to-end 원칙을 깨뜨린다.

이슈 설명
인바운드 연결 내부 호스트는 기본적으로 외부에서 직접 접속 불가 — 포트 포워딩·DMZ
P2P·WebRTC 양쪽이 사설 IP면 STUN/TURN, hole punching 등 우회
IP 기반 ACL 내부는 사설 IP — 공인 IP 기준 방화벽과 불일치
Hairpin NAT 같은 공인 IP로 내부에서 자기 공인 IP 접속 — 라우터가 루프백 NAT 지원해야 함
CGNAT ISP가 공인 IP 하나를 여러 가입자가 공유 — 이중 NAT, 포트 포워딩 불가
  • 로그·추적 — 서버 로그의 클라이언트 IP는 NAT 공인 IP — 실제 내부 호스트는 별도 상관관계 필요
  • FTP·SIP·IPsec주소를 페이로드에 넣는 프로토콜 — ALG 필요하거나 깨짐
  • KubernetesNodePort/LoadBalancer/Ingress는 클러스터 SNAT/DNAT·kube-proxy와 맞물림

4. IPv6 개요

IPv6128비트 주소 — 이론상 거의 무한에 가까운 공간. 주소 고갈·NAT 의존 완화가 목표.

항목 IPv4 IPv6
길이 32비트 128비트
표기 192.168.1.10 2001:db8:85a3::8a2e:370:7334
압축 연속 0 블록을 :: (한 번만)
일반 prefix 다양 종종 /64 (서브넷·인터페이스 ID)
ICMP ICMP ICMPv6 (Neighbor Discovery 등)
2001:0db8:85a3:0000:0000:8a2e:0370:7334
  → 2001:db8:85a3::8a2e:370:7334   (:: = 중간 0 생략)

2001:db8:85a3::1/64
  network prefix: 2001:db8:85a3  (64 bits)
  interface ID:   ::1            (하위 64 bits)
  • SLAAC — 라우터 광고(RA)로 prefix 받고 자체 interface ID 구성
  • DHCPv6 — 주소·옵션 서버 할당 (IPv4 DHCP와 유사 역할)
  • NAT66 — 존재하지만 IPv6 설계 철학과는 거리 — 보통 공인 주소 직접 사용
  • Unique Local (fc00::/7) — 사설 IPv6 (RFC 4193), ULA

5. IPv4와 IPv6 공존 (전환)

당장 IPv4를 끊기 어렵다. 병행이 일반적이다.

방식 설명
Dual stack 호스트·라우터에 IPv4 + IPv6 동시AAAA/A DNS 레코드
Tunneling IPv6 패킷을 IPv4 안에 실어 전달 (6to4, Teredo — 레거시)
Translation NAT64·DNS64 — IPv6-only 클라이언트가 IPv4 서버 접속
Client dual-stack
  curl -4 https://example.com   → A record  → IPv4 path (maybe NAT)
  curl -6 https://example.com   → AAAA record → IPv6 path (often no NAT)
  • Happy Eyeballs — 브라우저가 IPv6·IPv4 동시 시도 후 빠른 쪽 선택
  • 클라우드 VPC — IPv6 CIDR 할당·서브넷 dual-stack 옵션 증가
  • 운영에서는 방화벽·보안 그룹을 v4/v6 각각 열어야 하는 경우 많음

6. 관측

# 사설 vs 공인 — 로컬 인터페이스
ip -4 addr show
# inet 192.168.1.10/24  (private)
# inet 10.0.0.5/24      (private)

# 기본 게이트웨이 = 보통 NAT 라우터
ip route | grep default
# default via 192.168.1.1 dev wlan0

# IPv6 주소·라우트
ip -6 addr show
ip -6 route show
# 공인 IP 확인 (NAT 이후 WAN 주소)
curl -4 -s ifconfig.me

# IPv6 도달성 (네트워크·DNS가 지원할 때)
ping -6 -c 2 2001:4860:4860::8888    # Google Public DNS IPv6
curl -6 -s -o /dev/null -w "%{http_code}\n" https://ipv6.google.com
# macOS
ifconfig en0 | grep inet
netstat -rn -f inet6 | head
  • fe80::link-local (IPv6), 같은 링크에서만
  • ::1 — IPv6 loopback
  • NAT 테이블은 보통 rootconntrack -L (Linux, 모듈별)

7. 정리

  • 사설 IP(RFC 1918) — 내부 재사용, 인터넷 미라우팅
  • NAT/NAPT — 주소 변환 + 포트 매핑으로 여러 호스트 → 공인 IP
  • 인바운드·P2P는 NAT 추가 설정·우회 기술 필요
  • IPv6 — 128비트, :: 표기, 듀얼 스택으로 v4와 공존
  • 장기적으로 NAT 의존 감소가 IPv6의 한 목표 — 현실은 혼합 운영

다음에 다룰 것

  • 이더넷과 MAC
  • 프레임, ARP, 스위치 vs 허브

해당 내용은 Computer Networking: A Top-Down Approach, 8/E (James Kurose, Keith Ross) 의 내용을 기반으로 합니다.

'네트워크 기초' 카테고리의 다른 글

물리 계층과 매체  (0) 2026.07.04
이더넷과 MAC  (0) 2026.07.03
ICMP과 진단  (0) 2026.07.01
IP와 라우팅  (0) 2026.06.30
TCP 심화  (0) 2026.06.29