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/24와192.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가 출발지를 공인 IP1.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 라우터에서 특정 외부 포트로 온 트래픽을 미리 지정한 내부 호스트로 보내는 정적 매핑. 자가 호스팅 서버를 외부에 열 때 쓴다.