【無料】Ubuntuに統合版マイクラサーバー「Nukkit」の立て方!

  • URLをコピーしました!
マインクラフト統合版サーバーにログイン!
Ubuntuにマインクラフト統合版サーバーを構築する!

無料で外部に公開するサーバーを立てます。
つまり友達の家からでも接続できるサーバーを構築します。

  • 無料と書いてある通りレンタルサーバーを使いません。
  • 準備するものは、自宅のPCとインターネット回線だけです。

僕はプロのITエンジニアです。

そんな僕がマイクラ鯖を構築する記事を書く理由は、ほとんどの記事でマイクラ鯖を立てるのは無理だからです。ちなみにサーバーを外部に公開する方法は"ポート開放"ではありません。

"マイクラ サーバー構築"で検索してみて下さい。

出てくる記事のすべてが"ポート開放"の記事です。

外部に公開できない

  • 外部公開≠ポート開放
  • ポートを説明しても、素人解説で余計に「分からない」。
  • 締め括りは「ConoHa WING」のアフィリエイト

ポート開放を解説している記事を読んでも、サーバーを外部に公開できません。

外部に公開する方法は"ポート転送"です。

本記事では僕自身がこの手順で鯖を構築したので確実に鯖を外部に公開できます。外部公開のエビデンスとして画像を見るだけでも分かると思います。じっくり読んでみてぜひ参考にしてみください。

この記事だけでサーバー構築の知識が完結するように、ネットワークに関するIT用語は末尾に「用語解説」を載せています。

目次

本記事で構築する統合版マイクラサーバー環境

サーバー環境

  • Ubuntu 22.04 LTS ARM64 ※Intel、arm64どちらでもオッケー
  • Nukkitサーバー
  • Javaランタイム環境
  • フォルダの場所
    ~/NukkitGitクローン先
    ~/minecraftビルド先
  • ポート開放ツールを使わない

この環境に疑問があるかも知れません。

以下に疑問点をまとめたので読むと理解が深まると思います。

なんでNukkitサーバーを使うのか?

Javaランタイム環境上で動作するからです。Javaランタイム環境の方がどんなデバイス上でも鯖を手軽に起動できるようになります。

なんでポート開放ツールを使わないのか?

好みですが、ポート開放をツールを使わない方がネットワークの理解に役立つからです。

公式サーバーを使うならJavaは必要か?

公式サーバーにJavaは不要です。

ただ、公式サーバーを使うのはオススメしません。Javaで起動するNukkitサーバーの方が手軽に構築できるからです。

公式サーバーとNukkitサーバーの違いは?

公式サーバーはJavaでは無いのでサーバー起動に手間が掛かります。

さらに、Xbox Live用のポート開放が必要になります。

Ubuntuに無料でMinecraftサーバーを建てる!流れ

引用:マインクラフト

Ubuntuに無料でマイクラサーバーを建てる!流れは下の通りです。

解説のために多少長ったらしい冗長な手順にしています。

なので、サーバーを外部に公開する仕組みが分かっている人は「ローカル環境からサーバーに接続する」という手順を省いてもらって構いません。

鯖を建てる流れ

  • ① Ubuntu環境設定
    • システム更新
    • iproute2
    • OpenJDK(javaランタイム)
    • Git
       
  • ② マイクラサーバーをダウンロード
     
  • ③ マイクラサーバーを起動する
     
  • ④ ポート開放
      
  • ⑤ 接続テスト1:ローカル環境からサーバーに接続する
     
  • ⑥ ルーターを設定して、サーバーを外部に公開する
     
  • ⑦ 接続テスト2:外部からサーバーに接続する

上から順に作業を進めていきます。

サーバーを立てるポイント

  • ローカル環境(内部)でのサーバー接続
  • グローバル環境(外部)でのサーバー接続

ほとんどの人はローカル環境(内部)でのサーバー接続グローバル環境(外部)でのサーバー接続の違いを理解できていません。

結果が同じなので、その違いが分からないのかも知れません。

サーバーを建てる際は、必ずローカル環境とグローバル環境の違いを意識するようにしましょう。

Ubuntuでターミナル(端末)を使う

