Skip to content

Wiki ja jp

pjscruggs edited this page Nov 11, 2026 · 2 revisions

Raknetify2 · 日本語 (日本)

言語設定

マルチプレイ

MinecraftのクライアントとサーバーをRakNetで接続します。

ダウンロード · GitHub

Minecraft Raknetify2 クライアント / サーバー
Fabric mods/raknetify2-fabric-*.jar クライアント / サーバー
Forge mods/raknetify2-forge-*.jar クライアント / サーバー
NeoForge mods/raknetify2-neoforge-*.jar クライアント / サーバー
Spigot / Paper plugins/raknetify2-spigot-*.jar サーバー
Velocity plugins/raknetify2-velocity-*.jar Velocity
BungeeCord plugins/raknetify2-bungee-*.jar BungeeCord

サーバーを追加

  1. マルチプレイ

  2. サーバーを追加

  3. サーバーアドレス

    サーバーアドレス
    RakNet · UDP raknet;play.example.com:25565
    TCP play.example.com:25565
  4. 完了

  5. サーバーに接続

F3 · Raknetify2

F3
RakNet · UDP 有効 · MTU 1400
TCP 無効

Velocity / BungeeCord

  1. クライアント · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
  2. Velocity / BungeeCord → TCP → サーバー
ポート番号 · UDP Java
Fabric / Forge / NeoForge 1–65534 -Draknetify.fabric.portOverride=25570
Spigot / Paper ≥ 0.1.0-beta.1.431 1–65535 -Draknetify.spigot.portOverride=25570
Velocity 1–65534 -Draknetify.velocity.portOverride=25570
BungeeCord 1–65534 -Draknetify.bungee.portOverride=25570

タイムアウトしました

サーバーアドレス UDP
raknet;play.example.com:25580 play.example.com:25580 → NAT → 192.0.2.10:25570
サーバー · 192.0.2.10 25570/udp

config/raknetify2-compatibility.json

サーバー / Velocity / BungeeCord

JSON
① ② ③ {"mode":"ordered"}
① ∥ ② ∥ ③ {"mode":"multichannel"}

Simple Voice Chat

サーバー Raknetify2 · UDP 25565 Simple Voice Chat
Fabric / Forge / NeoForge config/raknetify2-voicechat.json · {"enabled":true} config/voicechat/voicechat-server.properties · port=-1
Spigot / Paper config/raknetify2-voicechat.json · {"enabled":true} plugins/voicechat/voicechat-server.properties · port=-1

Simple Voice Chat · Velocity / BungeeCord

PROXY protocol v2 · UDP

サーバーアドレス trustedProxies RakNet
192.0.2.10 · PROXY v2 / UDP ["192.0.2.10"] ✓
192.0.2.11 · PROXY v2 / UDP ["192.0.2.10"] ✗
クライアント → RakNet / UDP ["192.0.2.10"] ✗

config/raknetify2-proxy-protocol.json

{"trustedProxies":["192.0.2.10"]}

