【無料】M1・M2 MacのParallels(Windows11)に統合版マイクラサーバーを立てる!

【無料】M1・M2 MacのParallels(Windows11)に統合版マイクラサーバーを立てる!

M1・M2 MacにParallels+Windowsで
マインクラフト統合版サーバーを構築!

M1・M2 MacにParallels+Windowsで
マインクラフト統合版サーバーを構築!

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

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

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

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

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

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

外部に公開できない

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

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

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

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

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

M1・M2 Macで統合版マイクラ鯖を立てる際に知っておくこと

今回は、M1・M2 Mac(ARM64)環境下に統合版マイクラ鯖(Bedrock版)を構築します。

M1・M2 Macを汚したくないので仮想環境(Windows11)を作って、その上で統合版マイクラサーバーを動かします。

少々無理があるんじゃないかとツッコミがあると思います。

ツッコミどころ

  • M1・M2 Mac
    • M1・M2 Macで動くマイクラBE鯖はないはず?
    • BE鯖はARM64プロセッサー上で動かないはず?
       
  • Parallels Desktop 19 for Mac
    • なんでParallels Desktop 19 for Macの仮想環境を使うのか?
       
  • 仮想環境はWindows11
    • なんでWindowsを使うのか?
       
  • Nukkitサーバー
    • なんで公式サーバーではなくNukkitサーバーを使うのか?
       
  • Parallels®︎ Desktop 18 for Mac仮想環境のネットワーク設定
    • 仮想環境へのサーバー接続ってどうやるのか?
       
  • ポート開放ツールを使わない
    • なんでポート開放ツールを使わないのか?

とツッコんで欲しいくらいです。

実は、M1・M2 Macでも関係なく統合版マイクラサーバーは動きます。

Javaで動作するNukkitサーバー(非公式)を使うからです。

その他にもきちんとした理由があります。

M1・M2 Macのマイクラ鯖はないはず?

M1・M2 Macで動作する統合版マイクラ鯖はありません。

BE鯖はARM64プロセッサー上で動かないはず?

arm64環境では動きませんが、x86環境をエミュレートすれば動作します。

が、面倒なのでやりません。

※ITは楽できるなら楽に済ませるのが良いからです。

なんで仮想環境を使うのか?

仮想環境を使う理由は、メインPCの環境を汚さないからです。

仮想環境なら簡単にスクラップ&ビルドできるので色々実験できます。

なんでParallels®︎ Desktop 18 for Macを使うのか?

M1・M2 Macに仮想環境を簡単に構築できるからです。Parallelsを使えば、誰でもクリック数回、数分で構築できます。

なんでWindows11を使うのか?

M1・M2 MacでもWindowsゲームがしたくなるからです。

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

Javaランタイム環境上で動作するからです。

Javaランタイム環境ならarm64プロセッサーなど関係なく、どんなデバイス上でも鯖の起動が可能になります。

仮想環境のネットワーク設定

下で詳しく解説しますが、ネットワークアダプタに設定してLAN上で単一マシンとして認識されるようにします。

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

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

本記事では仮想環境にネットワーク接続するので、ネットワークの理解が深まるのがポイントです。

長々説明するのは後からにします。

早速、サーバーを構築していきましょう。

無料でNukkit統合版マイクラサーバーを建てる!流れ

**「無料で統合版マイクラサーバーを建てる!」**流れは下の通りです。

鯖を建てる流れ

  • OS準備: Windows11仮想環境を構築

    • 「Parallels®︎ Desktop 18 for Mac」でWindows11を構築する 
  • ① Windows環境設定

    • システム更新

    • OpenJDK(javaランタイム)

    • IPアドレス 

  • ② マイクラサーバーをダウンロード  

  • ③ マイクラサーバーを起動する 

  • Parallels補足:仮想環境のネットワークを設定する
     

  • ④ ポート開放  

  • ⑤ 接続テスト1:ローカル環境からサーバーに接続する 

  • ⑥ ルーターを設定して、サーバーを外部に公開する 

  • ⑦ 接続テスト2:グローバル環境からサーバーに接続する 

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

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

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

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

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

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

OS準備:Windows11仮想環境を構築

M1・M2 Macに仮想環境を構築するには「Parallels®︎ Desktop 18 for Mac」を使います。

「Parallels®︎ Desktop 18 for Mac」なら、M1・M2 MacにWindows11をクリックだけでインストールできます。

