도메인으로 서버 열기

필자가 처음 서버 운영을 접한 2011년경에는 대부분의 소규모 서버들이 하마치를 사용하여 서버를 열었다. 지금은 아닌 걸로 밝혀졌지만 당시에는 하마치를 쓰면 DDoS의 위험에서 벗어날 수 있다는 믿음이 있었고, 결정적으로 도메인으로 여는 건 어렵다는 막연한 인식이 있었기에 그랬을 것이다.

그렇게 시간이 흘러 현재는 서버를 도메인으로 여는 방법이 많이 알려지게 되어 어느 정도 수준 이상의 서버들에서는 도메인을 쓰지 않는 경우가 손에 꼽을 정도로 줄어들었다. 그럼에도 모르는 사람이 분명 있을 것이기에 이렇게 글을 써 본다.

도메인은 유료?

.com, .co.kr 같이 도메인답게 느껴지는 도메인은 물론 유료이다. 그렇지만 무료 도메인도 찾아보면 없지 않다. 가장 유명한 무료 도메인들은 다음과 같다.

  1. 내도메인.한국: 내도메인.한국
  2. freenom: https://www.freenom.com/en/index.html?lang=en

이외에도 MCVKR 서비스를 이용한다면 mcv.kr 도메인을 무료로 이용할 수 있다. 언급한 것 외에도 많은 무료 도메인이 있으니 찾아보면 좋을 것이다.

도메인 연결하기

도메인 연결은 의외로 간단하다. 도메인을 구매한 곳 혹은 무료 도메인의 관리 페이지에서 A 레코드를 생성하고 서버의 IP를 연결해 주면 끝나는 것이다. 자세한 과정은 다음과 같다.

내도메인.한국 기준

내도메인.한국으로 도메인 연결하기 1단계
  1. 한글 도메인 검색” 또는 “일반 도메인 검색“에 원하는 도메인 이름 입력 후 검색.
내도메인.한국으로 도메인 연결하기 2단계

2. 보안코드 입력 후 “등록하기” 클릭.

내도메인.한국으로 도메인 연결하기 3단계

3. “도메인 관리” 클릭 후 “[수정]” 클릭.

내도메인.한국으로 도메인 연결하기 마지막 단계

4. “IP연결(A)” 체크 및 A 레코드명(www 등)과 연결할 서버의 IP 입력하기.

Cloudflare(클라우드 플레어) 기준

클라우드 플레어로 도메인 연결하기 1단계
  1. 클라우드 플레어에 로그인 후 좌측 메뉴에서 “DNS” 클릭.
클라우드 플레어로 도메인 연결하기 마지막 단계

2. “Add record” 클릭 후 형식을 “A“로 맞추고 “Name (required)” 칸에 A 레코드명(또는 @), “IPv4 address (required)” 칸에 연결할 서버의 IP 주소 입력.

그다음 “Proxy status“의 체크를 해제해 주고 “Save” 클릭.

※A 레코드명을 @로 입력하면 A 레코드 없이 루트 도메인 주소를 그대로 쓸 수 있다.

이렇게 하면 도메인으로 서버를 열 준비는 끝난다.

마인크래프트 EULA에 대해 알아보기

EULA란 무엇인가?

대다수의 사람들이 EULA에 대해 말하지만 이게 정확히 무엇인지 아는 사람은 생각보다 많지 않다. EULA를 풀어서 쓰면 ‘End-User License Agreement’, 즉 ‘우리 소프트웨어를 사용한다면 이것만큼은 지켜야 한다’라는 일종의 계약이다.

EULA는 법인가?

어떤 사람들은 EULA를 “율라법”이라고 하는데 이는 매우 잘못된 용법이다. EULA가 법이 아닌 이유는 다음과 같이 정리할 수 있다. 먼저 EULA의 풀 네임 ‘End-User License Agreement’에서 눈을 씻고 봐도 Law(법)라는 단어는 없다. 그리고 우리가 물건을 훔치면 법에 의한 처벌을 받게 되지만, EULA를 어긴다고 쇠고랑을 차진 않는다. 이는 계약이 법률로써 보호를 받지만, 법률보다 높은 위치에 있지는 않기 때문이다.