Minecraft ≥ 1.20.5 · /transfer

  1. サーバー A · Fabric / Forge / NeoForge · config/raknetify2-transfers.json

    {"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]}
  2. サーバー B · play.example.com · server.properties → accepts-transfers=true

  3. サーバー A · /transfer play.example.com 25565 Alex → クライアント (Alex) → RakNet · play.example.com:25570

PacketOrdering

Minecraft
ui 設定
entity スケルトン
world_interaction インベントリ
effects パーティクルの表示
chunk ブロック

PacketOrdering.java

バージョンが対応していません!

バグを報告する

ホーム

Raknetify2

Raknetify2 は、Minecraft のマルチプレイ通信に UDP 上で動作する RakNet を使います。通信を複数のチャンネルに分けるので、あるチャンネルのパケットが失われても、ほかのチャンネルではデータを送り続けられます。欠けたデータの再送やチャンクの転送を待っている間も、プレイヤーの操作に反応しやすくなります。

Raknetify2 は、ishland が開発した Raknetify から派生し、独自に保守されています。新しいバージョンの Minecraft に対応するとともに、通信処理、各プラットフォームへの対応、互換性テストの保守を続けています。

始めるには

  1. Minecraftおよびモッドの互換性を確認する。
  2. ダウンロードしてインストールしてください。
  3. raknet;play.example.comのようなアドレスで接続します。

サーバーガイド

Mod作者は、パケットオーダーインターフェースを使用して、カスタムペイロードとMinecraftトラフィック間の依存関係を宣言できます。

プロジェクトのリンク

Raknetify2はMITライセンスを使用し、元の著作権表示を保持しています。そのネットワーク実装はRaknetifyおよびnetty-raknetを基盤としています。

インストール

GitHub Releasesからリリースをダウンロードしてください。インストール前に、そのリリースのMinecraftのバージョンとローダーの要件を確認してください。

インストールする場所 ファイル フォルダー
Fabricクライアントまたはサーバー raknetify2-fabric-*.jar mods
ForgeクライアントまたはForgeサーバー raknetify2-forge-*.jar mods
NeoForgeクライアントまたはサーバー raknetify2-neoforge-*.jar mods
SpigotサーバーまたはPaperサーバー raknetify2-spigot-*.jar plugins
Velocityプロキシ raknetify2-velocity-*.jar plugins
BungeeCordプロキシ raknetify2-bungee-*.jar plugins

JARファイルを交換する前に、クライアントを閉じるかサーバーを停止してください。新しいファイルを追加する前に、同じインストールから元のRaknetify JARファイルおよび古いRaknetify2 JARファイルをすべて削除してください。

クライアントフォルダは、起動したMinecraftインスタンスまたはモッドパックに属します。サーバーおよびプロキシフォルダは、そのサーバーまたはプロキシのインストールに属します。ローダーがまだ作成していない場合は、適切なフォルダを作成してください。

直接サーバー接続

  1. ローダー用のクライアントモッドをインストールしてください。
  2. 互換性のあるサーバー上で、対応するサーバーモッド、またはSpigot/Paperプラグインをインストールしてください。
  3. UDP接続をサーバーに許可するには、ファイアウォールとルーターの設定に従ってください。
  4. クライアントとサーバーを再起動してください。
  5. raknet;play.example.com または raknet;play.example.com:25565 などのサーバーアドレスを追加してください。

raknet;プレフィックスがないアドレスは、TCPを使用します。

クライアントモッドを単独でインストールしても、遠隔サーバーにRakNetサポートは追加されません。サーバーオペレーターはRakNetエンドポイントを提供する必要があります。他のサーバーに参加するプレイヤーは、通常、インバウンドルーティングルールは不要です。

VelocityとBungeeCord

BungeeCordとVelocityを使用する場合は、対応するプロキシプラグインとクライアントモッドをインストールしてください。リスナー設定、バックエンドの転送、アクセス制限、プレイヤーが使用すべきアドレスについては、Velocity and BungeeCordを参照してください。

別のUDPリスナーポート

Minecraftサーバーを直接使用する場合は、以下のJava引数を設定してください。プロキシオペレーターは、VelocityおよびBungeeCordのリスナー設定を使用してください。

プラットフォーム Java引数 受け入れられるポート番号
Fabric、Forge、またはNeoForgeサーバー -Draknetify.fabric.portOverride=25570 1から65534まで
SpigotサーバーまたはPaperサーバー -Draknetify.spigot.portOverride=25570 1から65535まで

ForgeとNeoForgeは共有のリスナークードを使用しているため、両者のプロパティ名にはfabricが含まれています。25570を希望するUDPポートに置き換えてください。

Spigot / Paper ≥ 0.1.0-beta.1.431

-jarの前にJavaコマンドで引数を追加するか、ホストのJVM引数フィールドに入力してください。サーバーを再起動し、選択したリスナーポートでUDPを許可します。公開ポートが25570の場合は、raknet;play.example.com:25570で接続してください。ルーターがポートを変換する場合は、クライアントアドレスでその公開ポートを使用してください。TCPポートは既存の値のままです。

Spigot/Paperでは、UDPリスナーがMinecraftのTCPリスナーのローカルバインドアドレスを保持します。無効なオーバーライドや占有中のUDPポートにより、RakNetの起動が妨げられます。起動ログでバインドされたUDPアドレスとポートを確認してください。引数を削除し、再起動してTCPリスナーのポート番号に戻してください。

ルーターやUDPプロキシは、別の公開UDPポートを利用して、サーバーのJava引数を変更することなく既存のリスナーにデータを転送することができます。

開発用ビルド

GitHub Actionsで正常に実行されたmain実行ファイルを開き、そのArtifactsアーカイブをダウンロードします。GitHubではワークフローのアーティファイルをダウンロードするにはアカウントが必要です。上記のインストール表を使用して、アーカイブからJARファイルを選択してください。

VelocityとBungeeCord

VelocityとBungeeCordは、プレイヤーとMinecraftのバックエンドサーバーの間に位置しています。RakNet経由で接続する各クライアントのプロキシにRaknetify2をインストールしてください。

Raknetify2クライアント --UDP--> Velocity、または BungeeCord --TCP--> バックエンドサーバー

この接続パスには、バックエンドサーバーはRaknetify2を必要としません。サーバーは依然として、ネットワークで必要とされるモッド、プラグイン、および転送機能を必要とします。Raknetify2はMinecraftのバージョンを変換したり、プロキシのアカウント認証を変更したりしません。

プロキシプラグインをインストールする

  1. プロキシを通じた通常のTCP接続が、認証やバックエンドサーバー間の切り替えを含めて正常に機能することを確認してください。
  2. プロキシを停止し、GitHub Releasesから対応するプラグインをダウンロードしてください。
  3. raknetify2-velocity-*-all.jarまたはraknetify2-bungee-*-all.jarをプロキシのpluginsフォルダに置きます。そのフォルダから、以前のRaknetifyまたはRaknetify2のプラグインはすべて削除してください。
  4. インストールガイドを使用して、適切なRaknetify2クライアントモッドをインストールしてください。
  5. 以下のリスナー設定を確認し、プロキシを再起動して、そのログでRakNetリスナーのエラーを確認してください。
  6. プロキシへの公開UDPトラフィックを許可し、ファイアウォールとルーター設定で説明されているようにバックエンドのゲームプレイポートを制限する。

クライアントとプロキシでは、互換性のあるRaknetify2バージョンを使用してください。バージョンを混在させる前に、互換性を確認してください。

Velocity

velocity.tomlのbind設定は、VelocityのMinecraftリスニングアドレスとTCPポートを選択します。Raknetify2は通常、UDP用に同じポート番号を使用します。[servers]エントリはバックエンドサーバーを識別します。これらのエントリはバックエンドのTCPアドレスを指している必要があります。Velocityの設定リファレンスを参照してください。

別のUDPポートを使用する場合は、Velocityの起動コマンドで-jarの前に以下のJVM引数を追加してください:

-Draknetify.velocity.portOverride=25570

25570を自分で選択したポート番号に置き換えてください。これによりRakNetのUDPポート番号が変更されますが、VelocityのTCPポート番号とバックエンドアドレスはそのまま保持されます。引数を変更した後、Velocityを再起動してください。

Velocityおよびそのバックエンドでプレイヤー転送を設定します。バックエンドソフトウェアがサポートしている場合は、最新の転送機能を使用し、その転送内容を秘密に保ちます。Velocityのプレイヤー情報転送ガイドに記載されているバックエンド固有の指示に従います。転送機能と並行して、バックエンドのファイアウォール制限を適切に設定してください。

BungeeCord

BungeeCordのconfig.ymlにおいて、listenersエントリの下にあるhost値は、MinecraftのリスニングアドレスとTCPポートを識別する。Raknetify2は通常、そのポート番号でUDPを追加する。serversエントリにはバックエンドのTCPアドレスが記録されている。これらの設定については、BungeeCord設定ガイドで説明されている。

BungeeCordの起動コマンドにおいて、-jarの前に以下のJVM引数を追加してください。これにより、別のUDPポートを使用できます。

-Draknetify.bungee.portOverride=25570

このオーバーライドは、プロキシ処理全体に関わるものです。複数のMinecraftリスナーが含まれる設定の場合は、ファイアウォールルールを追加する前に、起動ログ内の実際のRakNetエンドポイントを確認してください。引数を変更した後は、BungeeCordを再起動してください。

プロキシでのアカウント認証を保持してください。Spigotバックエンドの場合、BungeeCordのIP転送ガイドでは、プロキシ上のip_forward: trueとバックエンド上のsettings.bungeecord: trueがペアになっています。単独の転送だけでは、誰かが直接バックエンドに接続することを防ぐことはできません。ファイアウォールの手順を使用してバックエンドへのアクセスを制限してください。

プレイヤーが使用するアドレスを選択します。

両方のプロキシオーバーライドは、1から65534までのポートを使用できます。無効な値は無視されるので、起動ログで設定されたUDPポートを確認してください。引数を削除し、再起動してMinecraftのリスナー用のポート番号に戻してください。

プレイヤーは、プロキシの公開ホスト名とUDPポートに接続します。例えば、raknet;play.example.com:25570のようになります。ルーターがポートを変換する場合、クライアントアドレスにはその公開UDPポートを使用します。raknet;プレフィックスがないアドレスは、引き続きプロキシのTCPリスナーを使用します。

Query、Geyser、その他のUDPサービスは別のUDPポートで実行してください。異なるTCPポートでは、UDPソケットの衝突が解決できません。

音声チャットおよび追加のUDP転送

Simple Voice Chatは、VelocityおよびBungeeCordで独自のプロキシプラグインとUDPポートを使用します。設定方法については、Voice Chatプロキシガイドを参照してください。

もし、Minecraftプロキシの前に別のUDPリレーが設置されており、PROXYプロトコルv2のヘッダーを送信している場合は、UDP転送とPROXYプロトコルを使用してRaknetify2を設定してください。VelocityまたはBungeeCordを単独でインストールする場合は、この設定は不要です。

接続を確認してください。

Raknetify2クライアントを使用して、ローカルネットワーク外からテストを行ってください。プロキシを通じて参加し、使用するバックエンドサーバーを切り替え、プレイヤーのアイデンティティと権限が正しいことを確認してください。

  • プロキシ経由でTCPが動作するが、RakNetがタイムアウトする場合は、プロキシのUDPリスナー、公開ポート、IPv4およびIPv6ルート、およびファイアウォールルールを確認してください。
  • プロキシがバックエンドに接続しようとした際に、両方のトランスポートが失敗した場合は、そのバックエンドのTCPアドレス、アクセスルール、およびプレイヤーフォワード設定を確認してください。
  • プロキシが占有中のUDPポートを報告した場合、Query、Geyser、音声プロキシ、またはそれに接続されている他のプロセスを確認してください。

報告書の作成には、同じ接続試行から得られたプロキシログとバックエンドログの両方を含めてください。含めるバージョン情報については、トラブルシューティングをご覧ください。

ファイアウォールおよびルーターの設定

このガイドはサーバー運営者向けです。Raknetify2では、RakNet接続を受け入れるサーバーまたはプロキシへのUDPルートが必要です。デフォルト設定では、MinecraftのTCPリスナーと同じポート番号が使用されます。

同じローカルネットワーク内のプレイヤーの場合、サーバーのローカルアドレスを使用し、ホストファイアウォールを通じてUDPを許可してください。インターネットトラフィックがルーターのIPv4 NATを通過する必要がある場合は、ルーターのポートフォワードが必要です。

宛先とポートを選択する

直接サーバー

Raknetify2を使用して、Minecraftサーバーを実行しているマシンに公開UDPトラフィックを送信します。宛先ポートはそのサーバーのRakNet UDPリスナーです。サーバーマシンのホストファイアウォールでそのポートを許可してください。通常のMinecraft接続のための既存のTCPルートも保持してください。

例えば、Raknetify2がUDP 25570でリスニングしている場合、公開UDPポートをサーバーのローカルアドレス25570ポートにフォワードします。サーバーのTCPポートは25565のままでも問題ありません。別のUDPポートを選択するには、direct-server listener settingsを参照してください。

VelocityまたはBungeeCord

Raknetify2プロキシプラグインを使用して、VelocityまたはBungeeCordを実行しているマシンに公開UDPトラフィックを送信します。プロキシのRakNet UDPリスナーを転送先として使用します。通常のMinecraft接続には、プロキシの既存の公開TCPルートを維持します。

プロキシはTCPを通じてバックエンドのMinecraftサーバーに接続します。Raknetify2をプロキシに追加する際には、プレイヤーに対してバックエンドのゲームプレイ用UDPポートを開く必要はありません。

接続 アクセスを許可するための設定
プロキシを利用するプレイヤー RakNetリスナーへの公開UDP接続、および既存の公開TCPリスナー
バックエンドサーバーへのプロキシ 目的のプロキシホストからのみアクセス可能な、MinecraftのバックエンドTCPポート
プレイヤーは直接バックエンドのゲームプレイポートに移動します。 ブロックされた状態を維持する。IPv6を通じても含む。

プロキシとバックエンドが、自分が制御する専用マシン上で直接実行される場合、バックエンドリスニングはプロキシがそのマシンに接続するように設定されたループバックアドレスを使用できます。マシン間では、ファイアウォールや隔離されたプライベートネットワークを使用して、バックエンドのTCPアクセスをプロキシホストに制限してください。コンテナや管理されたホストも、同様のネットワーク制限が必要です。VelocityのバックエンドセキュリティガイドおよびBungeeCordのファイアウォールガイドを参照してください。

プレイヤーの転送設定とファイアウォールの制限は相互に作用します。直接バックエンドにアクセスすることで、プロキシのログインチェックを回避できます。プラグインのインストール、転送設定、UDPポートの変更については、Velocity and BungeeCordを参照してください。

パブリックポート番号とローカルポート番号

ルーターがそれらの間で転送する際、パブリックポートとリスナーのポートは異なることがあります。

設定 使用するポート
クライアントサーバーアドレス パブリックUDPポート
ルーターの転送ルールの外部ポート パブリックUDPポート
ルーターの転送ルールの内部ポート RakNetリスナーのUDPポート
ホストのファイアウォールのローカルポート RakNetリスナーのUDPポート

IPv4ポートフォワード

IPv4ルーターを介したホスティングの場合:

  1. RakNet接続を受け入れるマシンのローカルIPv4アドレスを探す。DHCP予約または適切な静的アドレスを使用して、フローティングルールがそのマシンを引き続きターゲットにするようにする。
  2. プレイヤーが使用する公開ポートに対して、UDP転送ルールを追加してください。
  3. ルールの宛先を、そのマシンのローカルアドレスとRakNetリスナーのUDPポートに設定します。
  4. ホストファイアウォールのリスナーのポートで、インバウンドUDPを許可する。

例えば、UDPポート25565でリスニングするサーバーは、公開ポート25565、宛先アドレス192.168.1.100、および宛先ポート25565を使用するルールを使用できます。例のアドレスは、自分のサーバーの実際のローカルアドレスに置き換えてください。

Minecraftの通常の接続には、既存のTCPルールを維持します。TCP転送ルールだけではUDPは伝送できません。

フォワードも失敗した場合

トラフィックがルーターに到達する前に、他のルーターやISPがNATを実行しているかを確認してください。2台のルーターを使用している場合、転送は両方をカバーする必要があります。ISPがキャリアグレードのNATを使用している場合は、公開IPv4アドレスを提供できるか、またはインバウンドUDPをサポートするホスティングサービスやトンネルを利用できるかを尋ねてください。ルーターの転送ルールではISPのNATを設定することはできません。公開WANアドレスに関する要件については、TP-Linkのポート転送ガイドラインを参照してください。

IPv6ファイアウォールルール

選択したUDPポートを、ルーターのIPv6ファイアウォールおよびホストファイアウォールの両方を通じて許可する。RakNet接続を受け入れるマシンのIPv6アドレスをターゲットにする。

ホスト名のIPv6アドレスがそのマシンを指していることを確認してください。IPv6アドレスが変更された場合は、DNSレコードとアドレス固有のファイアウォールルールを更新してください。

IPv4とIPv6の両方のアドレスを公開するホスト名には、各アドバタイズされるアドレスに対して有効なルートが必要です。あるプレイヤーが接続できる一方で、別のプレイヤーが接続できない場合は、両方のルールを確認してください。

IPv4のフォワードがポート番号を変更する場合、ポートプレイヤーがIPv6リスナーにも到達するように確認してください。IPv4ポートの翻転は、IPv6ルートを設定するものではありません。

ホスティングプロバイダーとトンネル

プレイヤーに提供するパブリックエンドポイントでは、プロバイダーまたはトンネルがUDPをサポートしている必要があります。そのプロバイダーのポート割り当てやネットワークファイアウォールのルール、およびサーバー自身のファイアウォールも確認してください。

追加のUDPプロキシがPROXYプロトコルv2を使用してクライアントアドレスを転送する場合は、UDP転送とPROXYプロトコルに従い、受信するUDPリスナーのアクセスを信頼できるプロキシに限定してください。

接続を確認してください。

サーバーのローカルネットワーク外から、更新されたRaknetify2クライアントを使用して、raknet;play.example.com:25565のようなアドレスを使用して接続してください。このアドレスでは公開のUDPポートを使用してください。

ルートを確認するには、実際のRakNet接続を使用してください。応答がないUDPスキャンは、動作しているサービスが未知のプローブを無視する可能性があるため、結論の出ない結果を報告する可能性があります。NmapのUDPスキャンドキュメントではこの挙動について説明しています。

TCP接続が成功した場合、TCP経路のみが確認されます。RakNetがタイムアウトした場合は、トラブルシューティングガイドを使用して、リスナー、転送先、UDPポート、ファイアウォールルールを確認してください。

互換性

ダウンロードする特定のリリースに対する互換性を確認してください。開発ブランチには、まだリリースには含まれていないサポート機能が含まれている可能性があります。

MinecraftとJavaバージョン

MinecraftとJavaバージョン · English

Raknetify2が宣言するJava要件は、最低限の要件です。Minecraftやローダーでは、より新しいランタイムが必要になる場合があります。3つの要件すべてを満たすJavaバージョンを選択してください。

クライアント版とサーバー版

可能であれば、クライアントとサーバー、またはその接続を受け入れるプロキシの両方で同じRaknetify2リリースを使用してください。リリースを混用する前にリリースノートを確認してください。暗号化されたRakNet接続では、両端で認証済みの暗号化プロトコルをサポートする必要があります。そのプロトコルが導入される前のオリジナルのRaknetifyおよびRaknetify2では、更新されたピアへの暗号化接続を行うことができません。

Raknetify2は、Minecraftの既存のゲームプロトコルを搭載しています。異なるMinecraftバージョンを接続するには、互換性のあるプロトコル変換設定が必要です。

その他のモッド

その他のモッド · English

より大きなモッドパックで障害が発生した場合は、トラブルシューティングガイドに従ってください。報告書には、すべてのモッドのバージョンを記載してください。

オーダードモード

オーダードモード

通常、Raknetify2では、あるチャンネルが欠落したデータを待っている間も、独立したパケットチャンネルは継続して機能します。順序付けモードでは、すべてのMinecraftパケットを一つのチャンネルに集約するため、欠落したパケットが再送信されるまで、その方向の後続のパケットが待機状態になります。これにより、一部のアンチチートソフトウェアが期待する順序が保たれますが、その間に無関係なゲームトラフィックが進行しないというRaknetify2の機能は失われます。

順序付けモードの有効化

  1. RakNet接続を受け入れるサーバーまたはプロキシ、および各RakNetクライアント上で、順序付けモードをサポートするRaknetify2のビルドをインストールしてください。

  2. そのサーバーまたはプロキシの作業ディレクトリの下に、config/raknetify2-compatibility.jsonを作成してください。configディレクトリが存在しない場合は、先に作成してください。

  3. 以下の内容を追加してください:

    {"mode": "ordered"}
  4. サーバーまたはプロキシを再起動してください。

クライアントは自動的にサーバーの設定に従います。プレイヤーは設定ファイルを作成したり、RakNetサーバーのアドレスを変更する必要はありません。

Minecraftのすべてのパケットは、バンドル区切り文字やワールド遷移を含め、各方向に一つの信頼性の高い順序付けられたチャンネルを使用します。

プロキシ設定

プレイヤーがVelocityまたはBungeeCordを通じて接続する場合、アンチチートがバックエンドサーバー上で実行されている場合でも、そのプロキシでオーダーメードモードを設定してください。

このポリシーはバックエンドスイッチ全体に適用されます。オーダーメードモードでは、プロキシはバックエンドのキープライズリクエストをローカルで応答するのではなく、実際のクライアントに転送します。

設定の確認

最初のRakNet接続時、コンソールには以下のように報告されます:

Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)

