Minecraftの統合版(Bedrock Edition)で、CS機から任意の専用サーバー(個人サーバー)に接続する方法

2023-02-20 09:04:47

雑に書いてるので分かりにくいかと、すみません。

XboxやSwitchでの現行のマインクラフトは統合版(Bedrock Edition)である(かつてはXbox One版とSwitch版のそれぞれ専用版があった)。

なので、基本的な仕様はWindowsの統合版とほぼ同一なはずなのだが、CS機ならではのネットワークの方針なのか、外部サーバーに接続する際は「特集サーバー」という、事前にMSのほうでメニュー登録がされているサーバーにしか接続できない。

実はこの対処方法は有名で、YouTubeとか検索するとすぐに解決策が出てくる。

DNSサーバーとして特定のサーバーを指定することで回避できる。……が、そのサーバーはおそらく有志が提供しているものなので、セキュリティ的な面で使いたいと思いにくい部分がある。

というわけで、それらのサーバーが用いているソフトウェアの「Bedrock Connect 」を使用して自前のサーバーを建てることで対応する方法を紹介する。

なお、Xbox版の場合はLAN内にサーバーを建てるとLANサーバー扱いで接続して中継してくれるため、DNS変更すらしなくてよいので普通にメリットがある(PS5も多分これでいけるんじゃないかな?)。

Switch版は結局DNSの変更が必要だし、もう少し複雑になるので一般の人には難しいかも。一応後のほうでmacOSでの説明は書くけど覚書程度で、Windowsでは頑張ってくださいとしかいえない。

Linuxなら簡単なのでLinuxサブシステムだったかなんだったか使えば案外簡単かも?

さて本題。

まず、上記のリンクからBedrock Connectを入手してくる。

ただし、動作環境がJavaなので、Javaランタイムを別途入手 する必要がある。

(2023年2月28日追記)Java 8 は古いような気がするがまあパッチは当たっているので……かな。

ツールのシンプルな起動は以下のコマンドでよい。細かい使い方は英語で書かれているが、正直あんまりオプション弄る必要を感じない。

java -jar BedrockConnect-1.0-SNAPSHOT.jar nodb=true

PCでこうやって起動すると、XboxでのMinecraft起動時のワールド選択で、「フレンド」のところに「LANゲーム」として「join To Open Server List」が追加される。

選択すると「ServerList」が表示されるので、「Connect to a Server」を選んでIPなどを入力して、任意のサーバーに接続すればよい。

チェックを入れることで次回以降のためにサーバーの保存はできるが、サーバーに日本語名は使えない。ハイフンもダメなので素直に英数字でなんとかしよう。

ゲームしたいときは上のコマンドで都度起動の必要がある。パス移動も当然必要なので、こんな感じでコマンドを実行することになるだろう。スクリプト書いたほうが早いので後で書こうと思います。

cd ~/Documents/Minecraft_BedrockConnect
java -jar BedrockConnect-1.0-SNAPSHOT.jar nodb=true

で、問題のSwitchである。

SwitchはLANプレイの仕様が違っていて、LANサーバーとして見えない。

というわけで、自前でローカルなDNSサーバーを建てて、特集サーバーのホスト名から引かれるIPを自前のBedrock Connectサーバーに変更してやる形で中継するしかない。

Mac(やLinux)ならdnsmasqを使うのが一番楽だと思う。

brew install dnsmasqして、 設定ファイルの「 $(brew –prefix)/etc/dnsmasq.conf」の終わりに以下の行を追加する ホスト名は特集サーバーのホスト名なのでそのままにして、IPアドレスのところだけ自分のネットワークに応じて変更する。

DHCPで都度IPが変わると面倒くさいので、DHCP IDを使うかMACアドレス等で振られるIPを固定してやればよい。今どきのブロードバンドルーターなら設定で多分できるはず。

no-hosts
bogus-priv
address=/geo.hivebedrock.network/192.168.1.1
address=/hivebedrock.network/192.168.1.1
address=/mco.mineplex.com/192.168.1.1
address=/play.inpvp.net/192.168.1.1
address=/mco.lbsg.net/192.168.1.1
address=/mco.cubecraft.net/192.168.1.1
address=/play.galaxite.net/192.168.1.1
address=/play.pixelparadise.gg/192.168.1.1

no-hostsとbogus-privは環境によってはなくてもいいかも。

ちなみに、macOSだと特定のホストだけdnsmasqに問い合わせるみたいな設定が可能です。今回の件とはあまり関係ない。dnsmasqで検索すれば分かると思う。

んでもって、sudo brew services start dnsmasqしてサービス登録する。知らなかった。なにこれ便利。

なんだけど、最初sudoなしでやろうとしてハマった。権限不足でポートのリッスンに失敗するらしい。

ちなみに、macOSのファイアウォールをONで運用している場合、ちゃんと起動できたらファイアウォールで待ち受け許可するかどうか聞いてくれるので、ファイアウォールONにしてたほうが逆に分かりやすかった……。

ポートのリッスン状態は「sudo lsof -i -P | grep “LISTEN” 」で確認できる、ちょい時間かかるけど。

ゲームしたいときはこちらも動いてないといけない。(基本自動起動するはずだが、メッセージを見ると再起動時はユーザー権限で起動する的なことが書かれているのが不安……)

都度sudo brew services start dnsmasqしなきゃいけないかも。後日確認で。

で、もちろん、SwitchのDNSサーバーの変更も必要(インターネット接続のところで変更できるようになっている。優先を自前のサーバーにして、セカンダリはGoogle DNSの8.8.8.8とかにすればいいと思う)。

一応名前解決だけなので、他ゲーするときに自前サーバー経由する影響は少ないと思う。優先がダメなときはセカンダリになるわけだが、そのときの切り替わりはちょい問題かも。

正直Switchのほうの解決策はuglyだと思うけど、Xboxは実用的だよねと思っている。

とはいえWindowsがあれば必要ないかな……自宅の場合Windowsが動かせる一番よいマシンがSteam Deckで、動くには動くのだが、ファンが常に100%回るし画面は小さくてチャットするときtypoしまくりだし、見た目だけでも大きくしようとHDMIで外部ディスプレイにつなぐと音が本体から出てHDMIに回す方法が分からない(のでヘッドフォン端子からオーディオインターフェースに入れてた……)し……とか、わりと不便だったのでよさげなんですが。

gameminecraftxboxswitchbedrock

折口詠人

「書くこと」のリハビリが必要なのに、最近はゲームばかりしているとかしていないとか。

今どきのMinecraftではOptiFineは使わないらしい(?)

Steam Deckを使う上で知っておきたいmicro SDカードのあれこれ