BDSでは, 1.26.50以降からNetherNetがデフォルトとなっていますが, 接続不可能な問題に悩まされるサーバー主も多いはずです。
従って, それを解決する手引きを案内します。
BDSにあるserver.propertiesには,
transport=nethernet (ただし, 省略可能)server-udp-ports=[ip:]external[-external]:internal[-internal]server-udp-ports=203.0.113.1:49132-49151:19132-19151 (IPv4の場合)server-udp-ports=[2001:db8::1]:49132-49151:19132-19151 (IPv6の場合)server-port=19132transportは通信方式を指定します。1.26.51時点でnethernetとraknetが選択可能です。server-udp-portsは, プレイヤーから見た時のサーバーIPとUDPポート, およびオリジンサーバー(= NAT/転送の背後にある実際の BDS ホスト)がbindするポートを指定します。
1.26.51時点で, UDPポートおよびbindするポートのレンジの長さは一致しており, かつログインするユーザー数以上のポートが必要です。
例: 20人ログインするサーバーの場合, server-udp-ports=203.0.113.1:49132-49151:19132-19151のように20ポート分の解放が必須です。
server-port=19132は, 後述するWebRTCシグナリングを行うTCPポートを選択します。
以下,server-udp-ports=203.0.113.1:49132-49151:19132-19151server-port=19132
として説明します。
オリジンサーバーが開放する必要があるポートは以下の通りです:
19132/tcp # server-portで指定したポート
19132-19151/udp # server-udp-portsのinternalで指定したポート
そして, 外向きに開放する必要があるポートは以下の通りです:
19132/tcp --> origin:19132/tcp
49132-49151/udp --> origin:19132-19151/udp
UDPポートに注意してください。
クライアントは, 接続先のポートを49132-49151のどれか1つを19132/tcpへの問い合わせで広告されるため, 外向きの開放すべきUDPポートはserver-udp-portsによって決まります。
また, 内部のルーティング設定は, 49132 --> 19132, 49133 --> 19133, ...のように1対1に対応するようにする必要があります。
なお, 19132/tcpのポートは, WebRTCのオファー交換を行うためのシグナリングポートです。
ここにはHTTPベースの通信が入ってくるので, 必要に応じてNginxなどでプロキシを行ったり, HTTPS化を行ってください。
Debian/UbuntuでNetherNet対応のMinecraft Bedrockサーバーを構築するが参考になるかもしれません。
BDSを起動したら, 既に接続可能な状態になっているはずです。
任意の外部回線(例えば4G/5G回線)などで外部ネットワークから,
アドレス: 203.0.113.1 (サーバーのグローバルIP)
ポート: 19132
とすることで接続可能になります。
ポートを変更する場合は, これは#1の外向きTCPポートを変更することで可能です。
HTTPS化やバーチャルホストをするためにNginxを用いる場合は, Debian/UbuntuでNetherNet対応のMinecraft Bedrockサーバーを構築するを参考にしてください。
接続に失敗する場合, 次の手順で確認してください。
このサイトのツールを用いることで, TCP接続が可能かどうか確認できます。2分間のキャッシュに注意してください。
ポート設定を再度見直してください。特に, UDPポートの1対1対応は注意が必要です。
インターネットプロバイダーの問題の可能性があり, この記事では対象外です。
ツール解説記事APIプライバシー規約 · iceFetch は Mojang および Microsoft とは無関係です。