成功した互換性の交渉では、ordered compatibility negotiatedというメッセージが記録され、その後に相手側のアドレスが表示されます。

アンチチートチェックを常に有効にして、自分の設定を正確に確認してください。

古いクライアント

順序保証モードに対応していない RakNet クライアントは、このモードを必須とするサーバーに接続できません。クライアント側の Raknetify2 を更新するか、raknet; を付けずにサーバーまたはプロキシの通常の TCP アドレスとポートで接続してください。

マルチチャンネルモードに戻る

ファイルを次のように変更してください:

{"mode": "multichannel"}

その後、サーバーまたはプロキシを再起動します。ファイルを削除することで、再起動後にマルチチャンネルモードが復活します。

設定に関する問題

ファイルには、modeという名前の設定が1つだけ含まれていなければならず、その値は"ordered"または"multichannel"のいずれかでなければなりません。値は大文字と小文字を区別します。

無効または読み取り不可能な設定は、RakNet接続を拒否します。ファイルを修正し、プロセスを再起動してください。

コンソールが依然としてmultichannelと表示されている場合は、ファイルがRakNet接続を受け入れるサーバーまたはプロキシの作業ディレクトリ内にあることを確認し、そのプロセスを再起動してください。

自動転送

Fabric、Forge、NeoForgeサーバーでは、対応するクライアントを設定された宛先に転送する際にRakNetを選択できます。これは、Java Edition 1.20.5で導入されたMinecraftのネイティブな転送サポートを利用しています。Raknetify2のリリースが、両端のMinecraftバージョンおよびローダーをサポートしているかを確認してください。

