배틀넷으로 쉽게 이해하는 NAT와 포트포워딩

DoDoBest

·

2025. 4. 24. 21:32

 

스타크래프트나 워크래프트3를 플레이할 때, 배틀넷에서 친구와 함께 게임을 해 본 적 있으신가요?

 

스타크래프트의 사설 서버인 피시서버는 이미 종료된 지 꽤 됐고, 워크래프트3의 사설 서버인 m16 서버도 지난주 종료 소식을 전했습니다.

공식 배틀넷과 달리, 피시서버나 m16 서버 같은 비공식 사설 배틀넷 서버에서는 방을 생성하려면 공유기에서 포트포워딩이나 DMZ 설정이 필요했습니다.

이 설정 과정이 번거롭다 보니, 방을 생성할 수 있는 사람을 "방능자"라고 부르는 표현까지 생겨났습니다.

 

그렇다면 왜 포트포워딩이나 DMZ 설정이 필요했던 걸까요?

이 질문에 답하기 위해, 먼저 필요한 개념들을 차근차근 살펴보겠습니다.

 

1. NAT란 무엇인가?

NAT(Network Address Translation)는 사설 네트워크에서 사용하는 내부 IP 주소를 공용 IP 주소로 변환해주는 기술입니다.

인터넷이 빠르게 보급되면서, 전 세계적으로 사용할 수 있는 IPv4 주소(32비트 체계를 기반으로 하며 약 43억‬ 개의 주소를 표현할 수 있음)가 점점 부족해졌습니다. 이러한 IP 주소 고갈 문제를 해결하기 위해 NAT가 등장했습니다.

NAT를 사용하면 가정이나 회사 내의 여러 기기가 하나의 공용 IP 주소만으로 인터넷에 접속할 수 있습니다.

즉, 내부에서는 사설 IP를 사용하되, 외부와 통신할 때는 공용 IP 하나로 모든 기기를 대표하는 방식입니다.

 

 

2. 사설 IP와 공용 IP의 차이점

IP 주소는 크게 공용 IP와 사설 IP로 나눌 수 있습니다.

공용 IP는 인터넷 상에서 전 세계적으로 공유하며, 누구나 접근할 수 있는 주소입니다.

반면, 사설 IP는 로컬 네트워크 내부(Local Area Network, LAN)에서만 사용 가능한 주소로, 외부 인터넷에서는 직접 접근할 수 없습니다.

 

예를 들어, 가정에서 쓰는 공유기는 일반적으로 192.168.0.1과 같은 사설 IP를 DHCP(Dynamic Host Configuration Protocol)를 통해 내부 네트워크에 자동으로 할당합니다. DHCP는 클라이언트가 네트워크에 접속할 때 IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 등의 정보를 자동으로 받아오게 해주는 프로토콜입니다.

 

또한 혼동을 방지하기 위해, 공용 IP는 사설 IP 주소 대역을 사용하지 않습니다.

아래 범위 외의 IP를 내부 네트워크에 사용하면 충돌 또는 라우팅 문제가 생길 수 있습니다.

 

클래스 사설 IP 주소 범위 서브넷
클래스 A 10.0.0.0 ~ 10.255.255.255 10.0.0.0/8
클래스 B 172.16.0.0 ~ 172.31.255.255 172.16.0.0/12
클래스 C 192.168.0.0 ~ 192.168.255.255 192.168.0.0/16

 

 

3. 왜 사설 배틀넷에서 포트포워딩이 필요할까?

그렇다면 사설 서버 기반의 배틀넷에서 방을 생성하려면 왜 포트포워딩이나 DMZ 설정이 필요했을까요?

이는 사설 서버 운영 측에서 서버 유지 비용을 절감하기 위해, P2P(peer-to-peer) 방식으로 방을 생성하도록 설계했기 때문입니다.

예를 들어 유저 A가 방을 생성하면, 서버는 방 목록만을 관리하고, 다른 유저 B가 접속할 때는 서버가 아닌 유저 A의 컴퓨터에 직접 연결을 시도합니다.

그런데 유저 A가 사설 IP 환경에 있다면, 외부에서 직접 연결할 수 없습니다. 공유기는 사설 IP에서 먼저 시작된 요청에 대해서만 연결 정보를 추적하고, 응답을 전달할 수 있습니다. 외부에서 먼저 시작된 연결 요청은 공유기가 내부 기기를 알 수 없기 때문에 유저에게 전달되지 않습니다.

 

 

이 문제를 해결하기 위해, 공유기에서 특정 포트로 들어오는 요청을 방을 생성한 컴퓨터로 전달하도록 포트포워딩을 설정해야 합니다.

 

 

4. 포트포워딩이란

 

포트포워딩은 공유기(NAT 장비)가 외부에서 특정 포트로 들어오는 요청을, 내부 네트워크의 특정 IP 주소와 포트로 전달하도록 설정하는 것을 의미합니다. 예를 들어, 외부에서 공유기의 3000번 포트로 들어온 요청을 내부의 192.168.0.10:3000으로 전달할 수 있도록 설정하는 방식입니다.

 

5. DMZ란 무엇이고, 왜 사용할까?

DMZ(Demilitarized Zone)는 '비무장 지대'라는 뜻으로, 공유기(NAT 장비)가 들어오는 모든 외부 요청을 내부 네트워크의 특정 컴퓨터로 전달하도록 설정하는 방식입니다. 포트포워딩이 특정 포트만 열어두는 방식이라면, DMZ는 모든 포트를 열어두는 방식이라 볼 수 있습니다.

 

결론

과거 친구와 함께 게임을 하기 위한 수단으로만 여겼던 포트포워딩과 DMZ 설정이, 네트워크의 내부 동작을 이해하는 데 중요한 CS 개념임을 배울 수 있었습니다. NAT와 IP 주소, 포트포워딩의 원리를 이해하면서, 과거의 사설 배틀넷 서버 환경이 왜 그런 복잡한 설정을 요구했는지 명확하게 알 수 있었습니다.

 

포트포워딩 설정 방법은 아래 게시물을 참고해주세요.

 

https://dodobest.tistory.com/136

 

SK 브로드밴드 + iptime 포트포워딩 설정하기

SK 브로드밴드 모뎀(DASAN H660NB)과 iptime 공유기를 함께 사용할 때, 포트포워딩을 설정하는 방법에 대해 알아보겠습니다.SK 모뎀 자체가 공유기 역할도 하기 때문에, 두 번의 포트포워딩 설정이 필

dodobest.tistory.com

 

 

'학습 > CS' 카테고리의 다른 글

If I can use if, when to use when  (0) 2024.03.06
Sealed class vs Sealed interface vs Enum  (0) 2024.03.05
Kotlin에서 data class는 왜 사용할까  (0) 2024.02.16