Ubuntuでターミナルを起動しましょう。

検索欄から"terminal"と入力すればターミナルが表示されます。

そのまま"Enter"を押せば、ターミナルが起動します。

UbuntuなどのLinuxではターミナル(端末)上でのプログラムの操作が基本です。

フォルダを"右クリック"でもターミナル(端末)が起動する!

PowerShellを開くならフォルダを"右クリック"⇒"ターミナルで開く"で時短

cdコマンドでフォルダを移動できますが面倒です。

フォルダから"右クリック"⇒"端末で開く"でターミナル(端末)をそのフォルダ直下で開くことできます。

"右クリック"⇒"端末で開く"でターミナルがフォルダ直下から開始する
"右クリック"⇒"端末で開く"でターミナルがフォルダ直下から開始する

ターミナルを"右クリック"⇒"端末で開く"で起動すれば、かなり時短になるのでオススメです。

例えば、フォルダを"右クリック"⇒"端末で開く"で開けば、わざわざマイクラサーバーの場所にcdコマンドで移動する必要がありません。

① Ubuntu環境設定

【2日目後半】マイクラハードコア100日「チビゾン殺意高すぎ」【ゆっくり実況】
気分転換に御覧ください

マイクラのサーバー構築に必要なLinux環境を設定していきます。

Linuxを初めて使う人にとっては良い勉強になるので、最初は真似するだけで良いので、この通りになぞってみて下さい。

環境設定の流れ

  • ① Ubuntu パッケージ管理システムの更新
  • ② OpenJDK(Javaランタイム環境)
  • ③ ローカルIPアドレス(iproute2
  • ④ Git

念の為、作業前はUbuntu パッケージ管理システム(apt)の更新をしておきましょう。順々にやっていきます。

準備①:Ubuntu パッケージ管理システムの更新

$ sudo apt update && sudo apt upgrade

準備②:OpenJDK(Javaランタイム環境)をインストール

$ sudo apt install default-jre

上のコマンドで OpenJDK(Java)がインストールされます。

OpenJDKを詳しく知りたい方は下の記事が参考になります。

jreをインストールしたら、きちんと入ってるかの確認も含めてjreのバージョンを表示してみましょう。

$ java -version 
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Ubuntu-0ubuntu122.04, mixed mode)

javaアプリケーションは、x86、ARM64などあらゆる環境で実行可能です。

なので、統合版の公式サーバーはMac(M1・M2含む)向けに配布されていませんが、例えば、Javaで動作するNukkitサーバーを使えばMac(M1・M2含む)でもサーバーを起動させることができます。

準備③:ローカルIPアドレスを確認するip a

$ ip a | grep inet
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    inet 192.168.10.103/24 metric 100 brd 192.168.10.255 scope global dynamic enp0s5
    inet6 240b:250:89e0:d200:21c:42ff:fecd:281f/64 scope global dynamic mngtmpaddr noprefixroute 
    inet6 fe80::21c:42ff:fecd:281f/64 scope link 

IPアドレスを調べるには、iproute2のipを使います。ip a | grep inetinetを抜き出すと分かりやすいです。

僕のローカル環境のIPアドレスは192.168.10.103です。192.168.10.103はあくまでローカルIPアドレスであることを押さえておきましょう。

ip aコマンド
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1c:42:cd:28:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.103/24 metric 100 brd 192.168.10.255 scope global dynamic enp0s5
       valid_lft 85448sec preferred_lft 85448sec
    inet6 240b:250:89e0:d200:21c:42ff:fecd:281f/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 269sec preferred_lft 269sec
    inet6 fe80::21c:42ff:fecd:281f/64 scope link 
       valid_lft forever preferred_lft forever

IPアドレスを調べるには、iproute2のipを使います。

$ ip a
$ ip addr
$ ip address show
$ ip address

ipコマンドは下のどれでも構いません。

$ sudo apt install iproute2

iproute2はデフォルトで入っていると思います。無ければ上のコマンドでiproute2をインストールできます。

余談:ifconfigとの違い