送信サーバーとクライアントにRaknetify2をインストールしてください。宛先側には互換性のあるRakNetリスナーが用意されており、Minecraftの送信を受け入れる必要があります。

この設定は、上記の3つのモッドローダーによって送信される転送データに適用されます。Spigot/Paper、Velocity、BungeeCordプラグインは、この転送ファイルを読みません。

送信サーバーの設定を行う

送信サーバーのディレクトリに、config/raknetify2-transfers.jsonを作成してください。

{
  "destinations": [
    {
      "host": "play.example.com",
      "tcpPort": 25565,
      "udpPort": 25570
    }
  ]
}

例のホスト名とポート番号を、自分の宛先の値に置き換えた後、送信サーバーを再起動してください。他の宛先も同じ配列に追加してください。

フィールド 意味
host トランスポートプレフィックスやポートを除いた、ホスト名またはIPアドレス
tcpPort 元の転送要求における宛先ポート
udpPort 公開されているRakNetポートに転送されたクライアントは、連絡を取る必要があります。

TCPおよびUDPのポート番号は同じであることがあります。ルーターがUDPポートを変換する場合は、このファイルに記載されている公開ポートを使用してください。ポート番号はJSON数値として記述します。

送金先の通常のホスト名とTCPポートに転送を送信します。Raknetify2は、クライアントが自動転送のサポートを提供しているかどうかを確認します。対応するクライアントと一致する送信先の場合は、設定されたUDPポートを選択します。他のクライアントや一致しない送信先の場合は、元の転送アドレスを維持します。

