マインクラフトサーバーの運営で警戒するべき事の代表として「DDoS攻撃(分散型サービス拒否攻撃)」があります。
過去に私が運営するサーバーもDDoS攻撃を受け約3時間ほど自宅回線のインターネットが停止してしまう事が何度かありました。
本記事ではGeyserMCを利用したJava版+統合版のクロスプレイサーバーで、どのようにしてDDoSなどの脅威から対策を行なったのかを構築方法と共に解説していきます。
DDoS攻撃とは
まずDDoS(ディードス)攻撃とは、分散型サービス拒否攻撃(Distributed Denial of Service attack)の略で、複数のコンピューターやIoT機器(ボットネット)から標的のWebサイトやサーバーに大量のアクセスやデータを送りつけ、システムを過負荷状態にして機能を停止させるサイバー攻撃です。この攻撃を受けるとサーバーを公開しているネットワーク全体が想定以上のアクセスによって全く動かなくなってしまいます。
対策方法
今回紹介する対策方法はクラウドサーバー(VPS)にDDoS攻撃を代わりに受けてもらい、サーバー本体があるネットワークを保護するものになります。
VPSとは?>> 仮想プライベートサーバー(Virtual Private Server)の略でGMO InternetやAmazon Web Service等が展開するクラウド上で動作する、自分専用の仮想サーバーであり自由に設定や運用ができるサービスです。VPSを使用する理由として、DDoS等の攻撃があった際に被害を緩和し、肩代わりしてくれます。
実行環境
今回はGMOインターネット株式会社が展開する「ConoHa VPS」を利用して構築を行います。
ConoHa VPSを利用できない場合は「さくらインターネット」などが提供しているVPSサービスなどの利用を推奨します。
ConoHa VPSに登録・ログインを行います。VPSサービスのうち、「VPS 割引きっぷシンプル」を選び、3ヶ月以上の契約期間を選択しましょう。
※今回はVPS一個で構築しますが、複数のVPSとGeoDNSなどのGSLB(広域負荷分散)にてVPSがDDosなどでダウンした際に別のVPSに処理を切り替えることができるようにできます。
今回は「Ubuntu OS」1を使用して構築を行います。
契約が完了次第、Ubuntuにログインを行い、設定を行います。


