게임 서버 구축 (3)

jw·2023년 11월 16일
0

게임 서버 구축

목록 보기
4/19

외부 포트포워딩 설정

서버를 접속하고 관리하려면 포트를 여는 것이 우선이다.
관리용 ssh 연결을 위한 포트 하나, 그리고 게임 서버에 접속을 위한 포트 이렇게 2개 포트를 열었다.

본인은 IpTIME 공유기를 사용하고 있다. 따라서, localhost로 공유기 관리에 접근해준다.


관리도구로 들어가준다.


고급 설정의 NAT/라우터 관리로 들어간다. (원격 관리 정보 부분의 경우, 원격에서 서버를 켤 수 있는 WOL(Wake On Lan) 을 설정하며 열어둔 것 이다. 후에 다시 다룰 예정)


1번 규칙이 ssh 접속을 위한 포트포워딩, 2번 규칙이 마인크래프트 서버 접속을 위한 포트포워딩이다. ssh는 통상적으로 22번 포트를 사용하지만, 다르게 사용했다. 그리고 마인크래프트 서버의 경우는 기본으로 사용하는 25565 포트를 사용해야 후에 설정할 dns 설정에서 깔끔하게 설정 가능하기 때문에 그대로 25565 포트를 열어주었다.

DNS

무료로 최대 한개의 DNS를 사용할 수 있게 해주는 사이트
https://www.duckdns.org/domains

DUCK DNS 라는 사이트에서 외부 ip 주소 dns 설정을 진행하였다.

이제 ducknduck.duckdns.org 주소로 서버에 접근이 가능하다!

서버 방화벽&포트 설정

서버에 현재 이것만 설정하고 접속하려면 당연히 접속이 불가능하다.
우분투 서버 자체에서 방화벽 활성화 후, 이전 언급했던 2개의 포트를 열어주었다.

이후, dns 주소로 ssh를 사용하여 외부 접속해보았다.

ducknduck ~ 라는 host로 접속이 되는 것을 확인.

하지만, 현재는 노트북과 데스크탑 모두 같은 공유기에 연결된 상태이기 때문에 외부에서도 연결이 원활한지 시험해보기 위해, 노트북에 핸드폰 핫스팟을 연결하여 다시 접속해 보았다.


끊겼다가 다시 접속이 되었다. 외부에서도 접속이 잘 되는 듯 하다.

서버 설치

마인크래프트 서버 설치 및 구성

Minecraft 서버를 실행하려면 몇 가지 패키지가 필요하므로 설치부터 진행했다.
명령줄 터미널을 열고 다음 두 명령을 입력.

$ sudo apt update
$ sudo apt install wget screen openjdk-19-jdk nmap
  1. wget은 Minecraft 서버 파일을 다운로드하는 데 사용.

  2. screen 백그라운드에서 Minecraft 서버를 실행하기 위한 것. 이후, 다양한 정보들을 수집하기 편하게 하기 위해 설치하였다.

  3. openjdk-19-jdk는 Minecraft를 실행하는 데 필요한 Java 패키지.
    버전 확인 후, 최신 버전으로 다운로드 해주었다.

  4. nmap은 나중에 기본적인 문제 해결 목적으로 사용.

Minecraft 사용자 만들기

  1. 루트나 다른 계정을 사용하는 대신 Minecraft 서버를 자체 전용 계정으로 실행하기 위해 다음 명령을 사용하여 새 계정을 만들었다.
$ sudo useradd -m -r -d /opt/minecraft minecraft
  1. 단일 호스트에서 Minecraft 서버의 여러 인스턴스를 실행할 수 있다. 후에 서버 인스턴스를 늘리는 경우도 있을 수 있기에 다음과 같이 경로 설정을 진행. 그 중 첫 번째 서버 인스턴스를 server0 라고 하였다.
$ sudo mkdir /opt/minecraft/server0
  1. 마인크래프트 홈페이지에서 현재 최신 java 버전을 확인 후, 그에 맞는 서버 파일을 설치.

    (사진은 다른 블로그에서 참조하였다. 본인 java와 버전 상이)
$ sudo wget -O /opt/minecraft/survival/minecraft_server.jar https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar
  1. Minecraft 서버를 설치하려면 이용 약관에 동의해야 한다.

    서버 구성 파일은 다음과 같다. 다음 중 eula.txt 파일을 수정해야 한다. 다음 명령어를 통해 수정해주었다.
$ sudo bash -c "echo eula=true > /opt/minecraft/server0/eula.txt" 
  1. 마지막으로 minecraft 사용자 계정에 Minecraft 서버 디렉터리에 대한 소유권을 부여.
$ sudo chown -R minecraft /opt/minecraft/server0/

Minecraft SystemD 시작 스크립트 만들기

컴퓨터 전원을 매번 켤 때 마다 서버를 시작해줘야 하는 것은 사실 귀찮은 작업이다.
SystemD에 Minecraft 시작 스크립트를 추가하면 시스템 재부팅 후와 같이 필요할 때마다 Minecraft 서버를 시작하는 것이 매우 편리하기에, 설정해주었다.

  1. 우선 편집기를 사용하여 다음 파일을 생성해준다.
$ sudo vi /etc/systemd/system/minecraft@.service
  1. 새 파일에 다음 내용을 붙여넣기 한다.

    추가적인 설명을 하자면, 다른 부분은 사실 볼게 없고 ExecStart 부분의 Xmx4G 이 부분이 서버에 어느정도의 메모리를 할당할 것 인지 결정하는 부분이다. 본인은 기본인 2GB로 우선 설정해두었다.

  2. 파일을 저장하고 종료. 다음 명령어를 사용하여 서버를 자동으로 켜고 꺼지게 설정.

$ sudo systemctl enable minecraft@survival
  1. 다음 명령어를 사용하여 stop, start로 수동으로 끄고 켜는 것도 가능하다.
$ sudo systemctl start minecraft@survival

마인크래프트 서버 시작

현재 서버가 이미 실행되어있는 상태이므로, 다음 명령어를 입력하여 서버 상태를 확인해주었다.

$ sudo systemctl status minecraft@server0


서버가 잘 실행되고 있다.

또한 Minecraft 서버가 들어오는 연결을 수신하고 있는지 확인하려면 nmap 명령을 사용하여 기본 Minecraft 포트인 25565를 확인하면 된다.

$ nmap -p 25565 localhost

추가 설정

사실.. 본인은 예정에 Minecraft 정품 계정을 가지고 있었는데, 무슨 이유에서인지 계정이 사라져버렸다... 그래서 어쩔 수 없이 '복돌'이라고도 불리는 크랙 버전으로 게임에 접속을 해야하기에 서버 내의 server.properties 파일을 수정해주었다.


정말 다양한 항목들이 있다. 예로 몇 개만 얘기하자면,
allow-fight: 말 그대로 pvp 모드가 가능하게 하는 설정
hardcore: 게임의 난이도를 올림
gamemode: survival, creative 등 다양한 모드가 있다.

다양한 옵션 중에서 online-mode를 false로 설정.
이렇게 하면, 정품 유저가 아니라도 접속은 가능하게 된다.

profile
『Infra Engineering』

0개의 댓글

관련 채용 정보