はじめに:家庭用回線でのサーバー公開と「v6プラス」の壁
自宅サーバーでMinecraftのマルチプレイ環境を公開する際、最大の障壁となるのが「IPv4ポートの枯渇」と「v6プラス(IPv4 over IPv6)環境でのポート開放制限」です。多くのユーザーがCGNATの背後にいる現代において、単一のIPv4アドレスに依存したサーバー運用は、プレイヤーの環境によっては「繋がらない」という致命的な体験を生み出します。
本記事では、BiglobeのIPv6ネイティブ(IPoE)通信と、独立確保したIPv4アドレスを用いた「完全デュアルスタック」のMinecraft 6ノード分散環境(Velocity + Purpur)の構築手法、およびエンドユーザー側の環境格差を吸収するクライアント最適化について解説します。
インフラ設計:DNSレベルでのルーティング分離
ネットワーク環境に依存する接続トラブルをエンドユーザー側で自己解決させるため、DNSのレコード登録を物理的に分離しました。
-
mydns.jp(マルチスタック運用):AレコードとAAAAレコードを両方登録。IPv6対応クライアントはトンネリングのオーバーヘッドなしで、OSへ直接パケットを到達させます。 -
ddo.jp(IPv4専用フォールバック):Aレコードのみを登録。古いForgeクライアントやIPv6非対応回線向けに、NAT越えで処理する確実な裏道として機能させます。
エンドユーザーに配布するクライアントには、あらかじめ servers.dat に両方のアドレスを登録して同梱します。これにより「繋がらない場合はもう一つの方をクリックして」という一言で、ユーザーサポートが完了する強固なUXを実現できます。
バックエンド設定:UFWとVelocityのIPv6バインド
OSはUbuntu 26.04を使用します。Ubuntuのネットワークスタックは、到達したIPv6パケットをそのまま処理できるため、UFW(ファイアウォール)でIPv6ポートを許可し、Velocityプロキシ側でデュアルスタックのリッスンを有効にします。
UFWの設定
IPv4とIPv6の両方で25565ポートを開放します。
sudo ufw allow 25565
sudo ufw status
# 25565 (v6) ALLOW IN ... の表示が出ればOK
Velocityプロキシの設定
velocity.toml のバインドアドレスは、デフォルトだとIPv4専用(0.0.0.0)になっているケースがあります。これを ::(全IPv6/IPv4アドレス)に変更し、両方のトラフィックを捌けるようにします。
# velocity.toml
# [::] と指定することでデュアルスタック対応となる
bind = "[::]:25565"
バックエンドのPurpur群(各ノードの server.properties)も同様に、IP指定を空欄または :: に設定しておきます。
クライアント最適化:Fabricによる4階層のパッケージングと有償MODの安全な導入
サーバー側がどれほど高速で安定していても、クライアント(プレイヤーのPC)が重ければ意味がありません。エンドユーザーのハードウェア格差を完全に吸収するため、Prism Launcher用の一発設定ファイルを4段階(Atom, Feather, Light, Full)に分け、WordPressからMega経由で配布しています。
- Atom版: マップ機能すら削ぎ落とした徹底的な軽量化。8年前のお古のノートPCでも180FPS到達を可能に。
- Full版: 高解像度リソースパックと物理演算「Physics Mod Pro」を前提としたハイエンド環境。
バッチファイルを用いた有償MODの導入自動化
Full版やLight版において、ハイエンドな物理演算MOD(Physics Mod Proなど)を導入させたい場合、再配布規約に抵触しないよう工夫が必要です。
有償MOD本体をZIPに同梱するのではなく、ユーザー自身がPatreon等で入手したファイルを、Windowsバッチファイル(setup_physics.bat)を用いて所定のディレクトリへ自動展開・移動させるスクリプト運用を採っています。
これにより、MOD作者の権利を完全に保護しつつ、エンドユーザーの導入ハードル(「どのフォルダに何を入れればいいか分からない」)を限りなくゼロに近づけることができます。
まとめ
IPv6のネイティブな速度と、IPv4の確実なフォールバック。そして、限界まで最適化されたクライアント群。
「遊ぶ」という体験の裏側には、こうしたインフラと配布フローの緻密な設計が不可欠です。サーバー運営者の方々の参考になれば幸いです。