マイクラサーバー側の準備
今回はGeyserMCを利用したJE+BE版のクロスプレイサーバー用の構築方法なので、GeyserMCが前提の構築を行います。
まず、Geyserの「config.yml」にある「enable-proxy-protocol」と「proxy-protocol-whitelisted-ips 」を以下のように変更します。
enable-proxy-protocol: true #有効化
proxy-protocol-whitelisted-ips: "VPSのIPアドレス"また、SpigotやPaperなどにある設定ファイル(今回は例としてPaperMCで設定する場合)である「paper-global.yml」ファイルを開き、以下のように設定します。
proxies:
bungee-cord:
enabled: true
online-mode: true
proxy-protocol: true
VPS側の準備
Ubuntuのアップデートを確認し、HAProxyとNginxのインストールを行います。
sudo apt update
sudo apt install -y haproxy nginxインストールが完了したら、以下のコマンドでHAProxy の基本設定ファイルを開きます。
sudo nano /etc/haproxy/haproxy.cfgHAProxyの中身を編集します。
global
log /dev/log local0
maxconn 50000
daemon
defaults
log global
mode tcp
timeout connect 5s
timeout client 1m
timeout server 1m
frontend mc_java
bind *:25565
mode tcp
default_backend mc_java_backend
backend mc_java_backend
mode tcp
server nginx_mc 127.0.0.1:25566 send-proxy-v2
frontend mc_bedrock
bind *:19132 udp
mode udp
default_backend mc_bedrock_backend
backend mc_bedrock_backend
mode udp
server nginx_bedrock 127.0.0.1:19133 send-proxy-v2
書き込みが完了したら保存し、コマンド画面に戻ります。
次に、以下のコマンドを使用してHAProxyの再起動を行います。
sudo systemctl restart haproxy
sudo systemctl status haproxy続いてNginxの設定を行なっていきます。
以下のコマンドでNginxの設定画面を開きます。
sudo nano /etc/nginx/nginx.conf今回はマインクラフトサーバーの通信で使用するので、HTTP系の通信ではなくTCP/UDP系の通信環境を準備します。
stream {
include /etc/nginx/stream.d/*.conf;
}完了したら保存し、コマンドラインへ戻ります。
その後、以下のコマンドを実行してJava版(TCP)用の通信環境を整えていきます。
sudo nano /etc/nginx/stream.d/minecraft-java.conf設定ファイルが開いたら以下の内容を記載してください。
「あなたのIPアドレス」の場所を実際にマインクラフトサーバーが起動しているIPアドレスに登録し、Java版や統合版でポート番号を変更している場合は隣の「25570」と「19140」の部分の変更も行なってください。
stream {
upstream mc_java_backend {
server あなたのIPアドレス:25570;
}
server {
listen 25566 proxy_protocol;
proxy_pass mc_java_backend;
proxy_protocol on;
}
}同じように統合版(UDP)の通信環境を整えます。
sudo nano /etc/nginx/stream.d/minecraft-bedrock.conf中身に以下のように記載を行います。
stream {
upstream mc_bedrock_backend {
server あなたのIPアドレス:19140;
}
server {
listen 19133 udp proxy_protocol;
proxy_pass mc_bedrock_backend;
proxy_protocol on;
}
}設定が完了したら以下のコマンドを使用してNginxの再起動と起動確認を行います。
sudo nginx -t
sudo systemctl restart nginxこれらの構成の場合ではJava版のポート番号が「25570」で、統合版が「19140」でサーバーが起動している場合の設定になります。
最後にファイアウォールの解放を行うので、以下のコマンドを実行します。
sudo ufw allow 25565/tcp
sudo ufw allow 19132/udp
sudo ufw enable今回の構成では以下の処理を行う、リバースプロキシサーバーを構築しました。
| レイヤ | コンポーネント | 役割 |
|---|---|---|
| ユーザー入力 | HAProxy | TCP/UDP受信・IP保持 |
| 中継サーバー | Nginx(stream) | PROXY復元 |
| サーバーへ転送 | Minecraft | 認証・ゲーム処理 |
実際の運用案
運用の案として私が過去に運用していたマインクラフトサーバーのシステム構築略図2を公開します。
尚、現在私が運営するサーバーではさらにセキュリティ面やシステム構造を改善し、より安全な形で運用しており、安全性・セキュリティの面から今回は最新のシステムではなく、旧システム設計のみの公開とさせていただきます。

今回構築したものは上画像の「クラウドサーバー」にあたる部分であり、セキュリティシステムの中でも重要な役割を果たすものになります。
実際に今回構築したシステムを運用する場合は、それぞれのDNSサーバーからConoHa VPSで構築したリバースプロキシサーバーにアクセスが飛ぶように変更を行なってください。
実際の運用環境
実際にこの環境に似たリバースプロキシを運用していたマインクラフトサーバーになります。
このサーバーでは最大同接人数を30人と仮定し、システム構成を行っていました。そのため、今回の構成であるConoHa VPSの512MBのUbuntuプランでもリバースプロキシのみなら問題なく動作することができました。
実際にwebやminecraftのサーバーのセキュリティー構築にはGCPやAWS、Cloudflare等を使用してさらに強固にセキュリティー環境を構築しています。もし不明な点や知りたいこと等ございましたら、お問い合わせより直接ご連絡をお願いします。
- 2025年12月18日現在確認を行ったところ、Ubuntu OSの512MBのプランは新規契約を終了していました。 ↩︎
- 公開しているデータはあくまで略図であり、実際の運用環境と差異がございます。 ↩︎