もし作業で上手くいかなかったら、スクラップにして(削除して)もう一度クリックからやり直せば良い訳です。

ガチャをリセマラするよりも、Windows11をスクラップ&ビルドする方が簡単です。

① Windows 環境設定

Windows 11 64bit デスクトップ画面

Windows 11 64bit デスクトップ画面

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

環境設定の流れ

  • 1. Windowsシステム更新
  • 2. PowerShell 使い方
  • 3. OpenJDK(javaランタイム)
  • 4. IPアドレス

Windowsシステム更新は念の為です。順々にやっていきます。

下記タブを切り替えて確認してください。

  • 1. Windowsシステム更新
  • 2. PowerShell 使い方
  • 2. OpenJDKインストール
  • 3. IPアドレス確認

1. Windowsシステム更新

準備中

PowerShell 使い方

Windowsで検索欄にPowerShellと入力する

Windowsで検索欄にPowerShellと入力する

Windows なら検索欄から**“PowerShel”**と入力すればPowerShell が表示されます。

そのまま**“Enter”**を押せば、PowerShell が起動します。

起動のやり方は他にもあります。

PowerShellでマイクラのサーバーフォルダを直接開く

PowerShellの起動に"ターミナルで開く"を使えば時短になる

PowerShellの起動に**“ターミナルで開く”**を使えば時短になる

PowerShellでマイクラのサーバーフォルダを右クリックで直接開く

PowerShellでマイクラのサーバーフォルダを右クリックで直接開く

PowerShellで***cdコマンド*を使ってフォルダを移動するのも良いですが面倒です。PowerShellの起動には、任意のフォルダで”右クリック”⇒“ターミナルで開く”**の方が時短になります。

注①: 最新のPowerShell

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows

PS C:\Users\ユーザー名> 

WindowsデフォルトのPowerShell 5.1 を起動すると上のように**「新機能と改善のために最新の PowerShell をインストールしてください!」**と表示されるかも知れません。

マイクラのサーバー起動でPowerShellを使う程度ならわざわざ最新にする必要はありませんが、どうしても気になる方は最新のPowerShell 7.2 にすると良いでしょう。

注②:PowerShell の「文字化け」

Windowsのターミナル「PowerShell」 のデフォルトの文字コードは***shift_jis***です。

***shift_jis***だと日本語が文字化けします。

そんな時は、文字コードを***UTF-8***にすれば改善します。

3. OpenJDK(Java)インストール

上記URLからインストールファイルを一式ダウンロードできます。

ただ、いちいちサイトに訪問するのも面倒なので、Windowsのパッケージマネージャー***wingetを使ってOpenJDK 17(2022/9/1最新)***をダウンロードします。

PS C:\Windows\system32> winget install Microsoft.OpenJDK.17
見つかりました Microsoft Build of OpenJDK with Hotspot 17 [Microsoft.OpenJDK.17] バージョン 17.0.4.101
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://aka.ms/download-jdk/microsoft-jdk-17.0.4.1-windows-aarch64.msi#winget
 ██████████████████████████████  150 MB / 150 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

PS C:\Windows\system32> 

***winget installコマンド一発でMicrosoft OpenJDK 17(2022/9/1最新)***がインストールされます。

***winget***を使っていれば、Linuxなどにも慣れるので積極的に使っていきましょう。

OpenJDKを詳しく知りたい方はこちら

4. WindowsでローカルIPアドレスを確認する

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS C:\Windows\system32> ipconfig

Windows IP 構成

イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240b:250:89e0:d200:d8ed:c36c:e2fa:112c
   一時 IPv6 アドレス. . . . . . . . . .: 240b:250:89e0:d200:85a4:c346:84:5b4f
   リンクローカル IPv6 アドレス. . . . .: fe80::d8ed:c36c:e2fa:112c%10
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.103
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::8222:a7ff:fe0e:b368%10
                                          192.168.10.1
PS C:\Windows\system32>

WindowsでIPアドレスを調べるコマンドは***ipconfig***です。

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

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

Jenkins Branch masterから最新のNukkitをダウンロード

Jenkins Branch masterから最新のNukkitをダウンロード

上記URLから最新のNukkitサーバー***nukkit-1.0-SNAPSHOT.jar***をダウンロードすればオッケーです。赤枠のリンクからjarファイルをダウンロードできます。

※面倒臭いですが***winget***でNukkitサーバーを構築する方法もあります。

