한양과학기술고등학교

에듀테크 프로젝트 대시보드

NAT (네트워크 주소 변환)

NAT — 네트워크 주소 변환 (Network Address Translation)

우리 집 컴퓨터·폰은 전부 192.168.x.x 같은 사설 IP를 쓴다. 이 주소는 전 세계에서 수십억 대가 똑같이 쓰고 있어서 인터넷에서는 길을 찾을 수 없다. 그런데도 인터넷이 되는 이유는 공유기(라우터)가 바깥으로 나가는 패킷의 출발지 IP·포트를 자기 공인 IP·포트로 바꿔치기하고, 그 대응 관계를 NAT 표에 적어 두기 때문이다. 응답이 돌아오면 표를 거꾸로 찾아 원래 기기로 되돌려 보낸다. 포트까지 바꿔 여러 기기가 공인 IP 하나를 나눠 쓰는 방식을 PAT(포트 주소 변환) 또는 NAT 오버로딩이라 부른다 — 오늘날 가정용 공유기가 하는 일이 바로 이것이다.

NAT 시뮬레이터 — 패킷이 나갔다 돌아오기

왼쪽 사설망 기기 하나(파랑)와 오른쪽 인터넷 서버 하나(주황)를 클릭해 고른 뒤 패킷 보내기를 누르세요.

사설망 · Private LAN
인터넷 · Public
기기와 서버를 고르고 패킷을 보내 보세요.
내부 (사설 IP:포트) → 변환된 외부 (공인 IP:포트) 목적지 서버 상태
아직 표가 비어 있습니다

표 한 줄이 하는 일

기기 192.168.0.10 가 브라우저에서 93.184.216.34:80 에 접속하면, OS는 임의의 출발 포트(예: 51514)를 붙여 패킷을 만든다. 공유기는 이렇게 처리한다:

# 나갈 때 (아웃바운드)
src 192.168.0.10:51514  dst 93.184.216.34:80
        │  공유기가 출발지를 바꿔치기 (+ 표에 기록)
        ▼
src 203.0.113.7:40001   dst 93.184.216.34:80   # 공인 IP로 나감

# 돌아올 때 (인바운드) — 서버는 40001로 답한다
src 93.184.216.34:80  dst 203.0.113.7:40001
        │  표에서 40001 을 찾아 원래 주인에게 되돌림
        ▼
src 93.184.216.34:80  dst 192.168.0.10:51514   # 내 PC로 도착
  • 키는 포트다. 공인 IP는 하나뿐이므로, 서로 다른 기기·연결을 구분하는 건 외부 포트 번호(40001, 40002, …). 그래서 이론상 한 공인 IP로 6만 개 넘는 동시 연결을 처리할 수 있다.
  • 표에 없는 인바운드는 버린다. 밖에서 먼저 203.0.113.7:40001 로 연결을 시도해도 대응 줄이 없으면 공유기가 그냥 폐기한다 → NAT가 사실상 방화벽 역할도 한다.
  • 엔트리는 시간이 지나면 만료된다. TCP 연결이 끝나거나 UDP가 한동안 조용하면 그 줄을 지워 포트를 재사용한다.

왜 NAT를 쓰나 · 무엇이 불편한가

측면NAT 덕분에NAT 때문에
IPv4 주소공인 IP 1개로 수백 대 연결진짜 해결이 아닌 임시방편 (근본 해결은 IPv6)
보안외부에서 내부로 임의 접속 차단보안을 NAT에 의존하면 위험 (방화벽 아님)
서버 운영—집에서 서버를 열려면 포트 포워딩 설정 필요
P2P·화상통화—양쪽 다 NAT 뒤 → STUN/TURN·홀펀칭으로 우회
  • 포트 포워딩: 공유기에 "외부 8080으로 오는 건 무조건 192.168.0.50:80 으로 넘겨라"라고 고정 줄을 미리 박아두는 것. 집 NAS·게임 서버를 열 때 쓴다.
  • CGNAT (Carrier-Grade NAT): 통신사가 가입자들끼리도 공인 IP를 공유시키는 2단 NAT. IPv4가 정말 부족해서 생겼고, 이 경우 포트 포워딩조차 불가능하다.
  • IPv6: 주소가 2128개라 기기마다 공인 주소를 줄 수 있어 원칙적으로 NAT가 필요 없다. 다만 "외부 접속 차단" 편의는 방화벽으로 따로 챙긴다.
  • 공유기 관리 페이지(192.168.0.1)에서 실제 NAT 세션 표를 직접 볼 수 있는 제품도 많다.