まぁ好みですが、以前はnet-toolsに含まれるifconfigを使っていましたでした。net-toolsパッケージは更新されておらず古くセキュリティ的に懸念があるため、現在はiproute2が主流みたいです。

$ sudo apt install net-tools

ifconfigを使いたいならnet-toolsをインストールすると良いです。

準備④:Gitをインストール

$ sudo apt install git

gitをインストールしておきましょう。

Nukkitサーバーのダウンロードにgitコマンドを使うからです。

② Nukkitサーバーをダウンロード【Ubuntu】

gitでNukkitサーバーをダウンロードしてきます。

マイクラのサーバーを構築するだけで、gitも使って実用的な技術がてんこ盛りです。

~ $ git clone https://github.com/CloudburstMC/Nukkit
~ $ cd Nukkit
~/Nukkit $ git submodule update --init
~/Nukkit $ chmod +x mvnw
~/Nukkit $ ./mvnw clean package

上から順に実行してみてください。

正常に終了すると下記のように「BUILD SUCCESS」と表示されます。

[INFO] Dependency-reduced POM written at: 
[INFO] Dependency-reduced POM written at: 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  
[INFO] Finished at: 
[INFO] ------------------------------------------------------------------------

②' Nukkitサーバーを直接ダウンロードしても良い!

Jenkins Branch masterから最新のNukkitをダウンロード
Jenkins Branch masterから最新のNukkitをダウンロード
  • 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をダウンロードすればオッケーです。赤枠リンクからダウンロードできます。

③ Nukkitサーバーを起動させる【Ubuntu】

ネットワークの設定は後でやるとして、先ずは"とりあえず"サーバーを起動させてみましょう。

サーバー起動でつまづくと、後ろの方でやるネットワークの設定などしても意味がないからです。

これは実験のお作法でもあります。

物事は先ず最小構成から成功させていくことで、後々幸せになれる確率が高くなります。

~/Nukkit $ mkdir -p ~/minecraft
~/Nukkit $ cp target/nukkit-1.0-SNAPSHOT.jar ~/minecraft/
~/Nukkit $ cd ~/minecraft/

と言うことで、上のコマンドをそのまま貼り付けて実行してみてください。

作業用に「minecraft」ディレクトリを作ることで、ダウンロードしたNukkitサーバーの元データを汚さずにサーバー構築ができます。

上のコマンドは

  • 作業用に「minecraft」ディレクトリを作成
  • 作成した「minecraft」ディレクトリにNukkitサーバーの複製データをコピー
  • 最後に「minecraft」ディレクトリに移動

万が一、サーバー構築に失敗したら「minecraft」ディレクトリをスクラップにして、あらためて同じ作業をすれば良いだけです。

~/minecraft $ java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar

今度はマイクラではお馴染みのサーバー起動コマンドです。

これだけでサーバーが起動します。

~/minecraft $ java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
19:30:15 [INFO ] Welcome! Please choose a language first!
19:30:15 [INFO ] eng => English
19:30:15 [INFO ] chs => 中文(简体)
19:30:15 [INFO ] cht => 中文(繁體)
19:30:15 [INFO ] jpn => 日本語
19:30:15 [INFO ] rus => Pyccĸий
19:30:15 [INFO ] spa => Español
19:30:15 [INFO ] pol => Polish
19:30:15 [INFO ] bra => Português-Brasil
19:30:15 [INFO ] kor => 한국어
19:30:15 [INFO ] ukr => Українська
19:30:15 [INFO ] deu => Deutsch
19:30:15 [INFO ] ltu => Lietuviškai
19:30:15 [INFO ] idn => Indonesia
19:30:15 [INFO ] cze => Czech
19:30:15 [INFO ] tur => Turkish
19:30:15 [INFO ] fin => Suomi
19:30:15 [INFO ] ara => العربيه
> jpn

初回起動時に使用する言語を聞かれます。

jpnを打ちEnterで次に進みます。

サーバー起動例

