はじめに
Secure Share Netやngrokなどを使えば、ポート開放なしでMinecraftサーバーを公開できます。
しかし、これらのサービスには帯域の制限やサーバーアドレスが変更されたりといった不便な点があります。
そこで、自分自身でこれを解決する方法を考えることにしました。
環境:
メインサーバー: Windows 11
VPSサーバー: Ubuntu 20.04
参考: https://qiita.com/warai_bukur0/items/1aa97a0f1ea0a028e5e4
注意事項
プレイヤーはVPSを経由するため、ユーザーのIPアドレスがVPSのIPアドレスに置き換わってしまいます。
そのため、IPアドレスを使ったユーザー管理ができなくなったり、セキュリティ面でのリスクが高まります。
したがって、中規模、大規模なサーバーを運営する場合は、VPS上にプロキシサーバーを設置する方が安全です。(いつか記事にします)
導入
1.VPSを借りる
ConoHaを使用します。(安いのでおすすめです)
アカウントを作成したら、VPSを追加しましょう。
今回はUbuntu 20.04を使用します。
サーバー追加 > VPS > Ubuntu > 20.04 (x86_64)
VPSのメモリについて
基本的には512MBで問題なく動作しますが、VPSにプロキシサーバーを設置する場合は1GB以上のメモリが必要になります。
使用するプロキシサーバーの推奨メモリ量を確認しておくと安心です。
2.ポートの設定を行う
セキュリティ > セキュリティグループ > 追加 セキュリティグループ
セキュリティグループ名は分かりやすい名前にしときましょう。
追加 セキュリティグループ > 保存
作成したセキュリティグループ名をクリックして既存の設定を削除してください。
セキュリティグループ名 > 削除ボタン > 決定
開放するポートを追加しましょう。
追加 > 入力 > 決定
私は25565
を公開するので以下のように設定します(多分Outの設定は不要です)
VPSに設定を反映します。
借りたVPSを選択してください。
ネットワーク情報 > 編集 > 追加
追加されたセキュリティグループをクリックして作成したセキュリティグループに変更して保存してください。
IPv4v6-SSH
も追加してください。
※追加しなくても問題はありませんが、SSH接続に必要です。ConohaのWebコンソールは使いにくいので私は追加しました。
3.ZeroTierでVPNを構築する
ZeroTierは、インターネット越しに仮想のプライベートネットワーク(VPN)を構築できるソフトウェアです。これを使うと、インターネットを介しても、まるで同じローカルネットワーク内にいるかのように、デバイス同士を接続できます。
ConohaのWebコンソールかSSHでVPSに接続してください。
1.サーバーをアップデートします。
sudo apt update
sudo apt dist-upgrade
sudo apt autoremove
2.アカウントを作成してCreate A Network
をクリックしてネットワークを作成してください。
3.ZeroTierをサーバーにインストールします。
curl -s https://install.zerotier.com | sudo bash
4.Network IDに参加します。
"Network ID"は作成したネットワークに置き換えてください。
sudo zerotier-cli join "Network ID"
5.RefreshしてEditをクリックします。
6.Authorized
にチェックを入れてName
をわかりやすい名前(VPSとか)に設定してSave
をクリックします。
Minecraftサーバーを作成したメインサーバー(Windows)にもZeroTierをインストールします。
1.www.zerotier.com/download からインストーラーをダウンロードしてサーバーにインストールします
2.タスクバーにあるZeroTierを右クリックしてJoin New Network...
をクリックします。
3.作成したネットワークに参加します。
4.RefreshしてEditをクリックします。
5.Authorized
にチェックを入れてName
をわかりやすい名前(MAINとか)に設定してSave
をクリックします。
4.ファイアウォールの設定をする
ConohaのWebコンソールかSSHでVPSに接続してください。
firewalldのインストールと起動をします。
sudo apt install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
外部からのポート25565
の通信を許可し、指定したIPに転送します。
***.***.***.***
はZeroTierに表示されているVPSのManaged IP
に変更してください。
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --zone=public --add-port=25565/tcp --permanent
firewall-cmd --permanent --add-forward-port="port=25565:proto=tcp:toport=25565:toaddr=***.***.***.***"
設定を再読み込みします。
firewall-cmd --reload
Windows側もファイアウォールの設定をします。
1.Win + R
を押して出てきたウィンドウにfirewall.cpl
と入力し、OKをクリックします。
2.詳細設定
をクリックします。
3.受信の規則 > 新しい規則...
をクリックします。
4.ポート > TCP > 特定のローカル ポート > 25565 > 接続を許可する > プライベート、パブリックにチェック > 分かりやすい名前 > 完了
5.作成したファイアウォールを右クリックしてプロパティをクリックします。
6.詳細設定 > 許可する
に変更します。
動作確認
Minecraftサーバーを起動してVPSのIPアドレスをMinecraftに追加して動作するか確認します。
動作しない場合はWindowsとVPSを再起動してください。
sudo reboot
それでも動作しないのであれば私のDiscordに参加してください。
Discord : .r_506
Discord Server : https://discord.gg/v7k2mQEu5j