Repository navigation
Wiki ru ru
- Главная
- Установка
- 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.