~/minecraft $ java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
19:33:30 [INFO ] Loading nukkit.yml ...
19:33:30 [INFO ] Loading server.properties ...
19:33:30 [INFO ] 日本語 (jpn) を言語に選択しました
19:33:30 [INFO ] Minecraft: BEサーバー(v1.19.21に対応)を起動しています
19:33:30 [INFO ] Selected Zlib Provider: 2 (cn.nukkit.utils.ZlibThreadLocal)
19:33:30 [INFO ] 0.0.0.0:19132上でサーバーを開始しています
19:33:30 [INFO ] このサーバーはNukkitのバージョンgit-40701a1「」(API 1.0.14)で動作しています
19:33:30 [INFO ] NukkitはGPLライセンスに基づき配布されています
19:33:30 [INFO ] Loading runtime items...
19:33:30 [INFO ] Loading recipes...
19:33:30 [INFO ] Loaded 1509 recipes.
19:33:30 [INFO ] Successfully loaded 0 resource packs
19:33:30 [INFO ] ワールド "world" を読み込んでいます
19:33:30 [INFO ] Preparing start region for level "world"
19:33:30 [INFO ] ワールド "nether" を読み込んでいます
19:33:30 [INFO ] Preparing start region for level "nether"
19:33:30 [INFO ] GS4ステータス リスナーを開始
19:33:30 [INFO ] クエリポートを設定: 19132
19:33:30 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
19:33:30 [INFO ] デフォルトゲームタイプ: サバイバルモード
19:33:30 [INFO ] 起動完了(0.662秒)! "help"または"?"でヘルプを表示
> 

サーバー起動時にはポート番号などの設定値が表示されます。

起動時の表示にサーバー情報が出る!

19:33:30 [INFO ] 0.0.0.0:19132上でサーバーを開始しています

起動時の表示を見れば、調べなくてもサーバー情報が色々分かります。

起動時には表示を見る癖をつけると良いでしょう。

④ Ubuntu【統合版】19132/udpポート開放

$ sudo ufw enable
$ sudo ufw allow 19132/udp
$ sudo ufw reload

Ubuntuのファイアウォールはデフォルトだとufwです

UFW(Uncomplicated Firewall)は、ファイアウォールを簡単にコマンド操作できるよう設計されたLinux(リナックス)のファイアウォール管理プログラムです。

ufwは初期では無効なのでsudo ufw enableでファイアーウォールを有効にします。

19132/udpsudo ufw allow 19132/udpで開放します。

sudo ufw reloadで設定を反映します。

設定が反映されているかsudo ufw status verboseコマンドで確認してみます。

$ sudo ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
新しいプロファイル: skip

To                         Action      From
--                         ------      ----
19132/udp                  ALLOW IN    Anywhere                  
19132/udp (v6)             ALLOW IN    Anywhere (v6)             

sudo ufw status verboseを実行した画面が上です。

19132/udp ALLOW IN Anywhereが表示されているので19132/udpの開放に成功です。

これでローカル上へのサーバー公開が完了です。

確認も踏まえて、ローカル上の端末からサーバーにアクセスしてみましょう。

⑤ 接続テスト1:ローカル環境からサーバーに接続する【統合版】

【10日目】マイクラハードコア100日「自動収穫装置準備とダイヤ初入手」【ゆっくり実況】
気分転換に御覧ください

Pアドレスの確認、ローカルマシンのポート開放も済んだので、ローカル環境からサーバーに接続テストをしましょう(以下、ローカル接続テストと言います。)。

下記手順で進めましょう。

ローカル接続テスト手順

  • 1)統合版マイクラサーバーを起動する。
  • 2)IPアドレス・ポート番号を再度確認する。
  • 3)Wifiスマホで統合版サーバーにアクセスする。

当然、IPアドレス、ポート番号が必要になるので、どこかにメモっておきましょう。

先ずはサーバーを起動しましょう。

1)統合版マイクラサーバーを起動する。