マッチングでは、転送要求から得られたホスト名とTCPポートを使用します。ホスト名の大文字化、DNSドットの最後、および同等のIPv6表記は正規化されます。DNS検索はマッチングには含まれないため、同じアドレスに解決する2つの異なるホスト名には別々のエントリが必要です。ワイルドカードエントリはサポートされていません。

目的地の設定

Minecraftのserver.propertiesを使用する宛先の場合、accepts-transfers=trueを設定し、再起動してください。宛先プロキシは独自の転送設定を持つことがあります。Minecraftは、通常の直接参加が正常に機能する場合でも、受信する転送を拒否することがあります。

宛先のRakNetリスナー、公開UDP転送、およびホストファイアウォールは、すでに設定されている必要があります。送信サーバーの転送ファイルが、クライアントに送信されるアドレスを選択します。

ホスト名が両方のアドレスタイプを公開する場合は、宛先のIPv4およびIPv6ルートを両方確認してください。自動転送動作を調査する前に、宛先への通常の直接RakNet接続をテストしてください。

どのようなログインやアクセス制限も維持してください。この設定はプレイヤーへのアクセス権を付与したり、サーバー認証を変更したりするものではありません。

設定エラーと無効化

フィールドが欠落している、不明なフィールド、有効でないポート、重複する宛先などが、初期化時の設定エラーを引き起こします。エラーを特定し、JSONを修正した後、サーバーを再起動してください。

