Repository navigation
Wiki rpr
- Главная
- Установка
- Velocity и BungeeCord
- Настройка файрвола и роутера
- Совмѣстимость
- Организованный режимъ
- Автоматическіе переводы
- Пересылка данныхъ по UDP и протоколъ PROXY
- Simple Voice Chat
- Устраненіе неполадокъ
- Интеграція модовъ
- Прокси-салоны UDP
Сѣтевыя соединенія чрезъ RakNet для кліентовъ и салоновъ Minecraft.
| 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 |
-
Игра въ компаніи
-
Добавить
-
Адресъ салона
Адресъ салона RakNet · UDP raknet;play.example.com:25565TCP play.example.com:25565 -
Готово
-
Присоединиться
| F3 | |
|---|---|
| RakNet · UDP | Дѣйствуетъ · MTU 1400 |
| TCP | Бездѣйствуетъ |
- Кліентъ · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
- 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 |
Салонъ / Velocity / BungeeCord
| JSON | |
|---|---|
| ① ② ③ | {"mode":"ordered"} |
| ① ∥ ② ∥ ③ | {"mode":"multichannel"} |
| Салонъ | 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
| Адресъ салона | 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"]}-
Салонъ A · Fabric / Forge / NeoForge ·
config/raknetify2-transfers.json{"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]} -
Салонъ B ·
play.example.com·server.properties→accepts-transfers=true -
Салонъ A ·
/transfer play.example.com 25565 Alex→ Кліентъ (Alex) → RakNet ·play.example.com:25570
| Minecraft | |
|---|---|
ui |
Настройки |
entity |
Скелетъ |
world_interaction |
Инвентарь |
effects |
Частицы |
chunk |
Блоки |
- Fabric · Minecraft / Java · English
- Forge / NeoForge / Spigot / Paper · GitHub Releases
Для сѣтевой игры въ Minecraft Raknetify2 используетъ RakNet поверхъ UDP. Данные идутъ по нѣсколькимъ каналамъ, въ каждомъ изъ которыхъ сохраняется свой порядокъ доставки. Если на одномъ каналѣ потерялся пакетъ, остальные могутъ продолжать передачу. Благодаря этому игра можетъ быстрѣе реагировать на дѣйствія игрока, пока идётъ повторная передача потерянныхъ данныхъ или загрузка чанковъ.
Raknetify2 – независимо развиваемый форкъ Raknetify, авторомъ котораго является ishland. ВЪ форке добавлена поддержка новыхъ версій Minecraft. ВЪ нѣмъ также поддерживаются транспортный кодъ, интеграціи съ платформами и тесты совмѣстимости.
- Провѣрьте совмѣстимость съ Minecraft и модами.
- Выберите файлъ для скачиванія и установите его.
- Соединитесь съ адресомъ, такимъ какъ
raknet;play.example.com.
- Velocity и BungeeCord
- Настройка файрвола и роутера
- Автоматическіе передачи
- Пересылка UDP и протоколъ PROXY
- Общій портъ UDP для игры и Simple Voice Chat
- Устраненіе проблемъ и сообщеніе о багахъ
Авторы модовъ могутъ использовать интерфейсъ порядка пакетовъ для объявленія зависимостей между пользовательскими полезными данными и трафикомъ Minecraft.
Raknetify2 используетъ лицензію MIT и сохраняетъ оригинальные увѣдомленія объ авторскихъ правахъ. Его реализація въ сѣтевомъ строительствѣ основана на Raknetify и netty-raknet.
Скачайте релизъ съ GitHub Releases. Провѣрьте версію Minecraft и требованія къ загрузчикамъ для даннаго релиза передъ установкой.
| ВЪ какомъ мѣстѣ вы планируете установку | Файлъ | Файловая папка |
|---|---|---|
| Кліентъ или салонъ Fabric | raknetify2-fabric-*.jar |
mods |
| Forge кліентъ или салонъ | raknetify2-forge-*.jar |
mods |
| Кліентъ или салонъ NeoForge | raknetify2-neoforge-*.jar |
mods |
| Салонъ Spigot или Paper | raknetify2-spigot-*.jar |
plugins |
| Velocity proxy | raknetify2-velocity-*.jar |
plugins |
| Прокси BungeeCord | raknetify2-bungee-*.jar |
plugins |
Закройте кліентъ или остановите салонъ передъ замѣной его JAR-файла. Удалите оригинальный JAR-файлъ Raknetify и любые болѣе старые JAR-файлы Raknetify2 изъ той же установки передъ добавленіемъ новаго файла.
Папки кліента принадлежатъ экземпляру Minecraft или модпаку, который вы запускаете. Папки салона и прокси принадлежатъ установкѣ салона или прокси. Создайте соотвѣтствующіе папки, если вашъ загрузчикъ ихъ ещё не создалъ.
- Установите кліентскій модъ для своего загрузчика.
- Установите соотвѣтствующій модъ салона или плагинъ Spigot/Paper на совмѣстимомъ салонѣ.
- Слѣдуйте конфигураціи Firewall и роутера, чтобы разрѣшить UDP-соединенія съ салономъ.
- Перезапустите кліентъ и салонъ.
- Добавьте адресъ салона, напримѣръ
raknet;play.example.comилиraknet;play.example.com:25565.
Адреса безъ префикса raknet; используютъ TCP.
Установка кліентскаго модуля не добавляетъ поддержку RakNet для удалённаго салона. Операторъ салона долженъ предоставить endpoint RakNet. Игрокамъ, присоединяющимся къ салону другого человѣка, обычно не нужны правила пересылки входящихъ сообщеній.
Установите соотвѣтствующій плагинъ-прокси и кліентскій модъ. Слѣдуйте инструкціямъ по настройкамъ слушателей, перенаправленію запросовъ на салонъ, ограниченіямъ доступа и адресу, который должны использовать игроки, въ раздѣлахъ Velocity и BungeeCord.
Для прямого салона Minecraft установите соотвѣтствующій Java аргументъ ниже. Операторы прокси должны использовать настройки Velocity и BungeeCord listener.
| Платформа | Аргументы 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 сохраняетъ локальный адресъ привязки слушателя TCP Minecraft. Недѣйствительное измѣненіе или занятый портъ UDP мѣшаетъ запуску RakNet. Провѣрьте въ логѣ запуска адресъ и портъ привязки UDP. Удалите аргументъ и перезапустите, чтобы вернуться къ номеру порта слушателя TCP.
Маршрутизаторъ или UDP-прокси также можетъ использовать другой публичный UDP-портъ и пересылать данные на существующій слушатель, не измѣняя параметры салона на языкѣ Java.
Откройте успѣшно выполненную сессию main въ GitHub Actions и скачайте её архив Artifacts. Для скачиванія архивовъ рабочихъ процессовъ GitHub требуется учётная запись. Используйте таблицу съ инсталляціями выше, чтобы выбрать JAR-файлъ изъ архива.
Velocity и BungeeCord находятся между игроками и бэкендъ-салонами Minecraft. Установите Raknetify2 на прокси-салонѣ и на каждомъ кліентѣ, который будетъ подключаться черезъ RakNet.
Кліентъ Raknetify2 --UDP--> Velocity или BungeeCord --TCP--> салонъ-фронтера
Бэкендъ-салоны не нуждаются въ Raknetify2 для этого пути подключенія. Имъ всѣ ещё необходимы моды, плагины и поддержка перенаправленія, необходимые для работы вашей сѣти. Raknetify2 не переводитъ версіи Minecraft и не измѣняетъ процедуру аутентификаціи аккаунта прокси-салона.
- Подтвердите, что обычные TCP-соединенія черезъ вашъ прокси работаютъ корректно, включая авторизацію и переключеніе между бэкендъ-салонами.
- Остановите прокси и скачайте соотвѣтствующій плагинъ съ GitHub Releases.
- Помѣстите
raknetify2-velocity-*-all.jarилиraknetify2-bungee-*-all.jarвъ папкуpluginsпрокси-салона. Удалите изъ этой папки любые болѣе старые плагины Raknetify или Raknetify2. - Установите соотвѣтствующій модъ кліента Raknetify2 съ помощью руководства по установкѣ.
- Провѣрьте настройки слушателя ниже, перезапустите прокси и провѣрьте его журналъ на наличіе ошибокъ при работѣ слушателя RakNet.
- Разрѣшите публичный UDP-трафикъ для прокси и ограничьте порты для игрового обмѣна, какъ описано въ Конфигураціи брандмауэра и роутера.
Используйте совмѣстимые версіи Raknetify2 на кліентѣ и прокси-салонѣ. Провѣрьте совмѣстимость передъ сочетаніемъ версій.
Параметръ bind въ файлѣ velocity.toml опредѣляетъ адресъ пріёма данныхъ въ Minecraft и TCP-портъ. Raknetify2 обычно используетъ одинъ и тотъ же номеръ порта для UDP. Пункты [servers] указываютъ на бэкендъ-салоны. Эти пункты должны соотвѣтствовать TCP-адресамъ бэкендъ-салоновъ. См. руководство по конфигураціи Velocity.
Чтобы использовать отдѣльный UDP-портъ, добавьте этот аргументъ JVM передъ -jar въ команду запуска Velocity:
-Draknetify.velocity.portOverride=25570
Переименуйте 25570 въ выбранный вами портъ. Это измѣнитъ UDP-портъ RakNet, сохраняя при этомъ TCP-портъ и адреса бэкенда Velocity. Послѣ измѣненія параметра необходимо перезапустить Velocity.
Настройте передачу данныхъ игроковъ и на Velocity, и на внутреннихъ салонахъ. Если салонное ПО поддерживаетъ современный режимъ передачи, используйте его и храните общій секретъ въ тайнѣ. Инструкціи для каждаго типа салона есть въ руководствѣ Velocity по передачѣ данныхъ игроковъ. Ограниченія брандмауэра на внутреннихъ салонахъ должны оставаться въ силѣ.
ВЪ файлѣ config.yml BungeeCord значеніе host въ каждой записи listeners указываетъ адресъ слушанія Minecraft и TCP-портъ. Raknetify2 обычно добавляетъ UDP на этот портъ. Записи servers содержатъ TCP-адреса бэкенда. Эти настройки описаны въ руководствѣ по конфигураціи BungeeCord.
Для отдѣльнаго UDP-порта добавьте этот параметръ JVM передъ -jar въ командѣ запуска BungeeCord:
-Draknetify.bungee.portOverride=25570
Переопредѣленіе относится ко всему процессу проксированія. Для конфигураціи съ нѣсколькими слушателями Minecraft провѣрьте фактическіе endpoints RakNet въ логѣ запуска передъ добавленіемъ правилъ фильтраціи. Перезапустите BungeeCord послѣ измѣненія параметровъ.
Сохраняйте авторизацію аккаунта черезъ прокси. Для бэкендовъ на основѣ Spigot, въ руководствѣ по пересылкѣ IP отъ BungeeCord указано, что ip_forward: true на прокси должно сопровождаться settings.bungeecord: true на бэкенде. Однако пересылка IP сама по себѣ не предотвращаетъ попытки подключенія напрямую къ бэкенду. Ограничьте доступъ къ бэкенду съ помощью инструкцій по использованію файрволла.
Оба параметра прокси-салона поддерживаютъ порты отъ 1 до 65534. Недѣйствительные значенія игнорируются, поэтому провѣрьте назначенный UDP-портъ въ логѣ запуска. Удалите аргументъ и перезапустите, чтобы вернуться къ номеру порта слушателя Minecraft.
Игроки подключаются къ публичному хостовому имени прокси и UDP-порту, напримѣръ raknet;play.example.com:25570. Когда роутеръ переводитъ порты, используйте его публичный UDP-портъ въ адресѣ кліента. Адреса безъ префикса raknet; продолжаютъ использовать TCP-слушатель прокси.
Оставьте Query, Geyser и другіе сервисы UDP на отдѣльныхъ UDP-портахъ. Разные TCP-порты не рѣшаютъ конфликтовъ съ UDP-соединеніями.
Simple Voice Chat используетъ собственный плагинъ-прокси и UDP-портъ въ библіотекахъ Velocity и BungeeCord. Для настройки необходимо слѣдовать инструкціямъ по использованію прокси-салона для голосовой связи здѣсь.
Если передъ вашимъ Minecraft-прокси установленъ отдѣльный UDP-релегей, который отправляетъ заголовки протокола PROXY v2, настройте Raknetify2 съ использованіемъ UDP-пересылки и протокола PROXY. Установка Velocity или BungeeCord самостоятельно не требуетъ такихъ настроекъ.
Провѣрьте работу изъ внѣ вашего локальной сѣти съ кліентомъ Raknetify2. Присоединяйтесь черезъ прокси, переключайтесь между используемыми бэкендъ-салонами и убѣдитесь, что идентичность игрока и разрѣшенія остаются корректными.
- Если TCP-соединеніе черезъ прокси работаетъ, но RakNet выходитъ изъ строя, провѣрьте слушатель UDP-протокола прокси, публичный портъ, маршруты по IPv4 и IPv6, а также правила фильтраціи въ брандмауере.
- Если оба протокола откажутся работать при попыткѣ прокси-салона подключиться къ бэкендъ-салону, провѣрьте TCP-адресъ бэкенда, правила доступа и настройки перенаправленія игроковъ.
- Если прокси сообщаетъ о занятомъ UDP-портѣ, провѣрьте, нѣтъ ли процесса Query, Geyser, голосового прокси или другого процесса, связаннаго съ нимъ.
Для отчётовъ необходимо включить какъ логи прокси, такъ и логи бэкендъ при одномъ и томъ же попыткѣ подключенія. Информацію о версіи логовъ смотрите въ раздѣлѣ Устраненіе неполадокъ.
Это руководство предназначено для операторовъ салоновъ. Raknetify2 требуетъ работающего UDP-канала къ салону или прокси-салону, принимающему соединенія по протоколу RakNet. По умолчанію используется тотъ же портъ, что и TCP-слушатель Minecraft.
Для игроковъ, находящихся въ одной локальной сѣти, используйте локальный адресъ салона и разрѣшите UDP черезъ его фаерволъ. Необходимо использовать перенаправленіе порта маршрутизатора, если интернетъ-трафикъ долженъ проходить черезъ IPv4 NAT маршрутизатора.
Отправляйте публичный UDP-трафикъ на машину, на которой работаетъ салонъ Minecraft съ помощью Raknetify2. Портъ назначенія – это RakNet-слушатель UDP салона. Дайте этому порту разрѣшеніе въ фаерволе хоста салонной машины. Сохраните существующій TCP-путь для обычныхъ подключеній Minecraft.
Напримѣръ, если Raknetify2 слушаетъ по UDP на портъ 25570, перенаправьте общественный UDP-портъ на локальный адресъ салона по порту 25570. TCP-портъ салона можетъ оставаться на 25565. См. Настройки прослушиванія прямого салона, чтобы выбрать другой UDP-портъ.
Отправляйте публичный UDP-трафикъ на машину, на которой работаетъ Velocity или BungeeCord, съ использованіемъ плагина Raknetify2. ВЪ качествѣ назначенія пересылки используйте слушатель UDP-трафика RakNet. Сохраняйте существующую публичную TCP-маршруту прокси для обычныхъ Minecraft-соединеній.
Прокси подключается къ бэкендъ-салонамъ Minecraft черезъ TCP. Добавленіе Raknetify2 въ прокси не требуетъ открытія UDP-портовъ для игроковъ.
| Соединеніе | Доступъ съ разрѣшеніемъ |
|---|---|
| Игроки, использующіе прокси-салонъ | Публичный UDP-портъ для пріёма сообщеній отъ RakNet, а также существующій публичный TCP-портъ для пріёма. |
| Прокси къ бэкендъ-салонамъ | Бэкендъ-порты TCP въ Minecraft, доступные только черезъ указанные прокси-хосты |
| Игроки перейдутъ непосредственно на бэкендъ-портъ игры. | Оставьте всѣ блокировки, включая черезъ IPv6. |
Когда прокси и бэкендъ работаютъ непосредственно на заказанномъ салонѣ, контролируемомъ вами, бэкендъ-слушатели могутъ использовать локальные адреса для доступа къ прокси. Между салонами доступъ къ прокси черезъ TCP долженъ быть ограниченъ съ помощью фаервола или изолированной частной сѣти. Контейнеры и управляемые салоны также должны подвергаться аналогичнымъ ограниченіямъ въ отношеніи сѣтевого маршрутизатора. См. Руководство по безопасности бэкенда Velocity и Руководство по использованію фаервола BungeeCord.
Переводка и блокировка черезъ фильтры брандмауэра работаютъ вмѣстѣ. Прямой доступъ къ бэкендъ-системѣ можетъ обойти провѣрки входа черезъ прокси. Для установки плагиновъ, настройки перевода и измѣненія UDP-порта слѣдуйте инструкціямъ по Velocity и BungeeCord.
Публичный портъ и портъ слушателя могутъ отличаться, когда роутеръ переводитъ данные между ними.
| Настройки | Используемый портъ |
|---|---|
| Адресъ кліента и салона | Публичный UDP-портъ |
| Внѣшній портъ правилъ пересылки маршрутизатора | Публичный UDP-портъ |
| Внутренній портъ правилъ пересылки маршрутизатора | Портъ UDP слушателя RakNet |
| Локальный портъ файрвола хоста | Портъ UDP слушателя RakNet |
Для хостинга за использованіемъ IPv4-роутера:
- Найдите локальный IPv4 адресъ машины, принимающей соединенія по протоколу RakNet. Используйте резервированіе адреса съ помощью DHCP или подходящее статическое адреса, чтобы правило перенаправленія продолжало оріентироваться на эту машину.
- Добавьте правило пересылки UDP для публичнаго порта, который используютъ игроки.
- Установите пунктъ назначенія правила на локальный адресъ этой машины и UDP-портъ слушателя RakNet.
- Дайте разрѣшеніе на входящіе UDP соединенія на порту слушателя въ брандефайере хоста.
Напримѣръ, салонъ, слушающій по UDP-порту 25565, можетъ использовать правило съ публичнымъ портомъ 25565, адресомъ получателя 192.168.1.100 и портомъ получателя 25565. Замѣните приведённый примѣръ адреса на фактическій локальный адресъ вашего салона.
Сохраните существующее правило TCP для обычныхъ соединеній въ Minecraft. Правило пересылки TCP не поддерживаетъ UDP.
Провѣрьте, выполняетъ ли другой маршрутизаторъ или вашъ провайдеръ NAT-модернизацію передъ тѣмъ, какъ трафикъ достигнетъ вашего маршрутизатора. При наличіи двухъ маршрутизаторовъ перенаправленіе должно осуществляться обоими. Если вашъ провайдеръ используетъ салонную версію NAT, уточните, можетъ ли онъ предоставить публичный IPv4 адресъ или использовать сервис хостинга или туннель, поддерживающій входящий UDP-трафикъ. Правила перенаправленія вашего маршрутизатора не могутъ настроить NAT провайдера. См. Руководство TP-Link по перенаправленію портовъ для полученія информаціи о требованіяхъ къ публичному адресу WAN.
Дайте разрѣшеніе на прохожденіе выбраннаго UDP-порта какъ черезъ IPv6-файрволъ роутера, такъ и черезъ файрволъ хоста. Цѣлевымъ адресомъ IPv6 является адресъ машины, принимающей соединенія по RakNet.
Провѣрьте, указываетъ ли IPv6-адресъ хостъ-имени на указанную машину. Если его IPv6-адресъ измѣняется, обновите записи DNS и правила брандмауэра, связанные съ этимъ адресомъ.
Хостъ-имя, которое публикуетъ какъ адреса IPv4, такъ и IPv6, должно имѣть функціональные маршруты для каждаго изъ этихъ адресовъ. Провѣряйте оба набора правилъ, когда одинъ игрокъ можетъ подключиться, а другой – нѣтъ.
Если перенаправленіе по IPv4 измѣняетъ номеръ порта, убѣдитесь, что этот портъ доступенъ также для слушателей по IPv6. Переводъ порта по IPv4 не конфигурируетъ маршрутъ по IPv6.
Провайдеръ или туннель должны поддерживать протоколъ UDP на публичномъ endpoints, который вы предоставляете игрокамъ. Провѣрьте распредѣленіе портовъ, правила сѣтевого брандмауера, а также собственный брандмауеръ салона.
Если дополнительный UDP-прокси пересылаетъ адреса кліентовъ съ использованіемъ протокола PROXY v2, слѣдуйте процедурѣ пересылки UDP и использованія протокола PROXY и ограничьте доступъ къ получающему UDP-слушателю только довѣренному прокси.
Подключитесь изъ внѣ локальной сѣти салона съ использованіемъ обновлённаго кліента Raknetify2, примѣняя адресъ вродѣ raknet;play.example.com:25565. Используйте публичный UDP-портъ въ этомъ адресѣ.
Используйте реальное соединеніе по сѣти RakNet для провѣрки маршрута. Сканированіе по протоколу UDP, которое не получаетъ отвѣта, можетъ дать неопредѣлённый результат, поскольку работающій сервис можетъ игнорировать незнакомые сигналы. Документація Nmap по сканированію по UDP объясняетъ это поведеніе.
Успѣшная TCP-связь подтверждаетъ только TCP-маршрутъ. Если RakNet превышаетъ время ожиданія, провѣрьте слушателя, мѣсто отправки, UDP-портъ и правила фильтраціи черезъ руководство по устраненію неполадокъ.
Провѣрьте совмѣстимость съ конкретной версіей, которую вы скачиваете. Разработочная вѣтка можетъ содержать функціональность, которая ещё не появилась въ какой-либо версіи.
Версіи Minecraft и Java · English
Требованія къ Java, указанные Raknetify2, являются минимальными. ВЪ Minecraft или его загрузчикъ можетъ требоваться болѣе новая версія языка выполненія. Выберите версію Java, которая соотвѣтствуетъ всѣмъ требованіямъ.
Используйте Raknetify2 версіи на кліентѣ и салонѣ, или на прокси-салонѣ, принимающемъ его соединеніе, по возможности. Передъ сочетаніемъ версій провѣрьте примѣчанія къ релизу. Зашифрованные соединенія RakNet требуютъ поддержки протокола аутентифицированного шифрованія на обоихъ концахъ. Оригинальные версіи Raknetify и Raknetify2, выпущенные до введенія этого протокола, не могутъ устанавливать такіе зашифрованные соединенія съ обновлёнными peers.
Raknetify2 поддерживаетъ существующій игровой протоколъ Minecraft. Для подключенія разныхъ версій Minecraft необходимо настроить соотвѣтствующую переводку протокола.
ВЪ случаѣ сбоевъ въ работѣ большаго модъ-пакета слѣдуйте руководству по устраненію неполадокъ. Укажите въ отчётѣ полные версіи модовъ.
Обычно Raknetify2 позволяетъ независимымъ каналамъ пакетовъ продолжать работу, пока одинъ изъ нихъ ждётъ отсутствующихъ данныхъ. ВЪ режимѣ упорядоченія всѣ пакеты Minecraft помѣщаются въ одинъ каналъ, поэтому отсутствующій пакетъ задерживаетъ всѣ послѣдующіе пакеты въ томъ направленіи до тѣхъ поръ, пока они не будутъ пересланы снова. Это сохраняетъ порядокъ, ожидаемый нѣкоторыми античитъ-программами, но при этомъ лишаетъ Raknetify2 способности обеспечивать бесперебойную передачу информаціи во время ожиданія.
-
Установите версію Raknetify2, поддерживающую порядковый режимъ, на салонѣ или прокси-салонѣ, принимающемъ соединенія по протоколу RakNet, а также на каждомъ кліентѣ RakNet.
-
Создайте файлъ
config/raknetify2-compatibility.jsonвъ корневой директоріи салона или прокси-салона. Если директоріяconfigещё не существуетъ, создайте её. -
Добавьте слѣдующее:
{"mode": "ordered"} -
Перезапустите салонъ или прокси-салонъ.
Кліенты автоматически слѣдуютъ настройкамъ салона. Игрокамъ не нужно создавать конфигураціонный файлъ или измѣнять адресъ своего салона RakNet.
Всѣ пакеты въ Minecraft используютъ одинъ надёжный упорядоченный каналъ въ каждомъ направленіи, включая раздѣлители пакетовъ и переходы между мірами.
Когда игроки подключаются черезъ Velocity или BungeeCord, необходимо настроить режимъ упорядоченнаго обмѣна данными на этомъ прокси-салонѣ, даже если античитъ работаетъ на бэкендъ-салонѣ.
Эта политика примѣняется ко всѣмъ бэкендъ-шлюмамъ. ВЪ режимѣ упорядоченія прокси передаётъ запросы keepalive бэкенда къ реальному кліенту, вмѣсто того чтобы отвѣчать на нихъ локально.
При первомъ подключеніи къ сѣти RakNet консоль сообщаетъ:
Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)
При успѣшномъ обмѣнѣ информаціей о совмѣстимости также записывается сообщеніе ordered compatibility negotiated, за которымъ слѣдуетъ адресъ партнёра.
Поддерживайте активные провѣрки на использованіе читовъ и провѣряйте свой конкретный варіантъ настроекъ.
Кліенты RakNet, которые не поддерживаютъ порядковый режимъ, не могутъ подключаться къ салону, требующему его использованія. Обновите Raknetify2 на такихъ кліентахъ, или подключайтесь къ салону или прокси-салону по обычному адресу и порту TCP безъ префикса raknet;.
Измѣните файлъ на:
{"mode": "multichannel"}Затѣмъ перезапустите салонъ или прокси-салонъ. Удаленіе файла также восстанавливаетъ режимъ многоканальнаго взаимодѣйствія послѣ перезапуска.
Файлъ долженъ содержать ровно одно настройку подъ названіемъ mode, причёмъ значеніемъ этой настройки можетъ быть либо "ordered", либо "multichannel". Значенія имѣютъ различія въ регистрѣ символовъ.
Недѣйствительные или нечитаемые конфигураціи отказываются отъ подключенія черезъ RakNet. Исправьте файлъ и перезапустите процессъ.
Если консоль по-прежнему отображаетъ значеніе multichannel, убѣдитесь, что файлъ находится въ рабочемъ директоріи салона или прокси-салона, который принимаетъ соединеніе по протоколу RakNet, а затѣмъ перезапустите этот процессъ.
Салоны Fabric, Forge и NeoForge могутъ выбирать RakNet при передачѣ способнаго кліента на заранѣе указанное мѣсто. Это используетъ встроенную поддержку передачи данныхъ въ Minecraft, добавленную въ Java Edition 1.20.5. Убѣдитесь, что ваша версія Raknetify2 поддерживаетъ нужную версію Minecraft и загрузчикъ на обоихъ концахъ.
Установите Raknetify2 на салонѣ отправки и кліентѣ. Пунктъ назначенія долженъ имѣть совмѣстимый слушатель RakNet и принимать входящіе транзакціи Minecraft.
Эта конфигурація примѣнима къ трансферамъ, отправляемымъ тремя вышеупомянутыми модами-загрузчиками. Плагины 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 провѣряетъ, поддерживаетъ ли кліентъ функцію автоматическаго транзита. Для кліента, способнаго къ работѣ, и соответствующего получателя Raknetify2 выбираетъ настроенный UDP-портъ. Другіе кліенты и несоотвѣтствующіе получатели сохраняютъ исходный адресъ транзда.
При использованіи даннаго метода сопоставляются имя хоста и TCP-портъ изъ запроса передачи данныхъ. Имя хоста выражается съ заглавной буквой, послѣдняя точка DNS и правильное написаніе IPv6 приводятся въ соотвѣтствіи съ стандартами. Поискъ по DNS не участвуетъ въ процессѣ сопоставленія, поэтому два разныхъ имени хоста, приводящихся къ одному адресу, требуютъ отдѣльныхъ записей. Спецификаціи типа «wildcard» не поддерживаются.
Для пункта назначенія, использующего server.properties Minecraft, установите accepts-transfers=true и перезапустите его. Прокси-салонъ пункта назначенія можетъ имѣть собственные настройки передачи. По умолчанію Minecraft отклоняетъ входящіе передачи, даже если обычное прямое присоединеніе работаетъ корректно.
Устройство пріёма сигналовъ RakNet на сторонѣ получателя, публичный переключатель UDP и файрволъ хоста должны быть уже настроены. Файлъ передачи отправляющего салона выбираетъ адресъ, къ которому отправляется данные кліенту.
Провѣрьте маршруты IPv4 и IPv6 у получателя, когда его хостъ-имя поддерживаетъ оба типа адресовъ. Передъ изученіемъ поведенія автоматической передачи провѣрьте обычное прямое соединеніе по RakNet съ получателемъ.
Сохраняйте всѣ провѣрки учётныхъ записей и доступа къ салону. Эта конфигурація не предоставляетъ игрокамъ доступъ къ салону и не замѣняетъ процедуру аутентификаціи.
Отсутствіе полей, неизвѣстные поля, недѣйствительные порты и дублирующіеся пункты назначенія вызываютъ ошибку конфигураціи при иниціализаціи. Используйте журналъ салона для выявленія ошибки, исправленія JSON-файла и перезапуска салона.
Чтобы отключить автоматическій выборъ адреса, удалите соотвѣтствующій файлъ конфигураціи или использовать параметръ {"destinations": []}. Затѣмъ перезапустите салонъ отправки. ВЪ этомъ случаѣ запросы на передачу данныхъ будутъ сохранять свои исходные адреса.
Прокси-салонъ UDP можетъ пересылать трафикъ RakNet и сохранять оригинальный адресъ кліента съ использованіемъ протокола PROXY v2. Установите эту функцію, когда upstream UDP-прокси отправляетъ эти заголовки въ вашъ слушатель. Обычное переключеніе порта роутера не требуетъ этого.
На салонѣ или на Minecraft-прокси, получающемъ пересыланный UDP-трафикъ, создайте файлъ config/raknetify2-proxy-protocol.json:
{
"trustedProxies": ["192.0.2.10"]
}Замѣните приведённый примѣръ на фактическій исходный IP-адресъ UDP-прокси или на діапазонъ CIDR, надъ которымъ вы имѣете контроль. Адресъ долженъ соотвѣтствовать тому, что видитъ принимающій салонъ послѣ любыхъ преобразованій NAT. Принимаются литералы IPv4 и IPv6. Имена хостовъ по DNS отклоняются. Необходимо перезапустить принимающій салонъ или прокси.
Настройте прокси-салонъ для пересылки заголовковъ протокола PROXY v2 для UDP. Raknetify2 принимаетъ только адреса кліентовъ, пересыланные изъ перечисленныхъ источниковъ. Прямые соединенія черезъ RakNet безъ этихъ заголовковъ отклоняются при активаціи этой конфигураціи. Слушатель TCP сохраняетъ свою существующую конфигурацію.
Каждому прокси изъ списка разрѣшено передавать адресъ кліента. Настройте межсѣтевой экранъ внутренняго салона такъ, чтобы къ его UDP-порту могъ обращаться только указанный прокси. Ограничьте довѣренные діапазоны адресами, которые дѣйствительно нужны въ вашей сѣти.
Файлъ долженъ содержать только элементы типа trustedProxies, не менѣе одного элемента. Пустой массивъ считается ошибкой. Недѣйствительный файлъ не позволяетъ RakNet-слушателю запуститься.
Чтобы вернуться къ прямымъ UDP-связямъ, удалите файлъ и перезапустите слушатель. Одновременно обновите поведеніе пересылки данныхъ вверхъ и правила файрволла для новаго маршрута.
Если соединенія не устанавливаются послѣ включенія этой функціи, провѣрьте фактическій исходный адресъ прокси на салонѣ, настроенный діапазонъ довѣрія и то, выпускаетъ ли прокси заголовки протокола UDP PROXY версіи 2.
Для установки прокси въ Minecraft и конфигураціи бэкенда слѣдуйте инструкціямъ по Velocity и BungeeCord.
Raknetify2 можетъ дѣлиться своимъ салоннымъ слушателемъ UDP съ Simple Voice Chat на платформахъ Fabric, Forge, NeoForge, Spigot и Paper.
Установите Simple Voice Chat на салонѣ и на каждомъ кліентѣ, который желаетъ использовать голосовой чатъ. Для остальной конфигураціи слѣдуйте руководству по настройкамъ салона.
Используйте директорію config верхняго уровня салона для файловъ Raknetify2, включая файлы, созданные съ использованіемъ Spigot/Paper. Самъ файлъ Simple Voice Chat остаётся въ специфичномъ для платформы мѣстѣ.
-
Создать файлъ
config/raknetify2-voicechat.jsonвъ директоріи салона съ такимъ содержимымъ:{"enabled": true} -
Установите
port=-1въ конфигураціи салона Simple Voice Chat. На модифицированныхъ салонахъ это файлъconfig/voicechat/voicechat-server.properties. На салонахъ Spigot/Paper –plugins/voicechat/voicechat-server.properties. -
Оставьте
bind_addressпустымъ, если уже существуетъ подходящій слушатель RakNet. Если салонъ имѣетъ нѣсколько слушателей на этомъ UDP-порту, установите значеніе на локальный адресъ слушателя, который вы хотите подѣлиться. -
Перезапустите салонъ и запустите программу
/voicechat test <PLAYERNAME>для игрока, который находится въ сѣти.
Если слушатель RakNet используетъ другой портъ, чѣмъ Minecraft, установите параметръ port на этот локальный UDP-портъ, а не используйте -1. Напримѣръ, слушатель RakNet на локальномъ UDP-порту 25570 долженъ имѣть параметръ port=25570.
Настройте значеніе voice_host, если кліенты нуждаются въ другомъ публичномъ адресѣ или порту. Для маршрутизатора, который передаётъ публичный UDP-трафикъ изъ 25580 на локальный UDP-трафикъ изъ 25570, используйте значенія port=25570 и voice_host=play.example.com:25580. Публичный адресъ указывается въ voice_host. Настройка bind_address позволяетъ выбрать локальнаго слушателя.
Raknetify2 предоставляетъ общій UDP сокетъ черезъ API Simple Voice Chat. Simple Voice Chat обрабатываетъ аутентификацію и шифрованіе голосовыхъ сообщеній. Игроки могутъ использовать голосовой чатъ какъ съ TCP, такъ и съ RakNet-соединеніями.
Выдѣлите 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} въ конфигураціи салона или удалить этот файлъ. Дайте отдѣльный UDP-портъ сервису Simple Voice Chat, обновите правила брандмауэра и регулировки пересылки данныхъ, а затѣмъ перезапустите салонъ.
Провѣряйте ихъ въ слѣдующемъ порядкѣ:
- Кліентъ имѣетъ правильную модификацію Raknetify2 для своего загрузчика и версіи Minecraft.
- Салонъ или прокси-салонъ, принимающій соединеніе, имѣетъ установленную и запущенную версію Raknetify2 безъ ошибокъ въ работѣ слушателей.
- Адресъ начинается съ
raknet;и используетъ общественный UDP-портъ. - Хостингъ-провайдеръ, роутеръ и файрволъ хоста разрѣшаютъ использованіе UDP на этомъ портѣ.
- Адреса хоста по IPv4 и IPv6 приводятъ къ нужному хосту, и у нихъ работаютъ правила брандмауэра.
Успѣшная TCP-связь подтверждаетъ только TCP-маршрутъ. Слѣдуйте процедурѣ настройки брандмауера и роутера, чтобы провѣрить пересылку UDP и доступъ къ IPv6. Если протоколъ PROXY активированъ, кліенты должны достигать слушателя черезъ настроенный довѣренный прокси.
Провѣрьте, нѣтъ ли другого процесса, использующего UDP-портъ. Сервис Geyser и другіе UDP-сервисы нуждаются въ своихъ собственныхъ портахъ. Сервис Simple Voice Chat можетъ использовать интеграцію черезъ общій портъ.
Вы можете выбрать другой локальный UDP-портъ съ помощью настроекъ просеивателя салона напрямую или настроекъ Velocity и BungeeCord. Уточните требованія къ версіи для настроекъ Spigot/Paper. Измѣненіе только публичнаго порта маршрутизатора можетъ привести къ конфликту локальнаго сокета.
Прикрѣпитесь напрямую къ пункту назначенія, используя его адресъ raknet;. Если это не сработаетъ, сначала исправьте устройство пріёма сигналовъ пункта назначенія или маршрутъ сѣти.
Если прямые соединенія работаютъ, провѣрьте, принимаетъ ли получатель входящіе трансферы. Салонъ Minecraft, использующій файлъ server.properties, долженъ имѣть параметръ accepts-transfers=true. Прямое присоединеніе не провѣряетъ этот параметръ.
Затѣмъ сравните имя хоста и TCP-портъ передачи съ файломъ config/raknetify2-transfers.json на салонѣ отправителя. Убѣдитесь, что файлъ былъ загруженъ послѣ перезапуска и что кліентъ поддерживаетъ автоматическіе передачи по RakNet. См. Автоматическіе передачи.
Провѣрьте версіи Raknetify2 на обоихъ концахъ соединенія. Обновляйте кліентъ и салонъ или прокси одновременно, когда выпускъ измѣняетъ зашифрованный протоколъ. Сохраняйте настройки аутентификаціи салона при расследованіи.
Укажите действие, вызывающее сбой: открытіе инвентаря, полученіе ресурсного пакета, измѣненіе міровъ или созданіе энтитета. Сравните то же самое действие черезъ TCP и RakNet съ использованіемъ отдѣльной тестовой установки, если это возможно.
Нѣкоторые пользовательскіе полезные модули зависятъ отъ порядка ванильныхъ пакетовъ. Авторы модовъ могутъ указать эти зависимости черезъ интерфейсъ порядка пакетовъ.
Откройте вопросъ въ тракеръ проблемъ Raknetify2 и включите:
- Версіи Minecraft, Java, loader и Raknetify2 съ обѣихъ сторонъ.
- Версіи салоннаго и прокси-программнаго обеспеченія, включая любые прокси-сервисы для пересылки UDP.
- Другіе установленные моды и ихъ версіи.
- Шаги для возникновенія проблемы и ожидаемое поведеніе.
- Подходятъ ли тѣ же шаги для использованія черезъ TCP.
- Выдержки изъ логовъ кліентовъ, салоновъ и прокси-салона, полученные въ ходѣ одного и того же запуска.
Передъ загрузкой логовъ удалите токены доступа, пароли и другую личную информацію. Сохраните сообщенія объ исключеніяхъ и слѣды стека, необходимые для діагностики проблемъ.
Raknetify2 позволяетъ модераторамъ указывать, какой трафикъ въ Minecraft долженъ оставаться упорядоченнымъ съ использованіемъ ихъ собственныхъ пакетовъ данныхъ. Это необходимо при обработкѣ пакетовъ, требующихъ обращенія къ существующимъ существамъ, кускамъ міра, инвентаріи или другимъ состояніямъ, установленнымъ ранѣе.
| Группа | Связанный трафикъ |
|---|---|
ui |
Меню и взаимодѣйствія, не зависящіе отъ міра |
entity |
Созданіе, удаленіе и перемѣщеніе существъ |
world_interaction |
Инвентарные запасы и другіе взаимодѣйствія, зависящіе отъ окружающей среды |
effects |
Звуки и частицы |
chunk |
Обновленія рельефа, блоковъ и освѣщенія |
Всѣ группы обеспечиваютъ надёжную и упорядоченную доставку пакетовъ въ своихъ каналахъ. Пакеты изъ разныхъ группъ могутъ приходить въ необычномъ относительномъ порядкѣ. Выберите группу, соотвѣтствующую зависимости полезной нагрузки.
Добавьте провайдеръ подъ элементомъ raknetify:packet_channels въ файлѣ fabric.mod.json вашего модуля. Провайдеръ реализуетъ интерфейсъ Consumer<BiConsumer<String, String>> съ использованіемъ типовъ JDK. Онъ принимаетъ регистратора, который имѣетъ перемѣнный типъ для идентификатора пакета и группу порядка передачи данныхъ.
Присоедините это значеніе къ вашимъ существующимъ метаданнымъ, замѣняя названіе класса на полное именованіе вашего провайдера:
{
"entrypoints": {
"raknetify:packet_channels": [
"com.example.mod.OrderingProvider"
]
}
}Сохраните остальную часть файла fabric.mod.json, включая существующіе записи. Это фрагментъ метаданныхъ файла.
Напримѣръ, расширеніе для управленія движеніемъ сущностей можетъ зарегистрировать example:entity_path въ группѣ entity. ВЪ документаціи API PacketOrdering приведена реализація этого расширенія.
Fabric не вызываетъ этот входной пунктъ, когда Raknetify2 отсутствуетъ. Провайдеры должны объявлять идентификаторы и группы во время иниціализаціи, не полагаясь на то, что другой модъ завершилъ свою иниціализацію.
Моды Forge и NeoForge, а также плагины салона или прокси могутъ вызвать методъ PacketOrdering.register(identifier, group) во время иниціализаціи, когда Raknetify2 доступенъ. Классъ для этого – com.ishland.raknetify.api.PacketOrdering. Регистрируйте модификаторы передъ пріёмомъ подключеній игроковъ, чтобы избѣжать загрузки классовъ Raknetify2, если зависимость отъ нихъ отсутствуетъ.
Объявленія примѣняются къ новымъ соединеніямъ. Существующіе соединенія сохраняютъ правила, установленные при ихъ созданіи. Допускается повторное объявленіе одного и того же параметра. Конфликтные группы для одного и того же идентификатора отклоняются.
Идентификаторы груза должны использовать дѣйствительный пользовательскій пространство имёнъ. Пространство имёнъ minecraft зарезервировано. Максимальное количество идентификаторовъ на одномъ конечномъ пунктѣ составляетъ 128, включая встроенные правила и регистраціи отъ другихъ модовъ. Идентификаторы могутъ содержать до 255 символовъ ASCII, используя синтаксисъ именованій идентификаторовъ API.
Обновлённые піонеры RakNet обмѣниваются деклараціями во время установленія соединенія. Салонъ или прокси можетъ использовать декларацію піонера, если у него нѣтъ локальныхъ правилъ для даннаго пакета данныхъ. Локальные правила имѣютъ пріоритетъ, и деклараціи піонера ограничены даннымъ соединеніемъ.
См. Пересылка UDP и протоколъ PROXY для информаціи о UDP-реле и пересылаемыхъ адресахъ кліентовъ.
Для настройки прокси въ Minecraft см. Velocity и BungeeCord.