~/minecraft $ java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
07:02:52 [INFO ] Loading nukkit.yml ...
07:02:52 [INFO ] Loading server.properties ...
07:02:52 [INFO ] 日本語 (jpn) を言語に選択しました
07:02:52 [INFO ] Minecraft: BEサーバー(v1.19.21に対応)を起動しています
07:02:52 [INFO ] Selected Zlib Provider: 2 (cn.nukkit.utils.ZlibThreadLocal)
07:02:52 [INFO ] 0.0.0.0:19132上でサーバーを開始しています
07:02:52 [INFO ] このサーバーはNukkitのバージョンgit-40701a1「」(API 1.0.14)で動作しています
07:02:52 [INFO ] NukkitはGPLライセンスに基づき配布されています
07:02:53 [INFO ] Loading runtime items...
07:02:53 [INFO ] Loading recipes...
07:02:53 [INFO ] Loaded 1509 recipes.
07:02:53 [INFO ] Successfully loaded 0 resource packs
07:02:53 [INFO ] ワールド "world" を読み込んでいます
07:02:53 [INFO ] Preparing start region for level "world"
07:02:53 [INFO ] ワールド "nether" を読み込んでいます
07:02:53 [INFO ] Preparing start region for level "nether"
07:02:53 [INFO ] GS4ステータス リスナーを開始
07:02:53 [INFO ] クエリポートを設定: 19132
07:02:53 [INFO ] クエリーは 0.0.0.0:19132 で動作しています
07:02:53 [INFO ] デフォルトゲームタイプ: サバイバルモード
07:02:53 [INFO ] 起動完了(1.03秒)! "help"または"?"でヘルプを表示
> 

サーバーを起動させるコマンドはjava -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jarです。

2)IPアドレス・ポート番号を再度確認する。

~/minecraft $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1c:42:cd:28:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.103/24 metric 100 brd 192.168.10.255 scope global dynamic enp0s5
       valid_lft 86398sec preferred_lft 86398sec
    inet6 fe80::21c:42ff:fecd:281f/64 scope link 
       valid_lft forever preferred_lft forever

IPアドレスを調べるコマンドはip aです。

ポートは上のサーバー起動の表示から19132だと分かります。

3)Wifiスマホで統合版サーバーにアクセスする。

ローカル環境からサーバーに接続する端末選びですが「自宅のWifiに接続したスマホ」を使うと良いでしょう。

細かなことが分からなければ、とりあえず「自宅のWifiに接続したスマホ」でサーバーに接続してみて下さい。

「自宅のWifiに接続したスマホ」を準備したら、Minecraftのアプリを起動します。

次に「遊ぶ」を押します。

次に上部の「サーバー」から「サーバーを追加」を押します。

サーバー情報の入力が出るので、調べておいたローカルIPアドレス、ポートを入力します。

最後に「保存」を押して次に進みます。

サーバーが追加されたので、サーバーを選択して「サーバーに参加」を押せば、起動しているローカルサーバーに接続します。

何やら注意事項が表示されるので確認して「続行」を押します。

サーバー接続中の表示になるので暫く待ちます。

ParallelsのUbuntu 22.04 LTS ARM64で起動した Nukkitサーバーにローカル接続!
ParallelsのUbuntu 22.04 LTS ARM64で起動した
Nukkitサーバーにローカル接続!

ログインできれば、ローカル接続テストは成功です。

念の為、サーバーのプロンプトも確認しておきましょう。

「アカウントA」からUbuntu 22.04 LTS ARM64仮想環境に建てた統合版マイクラサーバー(Nukkitサーバー)にログインできてるのが分かると思います。

07:39:31 [INFO ] アカウントA[/192.168.10.101:51228] がエンティティID 1 として (world, 121.5522, 66.0, 135.9729)にログインしました

特に、この表示に注目してください。

アカウントA[/192.168.10.101:51228]

このアドレスは、グローバルIPアドレスか、ローカルIPアドレスか?

どちらでしょうか?

答えはローカルIPアドレスです。

忘れないで下さい。今やっているのはローカルサーバーの接続テストです。

まだ、外部にサーバーを公開していないので外の友達からはこのサーバーにはアクセスできません。

では、次にローカルサーバーを外部に公開していきましょう。

⑥ 外部に公開!ルーター「Aterm WG2600HS」でのUDPポート転送の設定例

【6~10日総集編】マイクラハードコア100日「無限溶岩∞装置を実践サバイバル」【ゆっくり実況】
気分転換に御覧ください

サーバーを外部に公開するのはここからが本番です。

サーバーを外部に公開するためには、ルーター側にポート転送設定を行います。

