0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UDP対応】WSL + Dockerで動かす統合版マイクラサーバーをLAN公開する方法

Posted at

Windows11でwsldockerに構築したMinecraft Bedrock ServerをLANに公開し、他のwindows端末のクライアントから接続できるようにする方法です。本記事は主にUDPのポートを公開する方法を説明します。

単にマルチプレイしたいだけなら、ワールド設定マルチプレイの「マルチプレイヤー ゲーム」機能の利用をオススメします。簡単・安全・確実です。統合版マイクラは専用のサーバー構築しなくてもマルチプレイができます。

マイクラマルチ

本記事は統合版マインクラフトで動作確認を行っています。
Windows 11 Home
Minecraft for Windows 1.21.131

本記事ではWSL2を使用しています。記事内の表記は、実行コマンドに合わせてwslと記述しています。

WSL2のネットワークモード「Mirrored」を使用するため、Windows 11 22H2以降である必要があります。

統合版マイクラサーバーのコンテナ起動

前回の記事では、dockerでscreenを使う方法で統合版マイクラサーバーを構築しました。

wslのIPアドレスを指定し、同じPCのwindows側で起動している統合版マイクラクライアントから接続できることを確認しました。
こちらのコンテナを利用し、ネットワーク設定を変更して他のwindowsからマイクラサーバーに接続できるようにします。

wslのネットワーク問題

wslのネットワークモードはデフォルトでNATになっています。wslのUbuntuから設定を確認できます。

wslのネットワークモード確認
wslinfo --networking-mode

NATではホスト側windowsとは別のIPアドレスを持っています。windowsのターミナルより、次のコマンドでwslのIPアドレスを確認できます。

wslのIPアドレス確認
wsl hostname -I

windows本体とは別のネットワークになっているため、windowsのポートとは通信が繋がっておらず、外の端末から接続できません。

そこでポートフォワードする方法が考えられます。Java版マイクラサーバーの場合はTCPのため、以下の設定でポートフォワードできます。

ポートフォワード
# 25565をポートフォワード
netsh interface portproxy add v4tov4 listenport=25565 listenaddress=0.0.0.0 connectport=25565 connectaddress=$((wsl hostname -I).Split()[0])
# 現在の設定を確認
netsh interface portproxy show all
# 25565を削除
netsh interface portproxy delete v4tov4 listenport=25565 listenaddress=0.0.0.0

しかし、統合版マイクラが利用する通信プロトコルUDPnetsh interface portproxyに対応していません。なので、ネットワークモードをMirroredに変更し、windows側とwslでポートを共有するように設定します。

wslのネットワークモードをMirroredに変更する

wslのネットワークモードをMirroredに変更し、windowsとポートを共有するように設定します。

windows側の検索でwslと入力しWSL Settingsを開きます。

wsl2-setting

ネットワークより、ネットワークモードをMirroredに変更します。ホストアドレスのループバックもオンにします。
mirrored

設定を変更すると%UserProfile%.wslconfigファイルが生成されます。

.wslconfig
[wsl2]
networkingMode=Mirrored
[experimental]
hostAddressLoopback=true

wslを再起動します。windows側ターミナルより次のコマンドを実行します。

wsl --shutdown

wslのUbuntuを起動して設定を確認します。

wslinfo --networking-mode
mirrored

mirroredに変更されました。

IPアドレスの設定を確認します。windows側ターミナルでipアドレスを確認します。

windows
ipconfig

# 抜粋
Windows IP 構成

イーサネット アダプター vEthernet (WSL (Hyper-V firewall)):

   IPv4 アドレス . . . . . . . . . . . .: 172.22.112.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0


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

   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.15
   サブネット マスク . . . . . . . . . .: 255.255.255.0

wslのUbuntuでもIPアドレスを確認します。

Ubuntu
ip addr show
# 抜粋
1: lo: 
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
       valid_lft forever preferred_lft forever
2: eth0: 
    inet 192.168.1.15/24 brd 192.168.1.255 scope global noprefixroute eth0

どちらも192.168.1.15という同じIPアドレスになりました。このアドレスで他の端末からアクセスできるようになります。

Hyper-V ファイアウォール

Hyper-Vファイアウォールが有効になっているため、統合版マイクラの通信を許可するように設定を変更します。windows側のターミナルから操作します。

wslのGUIDを確認します。が、共通の固定IDが使われているので確認しなくていいです。

# GUID確認
Get-NetFirewallHyperVVMCreator

VMCreatorId  : {40E0AC32-46A5-438A-A0B2-2B479E8F2E90}
FriendlyName : WSL

統合版マイクラサーバーが使用するポート19132,19133を許可します。

# ルール追加
New-NetFirewallHyperVRule -Name BedrockUbuntu -DisplayName "Minecraft Bedrock Ubuntu Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol UDP -LocalPorts 19132,19133

# ルールを確認
Get-NetFirewallHyperVRule -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'

削除するときは名前を指定します。

# ルール削除
Remove-NetFirewallHyperVRule -Name "BedrockUbuntu"

windows ファイアウォール

他の端末からの通信を許可するために、windows側のファイアウォールで統合版マイクラサーバーの通信を許可します。

windowsより「セキュリティが強化されたWindows Defender ファイアウォール」を開きます。
ファイアウォール

受信の規則を選択します。
受信の規則

新しい規則を作成します。
新しい規則

「ポート」を選択して次へ。
規則の種類

UDPを選択し、特定のローカルポートで19132,19133と入力します。
UDP

「接続を許可する」が選択されていることを確認して次へ。
接続を許可

そのまま次へ。
プロファイル

適当な名前を設定します。「完了」ボタンを押して終了します。
名前.png

なお、セキュリティソフトによって通信制限されることがあります。ご利用のセキュリティソフトの設定を確認してください。

接続確認

別の端末の統合版マイクラから接続します。サーバーを追加より、ipconfigで確認したIPアドレスを指定して接続します。

windows
ipconfig

# 抜粋
Windows IP 構成

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

   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.15

新しいサーバーを追加

wslを実行しているwindowsと同じ端末の統合版マイクラクライアントを起動、接続しようとすると繋がりません。クライアントをUWPループバックから外すと繋がります。windows側ターミナルで次のコマンドを実行します。

CheckNetIsolation.exe LoopbackExempt -a -p=S-1-15-2-1958404141-86561845-1752920682-3514627264-368642714-62675701-733520436

まとめ

wslのdockerに構築したMinecraft Bedrock ServerをLANに公開し、他のwindows端末のクライアントから接続できるようにする方法を説明しました。ネットワークの設定が非常に面倒です。

windowsなら、windows版のサーバーを利用するのがオススメです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?