Minecraft Bedrock サーバーを運用していて, プレイヤーは参加できるのにステータスチェッカーがオフラインと表示する場合, そのチェッカーは別のプロトコルで通信を試みている可能性が高いです。
近年の Bedrock サーバーは NetherNet で動作していることがあり, ほとんどのステータスサイトは旧来の RakNet トランスポートしか ping できません。
この記事では, NetherNet サーバーの本当のステータスとサーバーが提示する接続情報を簡単に確認する方法を解説します。
手短に言えば, iceFetchにサーバーのホストとポートを入力するだけです。
実際のクライアントと同じシグナリングのハンドシェイクを行い, サーバーのステータスと ICE candidate を表示します。
スクリプトや監視向けの JSON API もあります。
従来の Bedrock ステータス/ping ツールは, RakNet の「unconnected ping」を UDP で送り, その pong を読みます。
旧来のトランスポートで動くサーバーなら, これでステータスが確認可能でした。
しかし近年のサーバーは transport=nethernet と設定されている可能性があり, NetherNet は RakNet ping と互換性がありません。
読むべき UDP の pong が存在しないためです。
サーバーは正常に稼働しているのに, チェッカーが対応していないプロトコルで問い合わせるため, オフラインやタイムアウトと表示されます。
NetherNet は WebRTC ベースのトランスポートです。
接続は, サーバーが TCP ポート上に開く小さな HTTP シグナリングエンドポイントを介して, SDP offer/answer と ICE candidate でネゴシエーションされます。
NetherNet サーバーのステータスを見るには, RakNet ping を送るのではなく, そのエンドポイントと通信する必要があります。
両者の違いは RakNet と NetherNet で詳しく解説しています。
iceFetchを開き, サーバーのホストとポート(通常は 19132)を入力して実行してください。得られる情報は次の通りです:
/v1/join メタデータ(名前, プロトコル/バージョン, 現在と最大の人数)。host, srflx, relay)。サーバーに参加することはなく, シグナリングの段階だけを完了します。
繰り返し実行すると, BDSの割り当て可能UDPポートを埋め尽くす可能性があるため, ICE candidateの取得は最小限に抑えてください。
スクリプトや稼働監視には API を使ってください。
# ステータスのみ
curl "https://icefetch.tools.kt04.com/api/info?host=play.example.net&port=19132"
# ステータス + ICE candidate
curl -X POST https://icefetch.tools.kt04.com/api/offer \
-H 'content-type: application/json' \
-d '{"host":"play.example.net","port":19132}'
/api/info は { ok, status, tls, info } を, /api/offer は candidate と生の SDP answer を返します。
リクエスト/レスポンスの型とレート制限は API ドキュメント に記載しています。
host / srflx / relay): これらはサーバーがクライアントに提示する実際の UDP エンドポイントです。srflx は NAT 反射の公開アドレス, relay は TURN の中継です。自分のサーバーは NetherNet と RakNet のどちら?server.properties を確認してください。transport=nethernet(またはそれを前段に置くネットワーク)なら NetherNet です。
既定の RakNet なら従来の ping ツールが使え, iceFetch のシグナリング経路は該当しません。
なぜステータスサイトで自分のサーバーがオフラインと出るの? ほとんどのサイトは RakNet しか ping しません。NetherNet サーバーは RakNet ping に応答しないため, 稼働中でもオフラインと表示されます。
参加せずに確認できる? はい。ステータスと candidate の取得はシグナリングのみのハンドシェイクです。ゲームセッションは開きません。
自動で監視できる? はい。GET /api/info を定期的にポーリングしてください。レート制限(IP ごと 1 分 20 リクエスト + 月間クォータ。無料 API キーで上限が上がります)に注意してください。
ツール解説記事APIプライバシー規約 · iceFetch は Mojang および Microsoft とは無関係です。