場合によってはパケットフィルタ設定(ルーター上のポート開放)も必要になるかも知れません(今回は不要です。)。

※「ルーター」「ポート転送」など「用語解説」は下にあります。

先ずはルーターの設定画面を開こう

NEC製ルーター「Aterm WG2600HS」の設定画面

ルーターのURLは、ローカルIPアドレスの最下段を"1"にしたアドレスです。

ローカルIPアドレス192.168.10.101なら、ルーターのURLは192.168.10.1です。

僕の環境では、ルーターの設定画面を開くには、URL欄にhttps://192.168.10.1でアクセスしました。

また、ログインに必要な「ユーザー名」などは注意書きされてます。

「ユーザー名」には「admin」と半角小文字で入力し、「パスワード」には、本商品本体のラベルに記載された数字6桁のパスワード(Web PW)を入力して、[ログイン]をクリックしてください。

機器によっては取扱説明書などにユーザー名などの初期設定値が記載されていたりもします。

他の機器も多少違いはあれど、ほとんど同じです。

ルーター画面からポートマッピング設定を開く

NEC製ルーター「Aterm WG2600HS」のトップ画面

ルーターにログインしたら、上記画面が表示されます。中段右側に「ポートマッピング設定」という項目があるので、それをクリックします。

ちなみに、ルーターAterm WG2600HSでは、ポート転送を"ポートマッピング"と言います。

BUFFALOなどのルーター機器だと"ポートフォワーディング"と表示されてるかも知れません。ポート転送=ポートマッピング=ポートフォワーディング、すべて同じ意味です。

※「ルーター」「ポート転送」など「用語解説」は下にあります。

ポートマッピングの設定をする

NEC製ルーター「Aterm WG2600HS」でポートマッピング(ポート転送)するための設定画面
NEC製ルーター「Aterm WG2600HS」でポートマッピング(ポート転送)するための設定画面

上の画像が、Aterm WG2600HSのポート転送設定の画面です。

上段から

  • 利用可能ポート:変換対象ポートで利用可能なポート
  • NATエントリ追加:ここにポート転送設定を入力します。

それでは統合版マイクラサーバー外部公開時のポート転送の設定例を解説します。

統合版マイクラサーバー外部公開時のポート転送の設定例

ポート転送のUDPポート設定例
ポート転送のUDPポート設定例

今回の例では統合版マイクラサーバー(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)でサーバーにアクセスする。
  • 中継地点のルーターはポート:19744192.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アドレスを確認する(黒塗り)

上はCMANでグローバルIPアドレスを調べた画面です。

画像の黒塗り箇所にグローバルIPアドレスが表示されています。

2)4G(5G)回線に繋がったスマホ(Wifiをオフにしたスマホ)

この作業は4G(5G)回線に繋がったスマホ(wifiをオフにしたスマホ)でやっていきます。

マインクラフトのアプリの「サーバーを追加」から、確認したグローバルIPアドレスでサーバーを追加します。

サーバーアドレス欄にグローバルIPアドレス(黒塗り)を入力しています。

外部からアクセスするポートは「19744」なので注意してください。

ルーターの設定等が上手くいっていれば、上記のようにPing値が表示されます。

このPing値が表示されていれば、外部から統合版マイクラサーバーが"見えている状態"です。

「サーバーに参加」を押します。

サーバーに接続中の画面になります。

ParallelsのUbuntu 22.04 LTS ARM64で起動した Nukkitサーバーにグローバル接続!
ParallelsのUbuntu 22.04 LTS ARM64で起動した
Nukkitサーバーにグローバル接続!

見た目は同じですが、外部から統合版マイクラサーバー(Nukkitサーバー)に接続しています。

これで友達の家(外部)からでも、自分の家の統合版マイクラサーバーに入れるようになります。

統合版マイクラサーバーにログインしたので、プロンプトを確認してみましょう。

特に注目してもらいたいのは、ログイン箇所の表示です。

17:25:05 [INFO ] アカウントA[/126.236.176.10:33429] がエンティティID 1 として (world, 121.5522, 66.0, 135.9729)にログインしました

