MinecraftのJava版互換サーバ(Spigot, Paperなど。この記事で使ってるのはPaper)に Nintendo Switch(つまりBedrock版)から
接続する方法
解決が必要な問題点
解決方法
サーバ管理者側がすること
2022-07-16
2022-01-19
まとめ(2021-10-27)
やり方
---ログ
nishio: DNSぜんぜんわからん(Minecraftをしています(?))
nishio: マイクラの走ってるEC2にBIND9を入れて、セキュリティルールでDNSのポートを開け、自宅のルータのプライマリーDNSをEC2のアドレスにしたんだけどちゃんとできてるか確認しようとしてMacBookでdigしたらサーバは127.0.0.1だとか言われて頭を抱えてる
nishio: ネットワークの基礎知識が足りなすぎて何を確認して問題を切り分けたらいいのかすらわからない…
kaorun: もしかして: AnyConnectとか入ってる会社のマシン
nishio: あああ…なるほど…
kaorun: Macだとちと違うかもしれませんが、AnyConnect入ってるマシンだと、DNSがAnyConnect側にもってかれてローカルネットワークのDNSは参照してくれないみたいで、DNSなんもわからん状態に(いろんな意味で)。
nishio: 管理下にないマシンで試したら127.0.0.1になりませんでした!
nishio: うーむ、そもそもルータの設定でDHCPサーバ機能がオフだった…Switchは一体どこからDNSの情報を得ているのか…???
nishio: Switchの上でipconfigとかしたい()
nishio: なるほど、そもそもルータの設定をいじる必要はなかった?! m.youtube.com/watch?v=zalT_o…
nishio: サーバへの接続で失敗するようになったのでDNSで接続先をすり替えることには成功したっぽい。次はなぜ失敗するのかについて…動画を見ると一旦ワールドに接続した形でダイアログ出してるように見えるな
nishio: うーんわからない、一旦離れるか
nishio: 今見返して、さっき気づきかけたことにようやく気づいたのだけど「サーバ選択画面を出すサーバ」と「接続したいサーバ」の両方が同一マシン上でBedrockのポートをlistenできるわけがなく、「Already used」的なエラーが出てないのは、どちらかがエラーを握りつぶしてて気づけないだけなのでは。
nishio: 時系列としては「接続したいサーバX」が先に起動してるのでこれがポートを掴み、「サーバ選択画面を出すサーバY」がlistenに失敗してるけど例外を握りつぶしてるのでは。Yを終了するのは試したが、Xを起動せずにYを立ち上げるのは試してない。これを検証すべき。
nishio: >BDSは、TCPを使用するJava Editionとは違い、UDPを使用する。 AAAAAAHHHH minecraft.fandom.com/ja/wiki/Bedroc…
nishio: ワールド選択サーバには接続できた!! pic.twitter.com/kp5x6Y6Nbb
nishio: うむう pic.twitter.com/UlMQhjl0LM
nishio: お、1.17.40対応のバージョンがリリースされてる、入れ替えるだけか
nishio: できた!(サーバリソースパックは適用されてないが…) pic.twitter.com/4gis0PD9ok
nishio: そして残念ながら深刻な低FPS。5くらいかな。
nishio: サーバのロードアベレージとかには余裕があるので、Switchの性能か、パケット変換の遅延のせい、ちょっと簡単には解決できなさそうだなぁ