③ Nukkitサーバーを起動する

PS C:\Nukkit> java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar

上がNukkitサーバーを起動させるコマンドです。

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS C:\Nukkit> java -Xms1G -Xmx4G -jar nukkit-1.0-SNAPSHOT.jar
2022-09-04 04:07:36,675 main WARN Disabling terminal, you're running in an unsupported environment.
04:07:36 [INFO ] Welcome! Please choose a language first!
04:07:36 [INFO ] eng => English
04:07:36 [INFO ] chs => 中文(?体)
04:07:36 [INFO ] cht => 中文(繁體)
04:07:36 [INFO ] jpn => 日本語
04:07:36 [INFO ] rus => Pycc?ий
04:07:36 [INFO ] spa => Espa?ol
04:07:36 [INFO ] pol => Polish
04:07:36 [INFO ] bra => Portugu?s-Brasil
04:07:36 [INFO ] kor => ???
04:07:36 [INFO ] ukr => Укра?нська
04:07:36 [INFO ] deu => Deutsch
04:07:36 [INFO ] ltu => Lietuvi?kai
04:07:36 [INFO ] idn => Indonesia
04:07:36 [INFO ] cze => Czech
04:07:36 [INFO ] tur => Turkish
04:07:36 [INFO ] fin => Suomi
04:07:36 [INFO ] ara => ???????
jpn

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

***jpnと打ってEnter***で次に進みます。

サーバー起動例

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

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

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

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

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

03:23:29 [INFO ] 0.0.0.0:19132上でサーバーを開始しています

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

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

Parallels補足①:仮想環境のサーバーに接続できない問題

さて、サーバーが起動したので、あとは手元の統合版マイクラから接続してみましょう。

ただ、残念ながらサーバーには接続できません。

焦らないで下さい。

サーバーに接続するために必要なもの

  • IPアドレス
  • ポートの開放
  • ポート転送(外部に公開する場合)

ついに登場したIPアドレス、ポート開放です。

そして、ポート転送という用語です。ネットワークに関するIT用語は末尾に「用語解説」を載せています。

先ずは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 10.211.55.6/24 metric 100 brd 10.211.55.255 scope global dynamic enp0s5
       valid_lft 1485sec preferred_lft 1485sec
    inet6 fdb2:2c26:f4e4:0:21c:42ff:fecd:281f/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591882sec preferred_lft 604682sec
    inet6 fe80::21c:42ff:fecd:281f/64 scope link 
       valid_lft forever preferred_lft forever

***inet 10.211.55.6***が、IPアドレスです。

このIPアドレスを見て不思議に思って下さい。なんとグローバルIPアドレスです。

IPアドレスには書式があって、それをみてグローバルIP=WAN接続か、ローカルIP=LAN接続かで切り分けます。

IPアドレスの書式

  • **ローカルIPアドレス:**192.168.XX.XXなどの形式です。
  • **グローバルIPアドレス:**上記以外

Parallels補足②:仮想環境のネットワークをローカルネットワークにする。その①

あえて大袈裟に問題としてピックアップしています。

**“仮想環境のネットワークってなに?“**と疑問に思ってもらいたいからです。

仮想環境のネットワークってどうなってんの?

仮想環境ソフトによってケースバイケースです。

Parallels®︎ Desktop 18 for Mac の仮想マシン(Ubuntu 22.04 LTS ARM64)のデフォルトは共有ネットワークになっています。

共有ネットワーク≒NATでホストOSと同じIPアドレスをシェアしてる状態です。

あえて、ネットワーク用語に馴染むように意味不明な専門用語を使ってます。

IPアドレスが、グローバルIPアドレスなので何かしらの設定が必要です。

ここをきちんと説明していないと絶対つまづくからです。

どう対応するか?

  • **方法①:**共有ネットワークとして仮想環境のサーバーに接続する。
  • **方法②:**ローカルのネットワークに設定し直して、ローカル環境のサーバーとして扱う。

この記事では方法②を採用します。

仮想環境のマシンのネットワークをローカル環境に設定しなおせば、いつも通りのサーバー環境として設定できるからです。

「いつも通りのサーバー環境」というのは、ルーター配下にローカルマシンがぶら下がって見える状態のことです。

自宅のPCのネットワークは、ルーター配下にマシン・サーバーがぶら下がる状態でネットワークを構築しています。

仮想環境のPCも、現物のPCのようにルーターにぶら下げます。※設定は簡単です。