グローバル接続とローカル接続では、ログインしているユーザーのアドレスが違います。

IPアドレスの違い

  • グローバルIPアドレス:アカウントA[/126.236.176.10:33429]
  • ローカルIPアドレス :アカウントA[/192.168.10.101:51228]

アドレスを識別できると、どの段階でシステムがこけてるかを切り分けができるようになります。

また、必ず小から大に発展させるように取り組む癖をつけましょう。

つまりLANからWANに拡張させるということです。

  • ローカルのアクセスで問題が出たら、LAN内のPC本体の設定を疑う
  • グローバルのアクセスで問題が出たら、ルーター設定を疑う

など、問題の切り分けが容易になるからです。

マイクラ鯖立てトラブルシューティング集

Java版

統合版

○良い:統合版マイクラ「Nukkit」では、Xbox Live 用ポートを"開放しなくて良い"

統合版マイクラ鯖
Xbox Live 用ポート開放
UDP88、500、3544、4500、60209(推奨)
 
TCP
80
 
UDP・TCP両方
53、3074
 
Teredo有効化
netsh interface Teredo set state client clientport=60209(上記推奨と同じ値)
 

Xbox Live ポート参考

  • Xbox コンソールの Xbox ネットワークで使用されるネットワーク ポート
    • https://support.xbox.com/ja-JP/help/hardware-network/connect-network/network-ports-used-xbox-live
       
  • NAT エラーとマルチプレイヤー ゲームの問題のトラブルシューティング
    • https://support.xbox.com/ja-JP/help/hardware-network/connect-network/xbox-one-nat-error

先ず結論ですが、今回使った非公式の統合版マイクラサーバー(Nukkit)にXbox Live 用ポートの開放は「不要」です。

NukkitはJavaで動作するからです。

これに対して、公式の統合版マイクラサーバーだとXbox Live 用ポートの開放が「必要」なはずです。公式の統合版マイクラサーバーはJavaで動作していないからです。

統合版マイクラサーバーNukkitでは、Xbox Live 用ポートを"開放しなくて良い"が正解です。

マイクラ自宅サーバーのセキュリティ面で気を付けること

先ず言いたいことは、ポート開放はセキュリティを下げます。

セキュリティ上で注意すべきことは基本2つです。

セキュリティ危険度ひとこと

IPアドレスを知られること。ただし、ポート番号知られていない。
 
IPアドレスは調べれば特定できます。が、知られないようにした方が良い。

IPアドレスも知られて、ポート番号も知られている。
 
危険部屋に鍵がかかって無いのと同じ状況なので、「友達の部屋」には強盗が入りたい放題です。

その部屋だけは何処からでも入りたい放題の状態です。

それ以外の部屋は鍵がかかってます。

これはサーバー運用上しょうがないリスクです。サーバーは、穴を開けてリスクを許容して運用します。

当然、対策はしますが。こういうものだと思ってください。

簡易な対策だと、ポート番号を定期的に変更したりします。

また、セキュリティリスクが本当に不安になったらポートを閉じましょう。

要するに、部屋に鍵をかけようということです。

ネットワークIT用語解説

【1日目】マイクラハードコア100日「地獄の始まり」【ゆっくり実況】
気分転換に御覧ください

ネットワークで使う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に入るには、必ず中継地点(ルーター)の案内が必要になるわけです。

高速道のまま突っ走っても、どこに行けば良いのか分からないので中継地点(ルーター)で目的地を教えてもらったりします。それがポート転送(目的地の案内)です。

ファイヤーウォール

「ファイヤーウォール」は、コンピュータネットワークにおいて、コンピュータセキュリティの保護、その他の目的のため、通信を制御・阻止(パケットフィルタリング)する機能を言います。

「ファイヤーウォール」は、パソコン、スマホ、ルーターなどすべてのデバイスに搭載されている機能と理解しておいてください。

高速道路の料金所で「許可された車だけを通す仕組み(機能)」です。

Java版Minecraft にセキュリティ上の脆弱性【Log4Shell】

参考:https://www.minecraft.net/ja-jp/article/important-message--security-vulnerability-java-edition-jp

コメント

コメントする

目次