← 문제로

5. IP 주소 체계, 서브넷, NAT의 기본

난이도 하
내 답안
모범답안

모범답안 — IP 주소 체계, 서브넷, NAT의 기본

난이도: 하

핵심 답변

  • 공인 IP: 인터넷에서 전역 유일하게 라우팅되는 주소. 사설 IP: 조직 내부에서만 쓰는 주소(RFC 1918: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). 사설 IP는 인터넷 라우터가 의도적으로 폐기하므로 직접 라우팅 안 됨 → 외부와 통신하려면 NAT로 공인 IP로 변환.
  • 서브넷 마스크/CIDR: IP를 "네트워크부 + 호스트부"로 나누는 경계. /24는 앞 24비트가 네트워크, 나머지 8비트가 호스트 → 호스트 254개(2^8 - 네트워크·브로드캐스트 2개).
  • NAT: 내부 사설 IP를 외부 공인 IP로 변환. 응답을 올바른 내부 호스트로 되돌리기 위해 (내부 IP:포트 ↔ 공인 IP:포트) 매핑 테이블을 유지한다(보통 NAPT, 포트까지 변환).

깊이 있는 설명 (왜, 메커니즘)

공인 vs 사설 IP

IPv4 주소는 32비트(약 43억 개)뿐이라 모든 기기에 공인 IP를 줄 수 없다. 그래서 RFC 1918이 인터넷에서 라우팅하지 않기로 약속한 사설 대역을 정의:

  • 10.0.0.0/8 (10.x.x.x) — 약 1670만 호스트
  • 172.16.0.0/12 (172.16~172.31.x.x)
  • 192.168.0.0/16 (192.168.x.x) — 가정용 공유기 기본

인터넷 백본 라우터는 이 대역의 목적지를 받으면 버린다. 따라서 사설망의 기기는 NAT 게이트웨이를 통해서만 외부에 나간다.

서브넷 마스크 / CIDR

  • 192.168.10.0/24: 마스크 255.255.255.0. 네트워크 24비트 + 호스트 8비트. 사용 가능 호스트 254개(.1~.254, .0은 네트워크 주소, .255는 브로드캐스트).
  • 10.0.0.0/16: 마스크 255.255.0.0. 호스트 16비트 → 2^16 - 2 = 65534개.
  • 같은 서브넷 판단: 두 IP에 서브넷 마스크를 AND 연산해 네트워크 부분이 같으면 같은 서브넷. 예) 192.168.10.5/24192.168.10.200/24 → 둘 다 네트워크가 192.168.10.0 → 같은 서브넷 → 라우터 없이 직접(L2) 통신. 192.168.11.5면 다른 서브넷 → 게이트웨이(라우터) 경유.

NAT 메커니즘

가정용/클라우드 NAT는 대부분 NAPT(Network Address Port Translation, PAT):

  • 내부 호스트 10.0.0.7:51000이 외부 203.0.113.9:443으로 나가면, NAT가 출발지를 자신의 공인 IP+할당 포트 198.51.100.1:62000으로 바꾸고, 매핑 (10.0.0.7:51000) ↔ (198.51.100.1:62000)을 테이블에 기록.
  • 외부에서 198.51.100.1:62000으로 응답이 오면 매핑을 역참조해 10.0.0.7:51000으로 되돌린다.
  • 그래서 서버 100대가 같은 공인 IP를 공유해도 포트로 구분해 응답을 정확히 분배한다.

응용/실무 연결 (게임서버에서)

  • 클라이언트 → 서버 접속 (질문 4): 집 PC 192.168.0.5:50000 → 공유기 NAT가 출발지를 공인 IP 1.2.3.4:60000으로 변환 → 서버는 출발지를 1.2.3.4:60000으로 본다(원래 사설 IP는 못 봄). 그래서 같은 집의 여러 클라이언트는 같은 공인 IP, 다른 포트로 구분된다. 게임 서버가 "클라이언트 IP"로 로깅/밴을 할 때 이 점(같은 공인 IP 뒤에 여러 유저, CGNAT면 수천 명 공유)을 고려해야 한다.
  • 클라우드 게임 서버는 보통 사설 IP로 내부 통신(서버 간, DB)하고, **로드밸런서/공인 IP(또는 Elastic IP)**로 외부 접속을 받는다. 매치메이킹이 인스턴스의 공인 IP:포트를 클라이언트에 알려주는 식.
  • NAT는 뒤(problem9의 NAT 트래버설/홀펀칭)에서 P2P 게임의 골칫거리가 된다. 양쪽 다 NAT 뒤면 매핑이 없어 서로 못 찾는다.

흔한 오답·함정

  • "사설 IP는 보안 기능이다" → NAT의 부수 효과로 외부에서 직접 못 들어오는 건 맞지만, 방화벽이 아니다. 보안은 별도.
  • "/24는 호스트 256개" → 네트워크·브로드캐스트 2개를 빼 254개.
  • "192.168.x.x만 사설 IP" → 10.x, 172.16~31.x도 사설. AWS/클라우드는 보통 10.x 대역.
  • "NAT는 IP만 바꾼다" → 가정/클라우드는 대부분 포트까지 바꾸는 NAPT. 그래야 여러 내부 호스트가 공인 IP 하나를 공유.
  • "서버가 클라이언트의 진짜 사설 IP를 본다" → 못 본다. NAT 변환된 공인 IP:포트만 본다.

꼬리질문 대비

  • Q. IPv6는 무엇을 해결하나? (질문 5) A. 128비트 주소로 사실상 무한대(~3.4×10^38). 주소 고갈 해소, NAT 없이 종단 간 직접 연결 가능(P2P에 유리), 헤더 단순화. 단, 게임 서버는 IPv4/IPv6 듀얼 스택을 지원해야 하고(아직 IPv4 클라가 많음), 매칭/밴/로깅이 두 체계를 다 다뤄야 한다. IPv6는 NAT가 줄어 홀펀칭 부담은 낮아진다.
  • Q. CGNAT(Carrier-Grade NAT)란? A. 통신사가 여러 가입자를 하나의 공인 IP로 묶는 대규모 NAT. 한 공인 IP 뒤에 수백~수천 유저 → IP 기반 밴이 무고한 유저까지 영향. 게임은 계정 기반 식별을 병행해야 한다.
  • Q. 게임 서버에 고정 IP가 필요한 이유? A. 클라이언트/매치메이커가 서버를 일관되게 찾아야 하므로. 클라우드에선 Elastic/고정 IP나 DNS 이름으로 안정적 엔드포인트를 제공.
  • Q. 포트 포워딩이란? A. NAT 라우터에서 특정 외부 포트로 온 트래픽을 미리 지정한 내부 호스트로 보내는 정적 매핑. 자가 호스팅 서버를 외부에 열 때 쓴다.