Ошибка «Out of sync» и «Bad packet»: когда клиент отправляет невалидные данные
Введение: мусор на входе
Ошибка «Out of sync» или «Bad packet id» в консоли сервера означает, что сервер получил от клиента пакет, который не может обработать. Это может быть признаком атаки, использования несовместимого клиента или серьёзного бага. Сервер отбрасывает такие пакеты, но если их много — возможен краш. В этом гайде — что вызывает невалидные пакеты и как защитить сервер.
Причина 1: Несовместимая версия клиента
Клиент версии 1.21 подключается к серверу 1.20.6 (или наоборот) без использования ViaVersion. Пакеты имеют разную структуру, сервер не может их распарсить.
Решение:
- Установите плагин ViaVersion на сервер. Он автоматически конвертирует пакеты между версиями.
- Убедитесь, что клиенты используют поддерживаемые версии.
Причина 2: Модифицированный клиент (читы)
Чит-клиенты могут отправлять поддельные пакеты — например, пакет движения с невероятной скоростью или пакет разрушения блока на расстоянии 20 блоков. Анти-чит должен детектить и блокировать такие пакеты.
Решение:
- Установите анти-чит (GrimAC, Vulcan).
- В
spigot.ymlнастройтеmoved-wrongly-threshold: 0.0625иmoved-too-quickly-multiplier: 10.0.
Причина 3: Прокси (BungeeCord/Velocity) искажает пакеты
При использовании прокси с неправильной настройкой forwarding пакеты могут дублироваться или портиться.
Решение:
- На Velocity используйте
player-info-forwarding-mode = 'modern'. - На бекендах в
paper.yml:velocity-support.enabled: trueс правильным secret.
💡 Совет профи
Включите детальное логирование пакетов для диагностики. Вpaper.ymlустановитеlog-player-connections: trueиdebug-mode: true(только временно, для поиска проблемы). Логи покажут, какой именно пакет вызывает ошибку и от какого игрока. После диагностики отключите debug-mode — он сильно нагружает диск.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!