Parallels補足③:仮想環境のネットワークをローカルネットワークにする。その②

長ったらしい説明をしてきましたが、仮想環境のネットワークをローカルネットワークにするにはクリック一回で設定できます。

上の画像の通り、構成画面から「デフォルトのアダプタ」を選択するだけです。

仮想環境を再起動しなくても、選択した瞬間からネットワークに設定が反映されます。

再度IPアドレスを確認してみましょう。

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS C:\Windows\system32> ipconfig

Windows IP 構成

イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240b:250:89e0:d200:d8ed:c36c:e2fa:112c
   一時 IPv6 アドレス. . . . . . . . . .: 240b:250:89e0:d200:85a4:c346:84:5b4f
   リンクローカル IPv6 アドレス. . . . .: fe80::d8ed:c36c:e2fa:112c%10
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.103
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::8222:a7ff:fe0e:b368%10
                                          192.168.10.1
PS C:\Windows\system32>

IPアドレスは***inet 192.168.10.103***です。

プライベートアドレスに変更されています。

つまりこれで仮想環境のマシンを現物のローカルマシンとして扱えるようになったわけです。

TCPポートを開放

Windows DefenderのOpenJDK ポート開放画面

Windows DefenderのOpenJDK ポート開放画面

**「Windows Defender」**は、Windowsデフォルトのセキュリティソフトです。

McAfeeなど他社のセキュリティソフトを入れていない人は、この**「Windows Defender」**の場合でのポート開放になります。

と言っても、ポート開放はクリック一つで完了します。

Javaサーバーをはじめて起動するとWindows Defenderの画面が表示されます(上の画像)。

この画面の**「アクセスを許可する」**を押すだけで、ローカルマシン(Windowsマシン)のポート開放は完了です。

ちなみにこの画面はJava(OpenJDK)のポートアクセス許可を承諾する画面です。

赤枠のパブリック(WAN)か、プライベート(LAN)のどちらの設定か?という話ですが、外部に公開するサーバーを立てるのでパプリック、プライベートの両方に✔︎をつけましょう。

※ちなみにパプリックにチェックをつけると、Windowsマシンのセキュリティは弱くなります。

Windows Defenderでのポート開放のため、McAfeeなど他のセキュリティソフトを使用している場合は、そのセキュリティソフトの設定画面からポート開放する必要があります。

McAfeeでのポート開放のやり方

記事を作成中

McAfee(その他のセキュリティソフト)を使ってるなら、そのセキュリティソフトだけポート設定をすれば十分です。

なので、McAfee(その他のセキュリティソフト)を使っているなら、Windows Defenderの設定は不要です。

ポート設定がきちんと反映されているか、Windows Defenderの設定を確認しておきましょう。

Windows Defenderを開くには"defender"と入力する

Windows Defenderを開くには”defender”と入力する

開放したUDPポートを確認します。

なぜなら**「OpenJDKプログラムのポートを開放しました。それを確認してください。」**と言われたら?

は?何のこと?となる人が大半だからです。

上で既に開いたJavaのプログラムポートのことです。自分でポート開放してるのに、それの確認方法を知らない人が大多数なので、きちんと確認しておきましょう。

ポート開放の設定を見るにはWindows Defenderを開きます。Windows Defenderを開くには検索欄に**“defender**“と入力すれば表示されます。

※McAfeeなど他のセキュリティソフトを使ってる場合は、その設定を確認してください。

**「Windows Defender ファイアーウォール」**をクリックしましょう。

赤枠**「詳細設定」**を開きます。

Microsoft Defender ファイアウォール OpenJDK UDPポート

Microsoft Defender ファイアウォール OpenJDK UDPポート

確認するのは**「受信の規則」**です。ちなみに「送信の規則」には「OpenJDK」の設定欄はないはずです。

**「受信の規則」を開くと、小さいですが「OpenJDK」**の欄がTCP・UDPで二行があります。

統合版マイクラサーバーで確認するのは***UDP*の欄です。
※Java版マイクラサーバーは
*TCP***の欄です。

理由は、統合版マイクラサーバーで受け付ける***ポート:19132UDP***だからです。

OpenJDKの受信規則で何を確認するか?

  • TCP or UDP
  • ポートは何を設定しているか?
  • パブリック or プライベートネットワーク?

パブリック or プライベートネットワークってなに?と思うかも知れません。

