외부 포트포워딩 설정
서버를 접속하고 관리하려면 포트를 여는 것이 우선이다.
관리용 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
wget은 Minecraft 서버 파일을 다운로드하는 데 사용.
screen 백그라운드에서 Minecraft 서버를 실행하기 위한 것. 이후, 다양한 정보들을 수집하기 편하게 하기 위해 설치하였다.
openjdk-19-jdk는 Minecraft를 실행하는 데 필요한 Java 패키지.
버전 확인 후, 최신 버전으로 다운로드 해주었다.
nmap은 나중에 기본적인 문제 해결 목적으로 사용.
$ sudo useradd -m -r -d /opt/minecraft minecraft
$ sudo mkdir /opt/minecraft/server0
$ sudo wget -O /opt/minecraft/survival/minecraft_server.jar https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar
$ sudo bash -c "echo eula=true > /opt/minecraft/server0/eula.txt"
$ sudo chown -R minecraft /opt/minecraft/server0/
컴퓨터 전원을 매번 켤 때 마다 서버를 시작해줘야 하는 것은 사실 귀찮은 작업이다.
SystemD에 Minecraft 시작 스크립트를 추가하면 시스템 재부팅 후와 같이 필요할 때마다 Minecraft 서버를 시작하는 것이 매우 편리하기에, 설정해주었다.
$ sudo vi /etc/systemd/system/minecraft@.service
새 파일에 다음 내용을 붙여넣기 한다.
추가적인 설명을 하자면, 다른 부분은 사실 볼게 없고 ExecStart 부분의 Xmx4G 이 부분이 서버에 어느정도의 메모리를 할당할 것 인지 결정하는 부분이다. 본인은 기본인 2GB로 우선 설정해두었다.
파일을 저장하고 종료. 다음 명령어를 사용하여 서버를 자동으로 켜고 꺼지게 설정.
$ sudo systemctl enable minecraft@survival
$ 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로 설정.
이렇게 하면, 정품 유저가 아니라도 접속은 가능하게 된다.