自動選択を無効にするには、設定ファイルを削除するか、{"destinations": []}を使用し、送信サーバーを再起動してください。この場合、転送リクエストは元のアドレスを保持します。

UDP転送とPROXYプロトコル

UDPプロキシは、PROXYプロトコルv2を使用してRakNetトラフィックを転送し、元のクライアントアドレスを保持できます。これは、上流のUDPプロキシがそのヘッダーをリスナーに送信する場合に有効です。通常のルーターのポートフォワードではこの機能は必要ありません。

サーバーまたはMinecraftプロキシが転送されたUDPトラフィックを受信する場合、config/raknetify2-proxy-protocol.jsonを作成してください。

{
  "trustedProxies": ["192.0.2.10"]
}

例の部分は、UDPプロキシの実際のソースIPアドレス、または自分が管理するCIDR範囲に置き換えてください。アドレスは、中間のNAT処理を経て受信側のリスナーが見るアドレスと一致している必要があります。IPv4およびIPv6のリテラル値は受け付けます。DNSホスト名は受け付けません。受信サーバーまたはプロキシを再起動してください。

転送元のプロキシが UDP で PROXY プロトコル v2 のヘッダーを送るように設定してください。Raknetify2 が転送されたクライアントアドレスを受け入れるのは、一覧にある送信元からだけです。この設定が有効な間、ヘッダーがない直接の RakNet 接続は拒否されます。TCP の待ち受け設定は変わりません。

信頼とアクセス

一覧に載せた各プロキシは、クライアントのアドレスを申告できます。バックエンドのファイアウォールで UDP ポートへのアクセスを制限し、意図したプロキシだけが接続できるようにしてください。信頼するアドレスの範囲は、運用に必要な最小限に絞ってください。

ファイルにはtrustedProxiesのみが含まれており、少なくとも1つのエントリがある必要があります。空の配列はエラーです。有効でないファイルでは、RakNetリスナーを起動できません。

直接UDP接続に戻るには、該当ファイルを削除し、リスナーを再起動してください。同時に、新しいルートに対するアップストリーム転送の動作とファイアウォールルールも更新してください。

この機能を有効にした後で接続が失敗した場合は、バックエンドでのプロキシの実際のソースアドレス、設定された信頼範囲、およびプロキシがUDP PROXYプロトコルv2ヘッダーを送信しているかどうを確認してください。

Minecraftのプロキシ設定およびバックエンド構成については、VelocityとBungeeCordを参照してください。