外部(グローバル・パブリックとも言う)か、内部(ローカル・プライベートとも言う)か、の違いです。

さて、OpenJDK(UDP)の行を選んで、右の赤枠**「プロパティ」**を開きます。

OpenJDKプログラムのアクセス許可に関する設定画面です。

とりあえず、30秒眺めてください。**「ふーん」**となればオッケーです。

Microsoft Defender ファイアウォール OpenJDK UDPポート プロパティ

Microsoft Defender ファイアウォール OpenJDK UDPポート プロパティ

これも、とりあえず、30秒眺めてください。

さて、この画面は受信ポートのプロトコルが***UDPで、受付ポートはすべて***ということです。

つまり、OpenJDKを使うプログラムは***ポート:19132/UDPに限らず、すべてのUDPポートを受け付ける***ということです。

例えば、思いつきでサーバーを***ポート:64553/UDP***で受け付けても、他のプログラムのポートと衝突しなければ即受付されるということです。

ネットワークのスコープも設定できます。

サーバーを外部に公開しないならプライベートネットワークのみの設定にすると良いでしょう。

どうでしょう?

自分でポート開放の設定を見たら腑に落ちませんか?

自動でポート開放された設定値をそのままにせず、次回に活かすために確認しておくと良いでしょう。

ローカルマシン(Windowsマシン)のネットワーク設定は「パブリック」

この設定も念の為に確認しておいて下さい。

ローカルマシン(Windowsマシン)そのものは「パブリック」に設定されていると思います。

ちなみに、パブリックの方がセキュリティ的には厳しい設定になります。

ネットワーク設定の違い

  • **パブリック:**外部のネットワークに繋ぐため、リモート接続などのポート閉じる。
  • **プライベート:**内部のネットワークで使用するため、リモート接続などのポートを開く。

頭が混乱するかも知れませんが、こちらはPC本体の設定です。

上のOpenJDKをパブリック設定にすると、セキュリティが甘くなる話とは違います。

ネットワーク設定の画面を開くなら

デスクトップ右下のアンテナを右クリックすれば開くことができます。

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

https://youtu.be/JM7ZhRlubq4

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

[ad]

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

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

ローカル接続テスト手順

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

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

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

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

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

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

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

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

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS C:\Windows\system32> ipconfig

Windows IP 構成

イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240b:250:89e0:d200:d8ed:c36c:e2fa:112c
   一時 IPv6 アドレス. . . . . . . . . .: 240b:250:89e0:d200:85a4:c346:84:5b4f
   リンクローカル IPv6 アドレス. . . . .: fe80::d8ed:c36c:e2fa:112c%10
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.103
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::8222:a7ff:fe0e:b368%10
                                          192.168.10.1
PS C:\Windows\system32>

WindowsでIPアドレスを調べるコマンドは***ipconfig***です。

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

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

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

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

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

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

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

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

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

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

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

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

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

Parallels Ubuntu 22.04 LTS ARM64のNukkitサーバーにローカル接続!

Parallels Windows11のNukkitサーバーにローカル接続!

サーバーにログインできたら、ローカル接続テストは成功です。

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

Windows11の統合版マイクラサーバー(Nukkitサーバー)に、**“アカウントA”**でログインできてるのが分かると思います。

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

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ポート転送の設定例

https://youtu.be/9zgL2u085l0

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

[ad]

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

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

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

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

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

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版

【解決】Java版マイクラサーバーエラー:Exception: java.lang.OutOfMemoryError【OpenJDK】●

統合版

【解決】統合版マイクラサーバー「ネットワークに接続できないようです。」

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

| 統合版マイクラ鯖

Xbox Live 用ポート開放
UDP
 
TCP
80
 
UDP・TCP両方
53、3074
 
Teredo有効化
netsh interface Teredo set state client clientport=60209(上記推奨と同じ値)
 

Xbox Live ポート参考

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

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

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

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

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

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

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

セキュリティ危険度ひとこと
IPアドレスを知られること。ただし、ポート番号知られていない。
 **IPアドレスは調べれば特定できます。**が、知られないようにした方が良い。
IPアドレスも知られて、ポート番号も知られている。
 危険部屋に鍵がかかって無いのと同じ状況なので、「友達の部屋」には強盗が入りたい放題です。

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

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

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

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

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

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

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

ネットワークIT用語解説

https://youtu.be/NcdIS3FvQqg

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

[ad]

ネットワークで使う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