- 無料と書いてある通りレンタルサーバーを使いません。
- 準備するものは、自宅のPCとインターネット回線だけです。
僕はプロのITエンジニアです。
そんな僕がマイクラ鯖を構築する記事を書く理由は、ほとんどの記事でマイクラ鯖を立てるのは無理だからです。ちなみにサーバーを外部に公開する方法は"ポート開放"ではありません。
"マイクラ サーバー構築"で検索してみて下さい。
出てくる記事のすべてが"ポート開放"の記事です。
外部に公開できない
- 外部公開≠ポート開放
- ポートを説明しても、素人解説で余計に「分からない」。
- 締め括りは「ConoHa WING」のアフィリエイト
ポート開放を解説している記事を読んでも、サーバーを外部に公開できません。
外部に公開する方法は"ポート転送"です。
本記事では僕自身がこの手順で鯖を構築したので確実に鯖を外部に公開できます。外部公開のエビデンスとして画像を見るだけでも分かると思います。じっくり読んでみてぜひ参考にしてみください。
本記事で立てる統合版マイクラサーバー環境
サーバー環境
- M1・M2 Mac ※arm64環境
- Javaで動く統合版サーバー「Nukkit」
- フォルダ場所は
~/Downloads/Nukkit
で作業 ※場所はどこでも良いです - ルーター:Aterm WG2600HS
- ポート開放ツールを使わない
ちなみに、最大のポイントは統合版マイクラ鯖「Nukkit」がJava環境で動作する点です。ちなみに、統合版に限らずJavaの方が圧倒的に楽に鯖が立ち上がります(Javaがどんな環境でも動作するよう設計されているからです。)。
以下に、その他の疑問もまとめたので読むと理解が深まると思います。
- M1・M2 Macのマイクラ鯖はないはず?
-
M1・M2 Macで動く公式のマイクラBE鯖はありません。
- BE鯖はARM64プロセッサー上で動かないはず?
-
動きませんが、x86環境をエミュレートすればARM64環境でも動作します。
が、面倒なのでやりません。
- なんでNukkitサーバーを使うのか?
-
Javaランタイム環境上で動作するからです。
Javaランタイム環境ならARM64プロセッサーなど関係なくどんなデバイス上でも鯖の起動が可能になります。
- Javaのメリットは?
-
どんなOSでも動くサーバーを手軽に立てることが出来ます。当然、M1・M2 Macでもサーバーが一瞬で立ち上がります。
- なんでポート開放ツールを使わないのか?
-
ポート開放をツールを使わない方がネットワークの理解に役立つからです。
- ルーターの違いとは?
-
ルーターの設定画面の用語が違っていたりします(用語解説は下にあります。)。
例えば、ポート転送と同じ意味で、ポートマッピング、ポートフォワーディングという表記だったりします。
M1・M2 Macに無料でMinecraftサーバーを建てる!流れ
M1・M2 Macに無料でマイクラサーバーを建てる!流れは下の通りです。
解説のために多少長ったらしい冗長な手順にしています。
なので、サーバーを外部に公開する仕組みが分かっている人は「ローカル環境からサーバーに接続する」という手順を省いてもらって構いません。
鯖を建てる流れ
- ① M1・M2 Mac環境設定
- Homebrew
- Java
- IPアドレスを調べる
- ② マイクラサーバーをダウンロード
- ③ マイクラサーバーを起動する
- ④ ポート開放
- ⑤ 接続テスト1:ローカル環境からサーバーに接続する
- ⑥ ルーターを設定して、サーバーを外部に公開する
- ⑦ 接続テスト2:グローバル環境からサーバーに接続する
上から順に作業を進めていきます。
サーバーを立てるポイント
- ローカル環境(内部)でのサーバー接続
- グローバル環境(外部)でのサーバー接続
ほとんどの人は・ローカル環境(内部)でのサーバー接続と・グローバル環境(外部)でのサーバー接続の違いを理解できていません。
結果が同じなので、その違いが分からないのかも知れません。
サーバーを建てる際は、必ずローカル環境とグローバル環境の違いを意識するようにしましょう。
M1・M2 Macでターミナルを使う
M1・M2 Macで検索欄から"ターミナル"と入力すればターミナルが表示されます。
そのまま"Enter"を押せばターミナルが起動します。
起動のやり方は他にもあります。
任意のフォルダ直下でターミナルを起動させる
ターミナルの起動には、任意のフォルダで"右クリック"⇒"ターミナルで開く"の方が時短になります。
ターミナル上でcdコマンド
を使ってフォルダを移動するのも良いですが面倒です。
例えば、ターミナルでマイクラのサーバーフォルダを直接開く
フォルダを"右クリック"⇒"ターミナルで開く"で開けば、わざわざマイクラサーバーの場所にcdコマンド
で移動する必要がありません。
任意のフォルダ直下で"右クリック"⇒"フォルダを新規ターミナル"でターミナルを起動する方が楽です。
① M1・M2 Mac環境設定
マイクラのサーバー構築に必要な環境を設定していきます。
環境設定の流れ
- ① Homebrew
- ② OpenJDK(javaランタイム)
- ③ ローカルIPアドレス
Homebrewはインストールとパッケージの更新をしておきます。順々にやっていきます。
前準備:Homebrew をインストールする
Homebrewをインストールしておきましょう。Homebrewは、Macユーザーなら100%インストールするパッケージマネージャーです。
※すでにHomebrewをインストールしている方は読み飛ばして下さい。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
上のコマンドでインストールできます。
.zprofile
にPATHを追加してくださいと表示されるので下のコマンドを実行します。
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザー名/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
brew -v
などして.zprofile
にPATHが追加されたのを確認すれば完了です。
Homebrewの基本的な使い方は下記を参考にして下さい。
準備②:OpenJDK(Java)のインストール
- OpenJDK
- https://openjdk.org/
上記URLからインストールファイルを一式ダウンロードできます。
ただ、いちいちサイトに訪問するのも面倒なのでbrew
を使ってOpenJDK 17(2022/9/1最新)
をダウンロードしていきます。
% brew install openjdk@17
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
distrobox echidna kubesess libff libplacebo popeye
==> New Casks
orka-vm-tools reflect
You have 2 outdated formulae installed.
You can upgrade them with brew upgrade
or list them with brew outdated.
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/17/manifests/17.0.4.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/17/blobs/sha256:ef9bebe
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring openjdk@17--17.0.4.1.arm64_monterey.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
openjdk@17 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.
If you need to have openjdk@17 first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
For compilers to find openjdk@17 you may need to set:
export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"
==> Summary
🍺 /opt/homebrew/Cellar/openjdk@17/17.0.4.1: 640 files, 306.6MB
==> Running `brew cleanup openjdk@17`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
brew install openjdk@17
で、openjdk@17をインストールしました。
では、試しにjava
のコマンドを打ってみましょう。
% java -version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
%
上にも書きましたが、シンボリックリンク、openjdk@17のパスを追加していないので、当然にjava
のコマンドは通りません。
% sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
Password:
%
コマンドを打ってパスワードを入力すればシンボリックリンクの作成が完了します。
If you need to have openjdk@17 first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
For compilers to find openjdk@17 you may need to set:
export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"
インストール時のプロンプトに上記が表示されます。
OpenJDKのパスを追加して下さい。とのことです。
実行例
% echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
% export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"
%
パス追加のスクリプトを打っても、何も表示されません(これでパスは追加されています。)。
java -version
で確認する% java -version
openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 17.0.4.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4.1+0, mixed mode, sharing)
$
Javaのパスが通っているか確認のために、試しにjava -version
を打ってみます。
openjdk version "17.0.4.1"
が入っており、無事にJavaのパスが通ってると分かります。
OpenJDKを詳しく知りたい方はこちら
準備③:M1・M2 MacでローカルIPアドレスを調べる
% ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
ether 3c:a6:f6:39:80:31
inet6 fe80::a0:9cb4:a1ea:7f44%en0 prefixlen 64 secured scopeid 0xb
inet 192.168.10.103 netmask 0xffffff00 broadcast 192.168.10.255
inet6 240b:250:89e0:d200:1c6c:b923:d997:677d prefixlen 64 autoconf secured
inet6 240b:250:89e0:d200:7c09:806b:dd61:651c prefixlen 64 autoconf temporary
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
M1・M2 MacでIPアドレスを調べるコマンドはifconfig en0
です。
僕のローカル環境のIPアドレスは192.168.10.103
です。192.168.10.103
はあくまでローカルIPアドレスであることを押さえておきましょう。
② Nukkitサーバーをダウンロード【M1・M2 Mac】
- Jenkins Cloudburst - Nukkit Branch master
- 最新のnukkit-1.0-SNAPSHOT.jar
- https://ci.opencollab.dev/job/NukkitX/job/Nukkit/job/master/
上記URLから最新のNukkitサーバーnukkit-1.0-SNAPSHOT.jar
をダウンロードすればオッケーです。赤枠のリンクからjarファイルをダウンロードできます。
※git
でNukkitサーバーを構築する方法もあります。
③ Nukkitサーバーを起動する【M1・M2 Mac】
Last login: Mon Sep 5 02:30:20 on ttys000
% java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
02:40:35 [INFO ] Loading nukkit.yml ...
02:40:35 [INFO ] Loading server.properties ...
02:40:35 [INFO ] 日本語 (jpn) を言語に選択しました
02:40:35 [INFO ] Minecraft: BEサーバー(v1.19.21に対応)を起動しています
02:40:35 [INFO ] Selected Zlib Provider: 2 (cn.nukkit.utils.ZlibThreadLocal)
02:40:35 [INFO ] 0.0.0.0:19132上でサーバーを開始しています
02:40:35 [INFO ] このサーバーはNukkitのバージョンgit-40701a1「」(API 1.0.14)で動作しています
02:40:35 [INFO ] NukkitはGPLライセンスに基づき配布されています
02:40:35 [INFO ] Loading runtime items...
02:40:36 [INFO ] Loading recipes...
02:40:36 [INFO ] Loaded 1509 recipes.
02:40:36 [INFO ] Successfully loaded 0 resource packs
02:40:36 [INFO ] ワールド "world" を読み込んでいます
02:40:36 [INFO ] Preparing start region for level "world"
02:40:36 [INFO ] ワールド "nether" を読み込んでいます
02:40:36 [INFO ] Preparing start region for level "nether"
02:40:36 [INFO ] GS4ステータス リスナーを開始
02:40:36 [INFO ] クエリポートを設定: 19132
02:40:36 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
02:40:36 [INFO ] デフォルトゲームタイプ: サバイバルモード
02:40:36 [INFO ] 起動完了(0.571秒)! "help"または"?"でヘルプを表示
>
サーバーを起動するコマンドはjava -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
です。
サーバー起動時にはポート番号などの設定値が表示されます。
起動時の表示にサーバー情報が出る!
02:40:36 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
起動時の表示を見れば、調べなくてもサーバー情報が色々分かります。
起動時の表示を見る癖をつけると良いでしょう。
④ ローカルマシン(M1・M2 Mac)のポート開放
Mac(M1・M2含む)でポート開放をしましょう。
とは言え、Macはデフォルトでファイアーウォールがオフ(無効)になっています。
なので、マイクラのポート開放に関わらず、Macを買ったら必ずファイアウォールをオン(有効)にしてください。アプリでは必ずポートを利用する通信が発生しているからです。
ファイアウォールがオフ(無効)だと、セキュリティ的には"ガラ空き"で使っていることになります。
例:OpenJDK(Java)のポートを開放する
Mac(M1・M2含む)でOpenJDK(Java)ポートを解放しましょう。
ファイアウォールをオンにした状態で、マイクラサーバーを起動させてください(Javaを実行します。)。
マイクラサーバープログラムを実行すると自動でポート開放画面がポップアップ表示されます(上の画像)。
これを「許可」をすれば、ポート開放が完了します。
厳密には、Javaプログラムをネットワーク上で受信する許可です。
- Java版マイクラサーバー
受信ポート:25565/TCP
- 統合版マイクラサーバー
受信ポート:19132/UDP
つまり、Javaで実行されるプログラムすべてが受信許可される設定です。
Mac(M1・M2含む)のファイアウォールは個別に受信ポートを設定するわけではなく、プログラムごとで受信設定します。
⑤ 接続テスト1:ローカル環境からサーバーに接続する【統合版】
Pアドレスの確認、ローカルマシンのポート開放も済んだので、ローカル環境からサーバーに接続テストをしましょう(以下、ローカル接続テストと言います。)。
下記手順で進めましょう。
ローカル接続テスト手順
- 1)統合版マイクラサーバーを起動する。
- 2)IPアドレス・ポート番号を再度確認する。
- 3)Wifiスマホで統合版サーバーにアクセスする。
当然、IPアドレス、ポート番号が必要になるので、どこかにメモっておきましょう。
先ずはサーバーを起動しましょう。
1)統合版マイクラサーバーを起動する。
Last login: Mon Sep 5 02:30:20 on ttys000
% java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
02:40:35 [INFO ] Loading nukkit.yml ...
02:40:35 [INFO ] Loading server.properties ...
02:40:35 [INFO ] 日本語 (jpn) を言語に選択しました
02:40:35 [INFO ] Minecraft: BEサーバー(v1.19.21に対応)を起動しています
02:40:35 [INFO ] Selected Zlib Provider: 2 (cn.nukkit.utils.ZlibThreadLocal)
02:40:35 [INFO ] 0.0.0.0:19132上でサーバーを開始しています
02:40:35 [INFO ] このサーバーはNukkitのバージョンgit-40701a1「」(API 1.0.14)で動作しています
02:40:35 [INFO ] NukkitはGPLライセンスに基づき配布されています
02:40:35 [INFO ] Loading runtime items...
02:40:36 [INFO ] Loading recipes...
02:40:36 [INFO ] Loaded 1509 recipes.
02:40:36 [INFO ] Successfully loaded 0 resource packs
02:40:36 [INFO ] ワールド "world" を読み込んでいます
02:40:36 [INFO ] Preparing start region for level "world"
02:40:36 [INFO ] ワールド "nether" を読み込んでいます
02:40:36 [INFO ] Preparing start region for level "nether"
02:40:36 [INFO ] GS4ステータス リスナーを開始
02:40:36 [INFO ] クエリポートを設定: 19132
02:40:36 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
02:40:36 [INFO ] デフォルトゲームタイプ: サバイバルモード
02:40:36 [INFO ] 起動完了(0.571秒)! "help"または"?"でヘルプを表示
>
サーバーを起動させるコマンドはjava -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
です。
2)IPアドレス・ポート番号を再度確認する。
% ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
ether 3c:a6:f6:39:80:31
inet6 fe80::a0:9cb4:a1ea:7f44%en0 prefixlen 64 secured scopeid 0xb
inet 192.168.10.103 netmask 0xffffff00 broadcast 192.168.10.255
inet6 240b:250:89e0:d200:1c6c:b923:d997:677d prefixlen 64 autoconf secured
inet6 240b:250:89e0:d200:7c09:806b:dd61:651c prefixlen 64 autoconf temporary
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
M1・M2 MacでIPアドレスを調べるコマンドはifconfig en0
です。
僕のローカル環境のIPアドレスは192.168.10.103
です。192.168.10.103
はあくまでローカルIPアドレスであることを押さえておきましょう。
ポートは上のサーバー起動の表示から19132/UDP
だと分かります。
3)Wifiスマホで統合版サーバーにアクセスする。
ローカル環境からサーバーに接続する端末選びですが「自宅のWifiに接続したスマホ」を使うと良いでしょう。
細かなことが分からなければ、とりあえず「自宅のWifiに接続したスマホ」でサーバーに接続してみて下さい。
「自宅のWifiに接続したスマホ」を準備したら、Minecraftのアプリを起動します。
次に「遊ぶ」を押します。
次に上部の「サーバー」から「サーバーを追加」を押します。
サーバー情報の入力が出るので、調べておいたローカルIPアドレス、ポートを入力します。
最後に「保存」を押して次に進みます。
サーバーが追加されたので、サーバーを選択して「サーバーに参加」を押せば、起動しているローカルサーバーに接続します。
何やら注意事項が表示されるので確認して「続行」を押します。
サーバー接続中の表示になるので暫く待ちます。
サーバーにログインできたら、ローカル接続テストは成功です。
念の為、サーバープロンプトを確認しておきましょう。
「アカウントA」からUbuntu 22.04 LTS ARM64仮想環境に建てた統合版マイクラサーバー(Nukkitサーバー)にログインできてるのが分かると思います。
特に、この表示に注目してください。
Last login: Mon Sep 5 04:13:34 on ttys001
% java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
04:15:50 [INFO ] Loading nukkit.yml ...
:
:
:
04:15:51 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
04:15:51 [INFO ] デフォルトゲームタイプ: サバイバルモード
04:15:51 [INFO ] 起動完了(0.564秒)! "help"または"?"でヘルプを表示
04:18:29 [INFO ] アカウントA[/192.168.10.102:60434] がエンティティID 1 として (world, 128.0, 66.0, 128.0)にログインしました
04:18:30 [INFO ] アカウントA がゲームに参加しました
>
04:18:29 [INFO ] アカウントA[/192.168.10.102:60434] がエンティティID 1 として (world, 128.0, 66.0, 128.0)にログインしました
アカウントA[/192.168.10.102:60434]
このアドレスは、グローバルIPアドレスか、ローカルIPアドレスか?どちらでしょうか?
答えはローカルIPアドレスです。
これはローカルサーバーの接続テストです。
まだ、外部にサーバーを公開していないので外の友達からはこのサーバーにはアクセスできません。
では、次にローカルサーバーを外部に公開していきましょう。
⑥ 外部に公開!ルーター「Aterm WG2600HS」でのUDPポート転送の設定例
サーバーを外部に公開するのはここからが本番です。
サーバーを外部に公開するためには、ルーター側にポート転送設定を行います。
場合によってはパケットフィルタ設定(ルーター上のポート開放)も必要になるかも知れません(今回は不要です。)。
※「ルーター」「ポート転送」など「用語解説」は下にあります。
先ずはルーターの設定画面を開こう
ルーターのURLは、ローカルIPアドレスの最下段を"1"にしたアドレスです。
ローカルIPアドレスが192.168.10.101
なら、ルーターのURLは192.168.10.1
です。
僕の環境では、ルーターの設定画面を開くには、URL欄にhttps://192.168.10.1
でアクセスしました。
また、ログインに必要な「ユーザー名」などは注意書きされてます。
「ユーザー名」には「admin」と半角小文字で入力し、「パスワード」には、本商品本体のラベルに記載された数字6桁のパスワード(Web PW)を入力して、[ログイン]をクリックしてください。
機器によっては取扱説明書などにユーザー名などの初期設定値が記載されていたりもします。
他の機器も多少違いはあれど、ほとんど同じです。
ルーター画面からポートマッピング設定を開く
ルーターにログインしたら、上記画面が表示されます。中段右側に「ポートマッピング設定」という項目があるので、それをクリックします。
ちなみに、ルーターAterm WG2600HSでは、ポート転送を"ポートマッピング"と言います。
BUFFALOなどのルーター機器だと"ポートフォワーディング"と表示されてるかも知れません。ポート転送=ポートマッピング=ポートフォワーディング、すべて同じ意味です。
※「ルーター」「ポート転送」など「用語解説」は下にあります。
ポートマッピングの設定をする
上の画像が、Aterm WG2600HSのポート転送設定の画面です。
上段から
- 利用可能ポート:変換対象ポートで利用可能なポート
- NATエントリ追加:ここにポート転送設定を入力します。
それでは統合版マイクラサーバー外部公開時のポート転送の設定例を解説します。
統合版マイクラサーバー外部公開時のポート転送の設定例
今回の例では統合版マイクラサーバー(Nukkitサーバー)を想定して下記のネットワーク環境で解説します。自分の環境に読み替えて設定して下さい。
ネットワーク環境
- WAN側(外部):
グローバルIPアドレス:ポート(19744/UDP)
- LAN内サーバー(内部):
192.168.10.103:19132/UDP
ポートは内部と外部ともに19132/UDP
で統一した方が分かりやすいですが、ルーターで設定できる「利用可能ポート」の範囲外なのでWAN側ポートは19744/UDP
としました。
ちなみに、WAN側とLAN側のポート番号を変えた方がセキュリティ的には、はるかに強くなります。
というか、WAN側ポートを変えるというのは、セキュリティを上げるテクニックです。
理由は、統合版マイクラ鯖に接続するポート19132/UDP
は、誰もが知っているからです。
これはグローバルIPアドレスを知られるとグローバルIPアドレス:19132
で好き放題にアクセスされる状態で危険なんです。
中継地点となるルーターは、WAN側ポート19744/UDP
のアクセスをLAN内サーバー192.168.10.103:19132
に道案内する役割です。これをポート転送と言います。
サーバー接続の流れ
- 外部からは
グローバルIPアドレス:ポート(19744/UDP)
でサーバーにアクセスする。 - 中継地点のルーターは
ポート:19744
を192.168.10.103:19132/UDP
にポート転送する。 - その結果、マイクラサーバー
192.168.10.103:19132/UDP
が接続に応答する。
さて、上記の内容で、ルーターに実際に設定してみましょう。
WAN側ポート19744/UDP
を
LAN側ポート192.168.10.103:19132/UDP
に転送する。
WAN側ポート19744/UDP
をLAN側ポート192.168.10.103:19132/UDP
にポート転送する設定をします。
ポート転送
- LAN側ホスト:マイクラサーバー
192.168.10.103
- プロトコル:
UDP
- 変換対象ポート番号:WAN側ポート(今回は
19744/UDP
) - 宛先ポート番号:LAN側ポート(今回は
19132/UDP
)
どうでしょう、簡単じゃないですか?これでマイクラサーバーを外部に公開できます。
ただし、必ず外部から接続テストをして確認してください。
機器にもよりますが、変換対象ポート(WAN側ポート)は「利用可能ポート」の範囲内で設定しましょう。
「利用可能ポート」の制限が無いなら、WAN側ポートにどんなポート番号を設定しても構いません。
⑦ 接続テスト2:グローバル環境からサーバーに接続する【統合版】
今度はグローバル環境(外部)からサーバーに接続テストを行います(以下、グローバル接続テストと言います。)。
外部からの接続テストのために事前に準備するものは下の二つです。
準備するもの
- 1)グローバルIPアドレス
- 2)4G(5G)回線に繋がったスマホ(Wifiをオフにしたスマホ)
ちなみに、グローバルIPアドレスの確認はCMANで手軽できます。
1)CMANでグローバルIPアドレスを確認する
上はCMANでグローバルIPアドレスを調べた画面です。
画像の黒塗り箇所にグローバルIPアドレスが表示されています。
2)4G(5G)回線に繋がったスマホ(Wifiをオフにしたスマホ)
この作業は4G(5G)回線に繋がったスマホ(wifiをオフにしたスマホ)でやっていきます。
マインクラフトのアプリの「サーバーを追加」から、確認したグローバルIPアドレスでサーバーを追加します。
サーバーアドレス欄にグローバルIPアドレス(黒塗り)を入力しています。
外部からアクセスするポートは「19744」なので注意してください。
ルーターの設定等が上手くいっていれば、上記のようにPing値が表示されます。
このPing値が表示されていれば、外部から統合版マイクラサーバーが"見えている状態"です。
「サーバーに参加」を押します。
サーバーに接続中の画面になります。
見た目は同じですが、外部から統合版マイクラサーバー(Nukkitサーバー)に接続しています。
これで友達の家(外部)からでも、自分の家の統合版マイクラサーバーに入れるようになります。
Last login: Mon Sep 5 04:15:29 on ttys001
% java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
04:34:37 [INFO ] Loading nukkit.yml ...
04:34:37 [INFO ] Loading server.properties ...
04:34:37 [INFO ] 日本語 (jpn) を言語に選択しました
04:34:37 [INFO ] Minecraft: BEサーバー(v1.19.21に対応)を起動しています
04:34:37 [INFO ] Selected Zlib Provider: 2 (cn.nukkit.utils.ZlibThreadLocal)
04:34:37 [INFO ] 0.0.0.0:19132上でサーバーを開始しています
04:34:37 [INFO ] このサーバーはNukkitのバージョンgit-40701a1「」(API 1.0.14)で動作しています
04:34:37 [INFO ] NukkitはGPLライセンスに基づき配布されています
04:34:37 [INFO ] Loading runtime items...
04:34:37 [INFO ] Loading recipes...
04:34:37 [INFO ] Loaded 1509 recipes.
04:34:37 [INFO ] Successfully loaded 0 resource packs
04:34:37 [INFO ] ワールド "world" を読み込んでいます
04:34:37 [INFO ] Preparing start region for level "world"
04:34:37 [INFO ] ワールド "nether" を読み込んでいます
04:34:37 [INFO ] Preparing start region for level "nether"
04:34:37 [INFO ] GS4ステータス リスナーを開始
04:34:37 [INFO ] クエリポートを設定: 19132
04:34:37 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
04:34:37 [INFO ] デフォルトゲームタイプ: サバイバルモード
04:34:37 [INFO ] 起動完了(0.592秒)! "help"または"?"でヘルプを表示
04:35:27 [INFO ] アカウントA[/126.236.133.67:1048] がエンティティID 1 として (world, 128.0, 66.0, 128.0)にログインしました
04:35:27 [INFO ] アカウントA がゲームに参加しました
>
統合版マイクラサーバーにログインしたので、プロンプトを確認してみましょう。
特に注目してもらいたいのは、ログイン箇所の表示です。
04:35:27 [INFO ] アカウントA[/126.236.133.67:1048] がエンティティID 1 として (world, 128.0, 66.0, 128.0)にログインしました
グローバル接続とローカル接続では、ログインしているユーザーのアドレスが違います。
IPアドレスの違い
- グローバルIPアドレス:
アカウントA[/126.236.133.67:1048]
- ローカルIPアドレス :
アカウントA[/192.168.10.102:60434]
アドレスを識別できると、どの段階でシステムがこけてるかを切り分けができるようになります。
また、必ず小から大に発展させるように取り組む癖をつけましょう。
つまりLANからWANに拡張させるということです。
- ローカルのアクセスで問題が出たら、LAN内のPC本体の設定を疑う
- グローバルのアクセスで問題が出たら、ルーター設定を疑う
など、問題の切り分けが容易になるからです。
トラブルシューティング:統合版マイクラサーバー「ネットワークに接続できないようです。」
統合版マイクラサーバーを建てて、いざ外部からサーバーに接続テストをすると
「ネットワークに接続できないようです。」
というエラーが表示されます。
このエラーはおそらく統合版マイクラサーバー構築で一番表示されるエラーだと思います。
このトラブルを解決するのはとても簡単です。
解決策は、大抵は「モバイルデータを使用」をオンにすることで解決します。
詳しくは下の記事を参考にしてみてください。
補足:M1・M2 Mac上の仮想環境に「Nukkit鯖」を構築する方法もある!
上記では、M1・M2 Macに"直接"統合版マイクラサーバー(Nukkitサーバー)を構築する内容を紹介しました。当然、M1・M2 MacでもNukkitサーバーは何ら問題なく起動します。
ただ、M1・M2 Macで直接作業するのをオススメしません。
なぜなら、M1・M2 Macに直接環境を構築するとスクラップ&ビルドしづらくなるからです(M1・M2 Macの環境を汚すからです。)。
そんな時におすすめなのが「仮想環境」です。
仮想環境を使う理由
- Macの環境が汚さない。
- Windows仮想環境も使える。
- 簡単にスクラップ&ビルドできる。
ポイントはM1・M2 Macでは、どうせWindows(仮想環境)を使う羽目になります。それなら最初から仮想環境にマイクラ鯖を構築した方が良いと言うことです。
そういう訳で、Parallels®︎ Desktop 18 for Mac を使って、Windows 11か、Linuxかの仮想環境に統合版マイクラサーバーを構築するのが良いです(下の関連記事で紹介します。)。
Parallelsを使えば、Windowsでも、LinuxでもOS環境を数分で構築できます。
仮想環境でも普通にマイクラは動きますし外部にも公開できます。何より仮想環境でマイクラ鯖を構築するだけで、とても良いITの勉強になります。
それでも、M1・M2 Macに統合版マイクラサーバーを構築しようとする方は、本記事を参考にして下さい。
ネットワークIT用語解説
ネットワークで使うIT用語を解説していきます。
「ポート」や「ポート開放」「ファイヤーウォール」などの用語をセットで覚えましょう。
IPアドレス
IPアドレスには2種類あります。
グローバルIPアドレス、ローカルIPアドレス
ローカルIPアドレスの呼び方
- ローカルIPアドレス
- プライベートIPアドレス
ポート
ポートのイメージはサービスを受け付ける個々の料金所です。
インターネット上では、パケット車がたくさん走っています。すべてのパケット車が料金所を通れるわけではなく、開放されているポート(料金所)のみ通過できます。
WAN側ポート、LAN側ポートと使用するデバイスごとにポートを設定する必要があります。
ポートはプログラム(Webサービス)ごとに使用しています。
デフォルトで開放されているポートを「Well Known Port(ウェルノウンポート)」と言います。例えば、http通信は80番ポートを使っています。
実は知らない内に自らポートを開閉させています。
プログラムのインストール時に「プログラムを許可しますか?」に承諾することで、みんな自分のコンピューターのポートを開放しています。
Well Known Port 以外のポートはデフォルトで閉じられているからです。
ポート転送
ポート転送は、WAN側に来たアクセス(パケット)をLAN側の機器に転送する設定です。
ちなみに、今回のNEC製ルーターでは、ポート転送とは呼び方が違う「ポートマッピング設定」という表記です。
ポート転送の呼び方
- ポート転送
- ポートマッピング
- ポートフォワーディング
- ポートフォワード
上のようにルーター機器によって、同じ意味でも表記が様々です。
ルーター
ルーターは高速道路と一般道の中継地点のイメージです。
高速道と一般道の流れが変わる中継地点に各料金所(ポート)があって、車両を一台一台丁寧に検閲していきます。
ちょうどWAN(グローバル)が高速道で、LAN(ローカル)が一般道みたいなイメージです。
WANからLANに入るには、必ず中継地点(ルーター)の案内が必要になるわけです。
高速道のまま突っ走っても、どこに行けば良いのか分からないので中継地点(ルーター)で目的地を教えてもらったりします。それがポート転送(目的地の案内)です。
ファイヤーウォール
「ファイヤーウォール」は、コンピュータネットワークにおいて、コンピュータセキュリティの保護、その他の目的のため、通信を制御・阻止(パケットフィルタリング)する機能を言います。
「ファイヤーウォール」は、パソコン、スマホ、ルーターなどすべてのデバイスに搭載されている機能と理解しておいてください。
高速道路の料金所で「許可された車だけを通す仕組み(機能)」です。
コメント