C.W.K.
Stream
Lesson 07 of 12 · published

NAT

~15 min · nat, pat, port-forwarding, private-network

Level 0Pinger
0 XP0/101 lessons0/12 achievements
0/150 XP to next level150 XP to go0% complete

한 개의 public IP, 여러 장치

NAT(Network Address Translation) 가 집안 전체 — 노트북, 폰, TV, IoT — 가 단 하나의 public IP 를 공유하게 만드는 방법이야. 라우터가 사설 망이랑 인터넷의 경계에 앉아서 나갈 때 / 들어올 때 주소를 번역. NAT 없으면 모든 장치가 자기 public IPv4 가져야 했고 — 그건 진작에 다 떨어졌어.

번역, 한 단계씩

  1. 노트북 (192.168.1.42) 이 웹페이지 가져오려 함. 패킷 보냄:
    출발 192.168.1.42:52847 도착 93.184.216.34:443
  2. 라우터가 출발지 재기록 — public IP 의 미사용 포트 (예: 30001) 골라서 매핑 기억:
    출발 [your-public-IP]:30001 도착 93.184.216.34:443
  3. 서버가 네 public IP, 포트 30001 로 답.
  4. 라우터가 NAT 테이블 조회: "포트 30001 은 192.168.1.42:52847 거."
  5. 라우터가 도착지 다시 노트북으로 재기록해서 forward.

PAT — 가정용 라우터가 진짜 하는 일

대부분의 가정용 라우터는 고전 NAT (사설 IP 1 ↔ public IP 1) 안 해. PAT(Port Address Translation, "NAT overload" 또는 "masquerading") 야 — 라우터가 다른 public-side 포트를 써서 여러 사설 장치를 한 public IP 에 다중화. 매핑 테이블에 사설 IP 랑 사설 포트 둘 다, public 포트로 키 잡아서 들고 있어.

외부 → 집 연결이 어려운 이유

NAT 은 outbound 연결만 자연스럽게 처리. 카페에서 집 서버 사설 IP 로 도달 시도하면 카페엔 경로가 없어. 집 라우터는 public IP 가지고 있지만 어느 내부 장치 거인지 몰라 — "unsolicited inbound" 라서. 탈출구 셋:

  • Port forwarding — "public 22 들어오면 → 192.168.1.100:22." 동작은 하지만 서비스를 인터넷에 노출.
  • UPnP — 안에서 자동 port forward 요청. 편한데 자주 안전하지 않음. 보통 꺼.
  • VPN / Tailscale / WireGuard — NAT 우회하는 암호화 터널. Track 6.

Code

NAT 직접 보기·bash
# Your private IP
ipconfig getifaddr en0

# Your public IP (after NAT)
curl -s https://ifconfig.me
echo

# Compare them — they're different. NAT did that.
# Run on two devices on the same Wi-Fi:
# private IPs differ, public IPs are identical. That's PAT.

External links

Exercise

같은 Wi-Fi 의 두 장치에서 ipconfig getifaddr en0curl -s https://ifconfig.me 돌려. 사설 IP 는 다르고 (다른 NAT 엔트리), public IP 는 같음 (한 개의 공유 출구) 확인. 그다음 CGNAT 확인 — public IP 가 100.64.– 로 시작하거나 라우터 WAN IP 자체가 100.64.0.0/10 안이면 너 CGNAT 뒤에. CGNAT 은 port forwarding 대신 Tailscale 쓰라는 가장 강한 논거.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.