Simple Voice Chat

Raknetify2は、Fabric、Forge、NeoForge、Spigot、Paper上で、そのサーバーのUDPリスナーをSimple Voice Chatと共有することができます。

サーバー上および音声チャットを希望する各クライアント上にSimple Voice Chatをインストールしてください。その他の設定については、サーバー設定ガイドに従ってください。

Raknetify2のファイルについては、サーバーのトップレベルのconfigディレクトリを使用します。Spigot/Paperの場合も同様です。Simple Voice Chat自身のファイルは、プラットフォーム固有の場所に残ります。

ゲームプレイのポートを共有する

  1. サーバーディレクトリ内にconfig/raknetify2-voicechat.jsonを以下の内容で作成してください。

    {"enabled": true}
  2. Simple Voice Chatのサーバー設定でport=-1を設定してください。MODされたサーバーでは、これはconfig/voicechat/voicechat-server.propertiesにあります。Spigot/Paperでは、plugins/voicechat/voicechat-server.propertiesになります。

  3. RakNetリスナーが1つ存在する場合は、bind_addressを空にします。サーバーがそのUDPポートで複数のリスナーを持っている場合は、共有したいリスナーのローカルアドレスを設定してください。

  4. サーバーを再起動し、/voicechat test <PLAYERNAME>を実行して接続されているプレイヤーを確認してください。

RakNet の待ち受けポートが Minecraft のポートと異なる場合、音声の port に -1 を使わず、ローカル UDP ポート番号を明示してください。たとえば RakNet がローカル UDP ポート 25570 で待ち受ける場合は、port=25570 と設定します。

クライアントが異なる公開アドレスまたはポートを必要とする場合は、voice_hostを設定してください。ルーターが公開UDP 25580をローカルUDP 25570に転送する場合は、port=25570とvoice_host=play.example.com:25580を使用してください。voice_hostには公開アドレスを指定します。bind_address設定はローカルリスナーを選択します。

Raknetify2は、Simple Voice ChatのAPIを通じて共有UDPソケットを提供します。Simple Voice Chatは音声認証と暗号化を処理します。プレイヤーはTCPまたはRakNetゲーム接続で音声チャットを利用できます。

その他のUDPサービスおよびプロキシ

QueryとGeyserは別のUDPポートで使用してください。共有ソケットの統合はSimple Voice Chatのみをサポートします。

この統合では、VelocityやBungeeCordで音声プロキシのソケットを共有していません。Simple Voice Chatのプロキシ設定ガイドに従い、音声プロキシに独自のUDPポートを割り当ててください。公式の音声プロキシプラグインを使用する場合は、プロキシの音声設定で公開されたvoice_host設定を指定してください。そのプラグインは、バックエンドサーバーのvoice_host設定を無視します。

一般的なUDPトンネルの場合、voice_hostには、このサーバーに転送するパブリックホスト名とUDPポートを設定します。

共有機能を無効にするか、ソケットの衝突を解消する

ログにNo RakNet listener matches the voice bind address and portと表示された場合は、RakNetが正常に起動しており、音声ポートとバインドアドレスがローカルリスナーと一致していることを確認してください。

Multiple RakNet listeners match the voice bind address と表示されたら、該当するローカルアドレスを一つ選び、bind_address に指定して再起動してください。

Simple Voice ChatプラグインのみがそのUDPソケットを提供できます。起動時に他のプラグインがすでにソケットを提供していると報告された場合は、どのソケットを使用するかを選択してください。

Raknetify2の統合を無効にするには、その音声設定で{"enabled": false}を設定するか、そのファイルを削除してください。Simple Voice Chatには別のUDPポートを割り当て、ファイアウォールや転送ルールを更新し、サーバーを再起動してください。

トラブルシューティング

TCPは動作しますが、RakNetはタイムアウトします。

これらを順番に確認してください:

  1. クライアントは、そのローダーおよびMinecraftバージョンに適したRaknetify2モッドを正しくインストールしています。
  2. 接続を受け入れるサーバーまたはプロキシには、Raknetify2がインストールされており、リスナーエラーなく起動しています。
  3. アドレスはraknet;で始まり、公開のUDPポートを使用します。
  4. ホスティングプロバイダー、ルーター、ホストファイアウォールは、そのポートでUDPを許可しています。
  5. ホスト名のIPv4およびIPv6アドレスが指定されたホストに接続できており、ファイアウォールのルールも正常に機能しています。

TCP接続が成功した場合、TCPルートのみが確認されます。UDPの転送とIPv6アクセスを確認するには、ファイアウォールおよびルーターの設定に従ってください。PROXYプロトコルが有効な場合、クライアントは設定された信頼できるプロキシを通じてリスナーに到達しなければなりません。

アドレスが既に使用されています。

UDPポートを使用している他のプロセスがないか確認してください。Geyserやその他のUDPサービスはそれぞれ独自のポートを必要とします。Simple Voice Chatは共有ポート統合を使用できます。

別のローカル UDP ポートを使うには、サーバーに直接接続する場合の設定または Velocity と BungeeCord の設定を参照してください。Spigot/Paper では対応バージョンも確認してください。ルーターの公開ポートだけを変更しても、ローカルのソケットの競合は解消されません。

接続は可能ですが、データの転送は失敗します。

目的のマシンに、raknet;アドレスを使って直接接続します。それが成功しない場合は、まず目的のマシンのリスナーやネットワークルートを修正してください。