그렇다면 어차피 처벌을 안 받으니 EULA를 마구 어겨도 상관없을까? 절대 그렇지 않다. 회사에 무단으로 나가지 않는다고 법에 의한 처벌을 받진 않지만, 내부적인 규율에 의해 감봉 등의 징계를 받을 수 있다. 또한 무단결근으로 인해 회사에 실질적인 손해를 끼쳤다면 손해배상과 같은 법적인 책임까지 질 수 있다. EULA 또한 마찬가지이다. EULA를 위반하면 제공사 측은 소프트웨어 사용 제한 등의 사적인 조치를 취할 수 있고, 이 과정에서 실제 법률적인 부분을 위반하였다면 소송 절차를 진행할 수도 있는 것이다.

마인크래프트의 EULA에서 금지ㆍ제한하고 있는 사항은 무엇인가?

마인크래프트의 EULA(https://www.minecraft.net/ko-kr/eula)에서 말하는 대표적인 금지ㆍ제한 사항은 다음과 같다.

  1. 게임의 복사본을 타인에게 제공
  2. 게임 계정을 타인에게 판매
  3. 모드가 포함된 클라이언트 배포
  4. 게임을 상업적으로 사용
  5. 제3자의 것을 마치 공식적인 걸로 속이기
  6. 게임으로 수익 창출

여기서 서버 운영자가 유심히 봐야 할 것은 3~6번이다. 먼저 3번(모드가 포함된 클라이언트 배포)은 말 그대로 모드가 포함된 클라이언트를 배포하지 말라는 뜻이다. 필자가 처음 마인크래프트 서버를 운영했던 2010년대 초중반에 모드가 포함된 클라이언트를 제공하는 서버가 특히 유행했던 것으로 기억하는데, 원칙대로만 보면 이 서버들은 EULA를 위반한 것이다.

그럼 일부 유저들이 사용하는 Lunar Client(루나 클라이언트)나 Feather Client(깃털 클라이언트)는 EULA를 위반한 것일까? 그렇지 않다. 이것들은 사용자가 클라이언트를 받는 즉시 모드가 깔리지 않는다. 이 말은 모드를 클라이언트와 별개로 다운로드되게 한다면 EULA 위반이 아니게 된다는 것이다. 3번은 클라이언트와 모드를 통째로 배포하는 것을 금지하는 내용이 골자이기 때문에 그렇다.

4번(게임을 상업적으로 사용)은 게임을 개인이나 회사의 브랜드를 광고하는 수단으로 쓰지 말라는 뜻이다. 이 말에 따르면 내 가게나 회사를 마인크래프트 서버를 이용해서 홍보할 수 없다.

5번(제3자의 것을 마치 공식적인 걸로 속이기)은 내가 만든 것이 마치 마인크래프트와 마이크로소프트에서 직접 지원받거나 모종의 계약이 있었던 것처럼 보이게 하지 말라는 의미이다. 만약 서버의 이름을 “마인크래프트 서버”로 하거나 마인크래프트나 마이크로소프트의 로고를 사용하면 문제의 소지가 있는 것이다. 이 경우가 아니더라도 웬만하면 서버 홈페이지 등에 ‘이 서버는 Mojang Studios나 Microsoft와는 관련이 없다’라는 말을 적어 두는 게 바람직할 것이다.

6번(게임으로 수익 창출)은 특히 중요한데, 마인크래프트에서 EULA라고 하면 주로 이것을 떠올리기도 하고, 서버를 통한 수익 창출을 일부 제한하고 있는 내용이기 때문이다. 편의를 위해 질의응답식으로 하겠다.

Q. 서버 접속비를 받는 것(=서버 유료화)이 가능한가?

A. 가능하다. 단 모든 사람에게 같은 접속비를 받아야 하고, 모든 사람에게 동일한 혜택을 주어야 하고, 정품 사용자만 허용해야 한다.

Q. 후원자에게 능력치가 더 높은 아이템을 지급하는 것이 가능한가?

A. 불가능하다. 일부 사람들은 후원자 전용 아이템을 일반 게임 플레이를 통해서 얻을 수 있으면 상관없다고 하는데 전혀 그렇지 않다. EULA 어디에도 ‘비 후원자가 게임 플레이를 통해 동일한 아이템을 얻을 수 있다면 OK’라는 말은 없기 때문이다. 즉, 이펙트나 칭호와 같은 단순 치장 기능이 아니라면 전부 EULA 위반이다.

Q. 암호화폐(코인)과 인게임 머니를 연동할 수 있는가?

A. 불가능하다. 대부분의 암호화폐는 거래소나 개인 간 거래를 통해 실제 현금으로 바꿀 수 있는데, EULA에서는 인게임 머니를 실제 통화 또는 이와 동일한 가치를 지니는 것으로 교환하는 것을 원천적으로 금지하고 있기 때문이다. 예시로 플러그인 중 암호 화폐와 연동하는 플러그인이 몇 있는데, 원칙적으로 따지면 EULA를 위반하는 플러그인이다.

지금까지 마인크래프트 EULA에 대해 알아보았다. 마인크래프트 유저, 특히 서버 운영자라면 필히 살펴보아야 나중에 유무형의 피해를 입는 일이 없을 것이다.

마인크래프트 서버를 열 때 고려해보면 좋을 것들

개인 PC or 호스팅

개인 PC로 오픈을 한다면 전기세나 기타 비용 등을 제하고 보았을 때 추가적으로 소요되는 비용이 거의 없다고 봐도 무방하다. 다만 개인적인 용도로 대부분을 사용하는 PC를 서버로 쓰게 되는 것이니 여러 불편함도 감수해야 하고, 이로 인해 24시간 운영은 거의 불가능하다고 봐야 된다.

호스팅을 선택한다면 앞서 언급한 문제들을 전부 해결할 수 있다. 일단 개인 PC와는 별개로 IDC 센터에 입주된 컴퓨터를 이용하는 것이므로 개인 PC와는 전혀 상관없이 운영할 수 있다. 또한 정전이나 점검 등 사 측의 특별한 사정이 없는 한 컴퓨터는 24시간 가동되므로 완벽한 24시간 운영이 가능해진다. 단점은 단 한 가지, 돈이다. 구매비, 설치비, 경우에 따라 트래픽 비용 등 여러 가지 이유로 비용이 많이 소요된다.

따라서 자신이 열고 싶은 서버의 특성에 따라 방법을 정해야 한다. 만약 자신이 소규모로 몇몇의 사람들과만 즐길 예정이라면 24시간 운영은 사실상 필요없다. 이런 경우는 개인 PC를 선택하는 것이 옳을 것이다. 반대로 여러 플레이어를 받고 컨텐츠를 제공하는, 서버다운 서버를 열려고 한다면 호스팅을 선택하는 걸 추천한다.

리눅스 vs 윈도우

흔히들 서버를 구동할 때에는 리눅스(Linux)를 선택하라곤 한다. 아마도 리눅스를 설치할 때 쓸데없는 기능들을 전부 빼고 필요한 것들만 설치할 수 있어 윈도우(Windows)에 비해 가벼운 운영이 가능하기 때문일 것이다. 그렇지만 리눅스가 아무리 장점이 많다고 해도 리눅스를 평생 사용해 본 적이 없다면 운영은커녕 서버 열기부터 난감한 상황에 빠질 수 있다.

만약 자신이 정말로 리눅스 사용에 자신이 없다면 윈도우 서버(Windows Server)를 사용하는 것도 하나의 대안이 될 수 있다. 리눅스에 비해 익숙하고 개인용 윈도우에 비해 한결 가벼운 것이 장점이다. 특히 우리에게 익숙한 윈도우의 GUI를 그대로 사용하므로 따로 학습하지 않아도 긴급한 때에 어느 정도 빠른 대응이 가능할 수 있다.

정리하자면, 본인이 긴급상황이나 오류에 어느 정도 대응이 가능할 정도로 리눅스를 알고 있다면 리눅스를 선택하는 것이 좋고, 리눅스를 평생 사용해 본 적이 없고 감이 아예 없다면 윈도우나 윈도우 서버를 선택하는 게 차선책이 될 수 있다.

서버 코어

마인크래프트는 공식적인 서버 코어를 제공하고 있다. 그럼 공식 코어로만 열면 만사 OK일까?

물론 자신이 마인크래프트에서 기본적으로 제공되는 기능들로만 운영할 자신이 있다면 그래도 상관없다. 그렇지만 몇몇 지인들과만 할 게 아니라면 다양한 기능을 추가해 주는 기능인 플러그인(Plugin)을 사용해야 한다. 공식 코어는 이런 플러그인을 추가할 수 없다. 이것이 가장 큰 단점이다.

당연히 공식 코어에도 장점은 있다. 마인크래프트는 주기적으로 대규모 업데이트가 이루어지는 편인데, 비공식 코어는 여러 개인이 모여 개발하는 경우가 대부분이라서 새로운 버전 대응이 늦다. 반면 공식 코어는 개발사에서 직접 만드니 새로운 버전이 나오면 이와 동시에 새 버전에 맞는 파일을 받을 수 있다. 플러그인을 지원하지 않는다는 사실이 이 모든 장점을 상쇄할 뿐이다.

그렇다면 플러그인을 지원하는 비공식 코어에는 어떤 종류가 있을까? 2022년 현재 사용 가능한 비공식 코어들 중 가장 일반적이면서 대표적인 것들은 다음과 같다.

  1. Spigot [다운로드]
  2. Paper [다운로드]

첫 번째의 Spigot은 개발이 활발하게 이루어지고 있으므로 가장 빠르게 최신 버전 코어를 만나볼 수 있는 장점이 있다. 이것을 한층 더 개선한 것이 Paper인데, Spigot의 모든 기능에 여러 가지 설정을 추가적으로 지원하여 서버를 본인의 입맛대로 최적화시키기에 안성맞춤이다. 둘 중 어느 것을 사용해도 플러그인을 사용할 수 있지만, 개인적으로 조금 더 세부적인 설정이 가능한 Paper를 추천하는 편이다.

보안 대책

이제 웬만한 사항들을 모두 정했다면 보안 대책도 세워야 한다. 보안 대책을 세우는 이유는 공격으로 인한 운영 차질을 미연에 방지하기 위해서이다. 필자는 보안 대책을 세울 적엔 안에서의 보안과 밖에서의 보안으로 나눠 생각하면 좋다고 본다.

안에서의 보안은 말 그대로 권한 탈취를 방지하는 등의 내부적인 대책이다. 이것에는 아무에게나 최고 관리자 권한(OP) 주지 않기, 아무 데서나 플러그인 받지 않기 등이 있다. 특히 아무 데서나 플러그인을 받지 않는 건 생각보다 매우 중요한데, 공식 플러그인 배포처가 아닌 네이버 블로그 등지에 개인이 업로드한 플러그인들은 재수 없으면 내부에 백도어 코드가 심어져 있는 것을 받게 될 수도 있기 때문이다.

이렇게 안에서의 보안을 철저히 신경 써도 밖에서의 보안을 함께 고려하지 않는다면 말짱 도루묵이다. 분산 서비스 거부 공격(DDoS) 등 외부적인 요인을 차단하는 밖에서의 보안도 세워야 한다. 디도스 공격은 호스팅 사용 시 특히 취약할 수밖에 없는데, 대부분의 호스팅사에서는 1~2회 이상 공격을 받을 경우 서비스를 직권 해지한다는 약관이 존재하기 때문이다. 즉 피해는 피해대로 보고 서버 운영까지 강제로 접게 되는 대참사가 일어날 수 있다. 그러니 만반의 대비를 해야 될 필요성이 있다.

디도스 공격은 어찌하면 방지할 수 있을까? 필자는 두 가지 방법이 있다고 본다.

  1. 디도스 방어존
  2. 디도스 완화 서비스

첫 번째 디도스 방어존은 호스팅(IDC) 차원에서 디도스를 막아내는 방법이다. 즉 집안에 도둑을 막아내는 경호원을 여럿 두는 거나 마찬가지로 진짜 서버 IP를 공격자가 탈취하여도 공격이 최대한 먹히지 않게 해준다. 다만 이 방법은 가격이 평균 월 100만 원 정도로 개인이 부담하기엔 매우 비싸다. 그래도 사용하고 싶다면 이용 중인 호스팅의 홈페이지를 참조해 보면 될 것이다.

두 번째 디도스 완화 서비스는 집의 뒷문들을 모두 잠그고 정문 한 곳에 검문소를 두는 방법이다. 가격은 무료부터 존재하며 웬만하면 10만 원 내외로 디도스를 방어할 수 있다. 단점으로는 해외 디도스 완화 서비스를 이용한다면 핑이 높아져 서버 플레이가 힘들어질 수 있고 진짜 IP가 노출되었다면 소용이 없어진다. 공격자가 검문소를 피해 뒷문으로 침입하면 어찌할 방도가 없기 때문이다. 이 방법을 사용할 때 가장 유의해야 할 것은 진짜 IP가 노출되지 않도록 하는 것이다.

디도스 완화 서비스에는 무료인 MCVKR, 해외 서비스 중 그나마 사용할 만한 GameShield 등이 있다.

마치며

지금까지 마인크래프트 서버를 운영할 때 고려해 보면 좋을 것들에 대해 알아보았다. 이 글에서 말한 것들 외에도 운영을 하면서 생기는 여러 돌발 변수들은 무수히 많다. 이런 것들을 스스로 터득해서 본인의 서버에 맞게 대응하고 설계하는 능력을 키운다면 진정한 어드민이 될 수 있을 것이다.