直接接続が可能であれば、宛先が受信トランスファーを受け入れるかどうかを確認してください。server.propertiesを使用するMinecraftサーバーでは、accepts-transfers=trueが必要です。直接参加ではこの設定はテストされません。

送信サーバー上のconfig/raknetify2-transfers.jsonファイルと、転送ホスト名およびTCPポートを比較します。このファイルが再起動後に読み込まれていること、およびクライアントが自動RakNet転送をサポートしていることを確認してください。自動転送を参照してください。

暗号化またはプロトコルエラー

接続の両端のRaknetify2のバージョンを確認してください。リリースが暗号化プロトコルを変更する場合は、クライアントとサーバー、またはプロキシを一緒に更新してください。調査中はサーバーの認証設定を保持してください。

モッド固有のエラー

インベントリを開いたり、リソースパックを受け取ったり、ワールドを変更したり、エンティティを生成したりするような、障害を引き起こすアクションを記録してください。実際に可能であれば、別のテストインストールを使用して、TCPとRakNetで同じアクションを比較してください。

一部のカスタムペイロードは、ベタ版パケットの順序に依存しています。モッド制作者は、パケットオーダーインターフェースを通じてこれらの依存関係を宣言できます。

バグを報告する

Raknetify2 問題追跡システムで問題を開き、以下の情報を記載してください:

  • Minecraft、Java、ローダー、そしてRaknetify2のバージョンを両端で使用する。
  • サーバーおよびプロキシソフトウェアのバージョン、UDP転送プロキシを含む。
  • 他のインストールされたモッドとそのバージョン。
  • 問題を再現するための手順と、何が起こるか予想されること。
  • 同じ手順がTCPを介しても有効かどうか。
  • 同じ試みにおける、クライアント、サーバー、プロキシのログの抜粋です。

ログをアップロードする前に、アクセストークン、パスワード、その他のプライベート情報を削除してください。問題を診断するために必要な例外メッセージやスタックトレースは保持してください。

モッド統合

Raknetify2では、モッドがどのMinecraftトラフィックを自分のカスタムペイロードで順序通りに保つべきかを宣言できます。これは、ペイロード処理に以前のパケットで確立されたエンティティ、チャンク、インベントリ、またはその他の状態が必要な場合に使用します。

グループの順序付け

グループ 関連トラフィック
ui ワールド非依存のメニューとインタラクション
entity エンティティの生成、削除、および移動
world_interaction インベントリおよびその他の世界依存の相互作用
effects 音とパーティクル
chunk 地形、ブロック、およびライティングの更新

すべてのグループは、自身のチャンネル内で信頼性の高い順序の配達を維持します。異なるグループに属するパケットは、異なる相対的な順序で到着することがあります。ペイロードの依存関係に合わせて、適切なグループを選択してください。

オプションのFabric連携

modのfabric.mod.json内のraknetify:packet_channelsエントリポイントの下にプロバイダを追加してください。このプロバイダはJDK型を使用してConsumer<BiConsumer<String, String>>を実装しています。このプロバイダは、カスタムのペイロード識別子とオーダングループを受け取るレジスタラーを受け取ります。

このエントリを既存のメタデータに統合し、クラス名をプロバイダーの完全修飾名で置き換えてください。

{
  "entrypoints": {
    "raknetify:packet_channels": [
      "com.example.mod.OrderingProvider"
    ]
  }
}

fabric.mod.jsonの残りの部分、既存のエントリポイントを含めてください。これはメタデータファイルの一部です。

例えば、エンティティの移動拡張子は、entityグループに対してexample:entity_pathを登録することができます。PacketOrdering APIドキュメントには、このプロバイダーの実装が記載されています。

Fabricは、Raknetify2が存在しない場合、このエントリポイントを呼び出しません。プロバイダーは、他のモッドが初期化を完了していないことを考慮せずに、初期化時に識別子とグループを宣言する必要があります。

登録行動

ForgeおよびNeoForgeのモッド、またはサーバーやプロキシのプラグインは、Raknetify2が利用可能な際に初期化時にPacketOrdering.register(identifier, group)を呼び出すことができます。このクラスはcom.ishland.raknetify.api.PacketOrderingです。プレイヤー接続を受け入れる前に登録し、依存ライブラリが存在しない場合でもRaknetify2のクラスを読み込むことを避けることができます。

宣言は新しい接続に適用されます。既存の接続は、設定時の規則を維持します。同一の宣言を繰り返すことは許可されます。同一の識別子に対して矛盾するグループは拒否されます。

ペイロード識別子は、有効なカスタム名前空間を使用しなければなりません。minecraft名前空間は予約済みです。エンドポイント全体での最大宣言数は、組み込みのルールや他のモッドからの登録を含めて128個です。識別子は、APIの名前空間化された識別子構文を使用して、最大255文字のASCII文字を含むことができます。

更新されたRakNetピアは、接続設定時に宣言を交換します。サーバーやプロキシは、そのペイロードに対するローカルルールがない場合に、ピアの宣言を使用できます。ローカルルールが優先され、ピアの宣言はその接続に限定されます。

UDPプロキシ

UDPリレーおよび転送されたクライアントアドレスについては、UDP転送とPROXYプロトコルを参照してください。

Minecraftのプロキシ設定については、Velocity and BungeeCordを参照してください。

English (US)

Clone this wiki locally