Velocity + DDoS-защита: полный гайд по настройке безопасной Minecraft сети
Зачем вообще нужен Velocity
Если вы строите Minecraft сеть на несколько серверов, вам нужен прокси. BungeeCord долгое время был стандартом, но в 2024-2026 году выбор очевиден: Velocity от PaperMC.
Коротко о том, почему BungeeCord пора на пенсию:
- Производительность. Velocity написан с нуля на современном Java-стеке. Он потребляет меньше памяти и обрабатывает больше подключений на тех же ресурсах.
- Безопасность. BungeeCord до сих пор использует устаревший ip-forwarding. Velocity предлагает modern forwarding с HMAC-подписями, что исключает подмену UUID игроков.
- API. У Velocity чистый event-driven API без легаси-костылей. Плагины работают стабильнее.
- Поддержка. PaperMC активно развивает Velocity. BungeeCord получает редкие обновления.
Единственный аргумент за BungeeCord - это совместимость со старыми плагинами. Но большинство актуальных плагинов уже портированы на Velocity.
Архитектура: как всё связано
Правильная архитектура Minecraft сети с DDoS-защитой выглядит так:
Игрок → MineGuard (фильтрация) → Velocity (прокси) → Paper серверы (lobby, survival, minigames)
Разберём каждый уровень:
MineGuard принимает входящий трафик на себя. Игроки подключаются к IP-адресу MineGuard, а не к вашему реальному серверу. Вся фильтрация происходит до того, как пакеты попадут на Velocity. Боты, флуд, malformed-пакеты - всё отсеивается на этом этапе.
Velocity получает уже чистый трафик и распределяет игроков по серверам. Он отвечает за маршрутизацию, переключение между серверами (hub → survival → minigames) и пересылку данных игрока.
Paper серверы - конечные точки, где крутится сам геймплей. Каждый сервер знает только о Velocity и не видит внешний мир напрямую.
Ключевой момент: реальный IP вашего сервера с Velocity должен быть скрыт. Если атакующий узнает прямой адрес, он обойдёт MineGuard и ударит напрямую.
Установка и настройка Velocity
Требования
- Java 17+ (рекомендуется Java 21)
- Минимум 512 МБ RAM для прокси (на 100-200 игроков)
- Linux-сервер (Ubuntu 22.04 / Debian 12)
Установка
mkdir -p /opt/velocity && cd /opt/velocity
wget https://api.papermc.io/v2/projects/velocity/versions/3.4.0-SNAPSHOT/builds/latest/downloads/velocity-3.4.0-SNAPSHOT-latest.jar -O velocity.jar
java -Xms512M -Xmx512M -jar velocity.jar
После первого запуска Velocity создаст конфигурационные файлы. Остановите сервер и переходите к настройке.
velocity.toml - основные параметры
bind = "0.0.0.0:25577"
# Меняем на modern - это критически важно
player-info-forwarding-mode = "modern"
show-max-ping = 1000
online-mode = true
[servers]
lobby = "127.0.0.1:25565"
survival = "127.0.0.1:25566"
minigames = "127.0.0.1:25567"
try = ["lobby"]
[forced-hosts]
"survival.example.com" = ["survival"]
[advanced]
connection-timeout = 5000
read-timeout = 30000
haproxy-protocol = false
Параметр bind - адрес и порт, на котором Velocity слушает подключения. Если MineGuard и Velocity на одной машине, ставьте 127.0.0.1:25577. Если на разных - 0.0.0.0:25577, но обязательно закройте порт файрволом от всех, кроме MineGuard.
Modern forwarding
После включения player-info-forwarding-mode = "modern" Velocity сгенерирует файл forwarding.secret. Этот секрет нужно скопировать на каждый Paper-сервер.
На Paper-серверах откройте config/paper-global.yml:
proxies:
velocity:
enabled: true
online-mode: true
secret: "скопируйте_сюда_секрет_из_forwarding.secret"
Modern forwarding подписывает данные игрока (UUID, скин, IP) HMAC-ключом. Если кто-то попытается подключиться к Paper-серверу напрямую, минуя Velocity, сервер отклонит соединение. Это закрывает целый класс атак по подмене UUID.
Firewall: закрываем всё лишнее
Файрвол - не опция, а обязательная часть настройки. Без него ваши Paper-серверы торчат наружу и принимают прямые подключения.
# Разрешаем SSH
sudo ufw allow 22/tcp
# Разрешаем Velocity ТОЛЬКО с IP MineGuard
sudo ufw allow from MINEGUARD_IP to any port 25577 proto tcp
# Запрещаем прямой доступ к Paper-серверам извне
# (они на 127.0.0.1, так что уже недоступны, но на всякий случай)
sudo ufw deny 25565:25570/tcp
# Включаем файрвол
sudo ufw enable
Замените MINEGUARD_IP на IP-адрес вашего MineGuard-фильтра. Если у MineGuard несколько IP - добавьте правило для каждого.
Проверьте, что порты Paper-серверов привязаны к 127.0.0.1, а не к 0.0.0.0. В server.properties каждого сервера:
server-ip=127.0.0.1
server-port=25565
Подключение DDoS-защиты MineGuard
Как MineGuard фильтрует трафик
MineGuard работает как reverse proxy перед Velocity. Весь входящий трафик проходит через фильтр, который анализирует пакеты на нескольких уровнях:
- XDP-уровень - самый быстрый. Отсеивает мусорный трафик ещё до того, как он попадёт в сетевой стек ОС.
- TCP-уровень - проверяет корректность соединений, отсекает SYN-флуд и аномальные пакеты.
- Протокол Minecraft - анализирует содержимое пакетов. Отличает ботов от реальных игроков по поведению при подключении.
Для игрока это прозрачно: он подключается к адресу, видит MOTD, заходит на сервер. Разница в том, что между игроком и Velocity стоит фильтр, который не пропустит атаку.
Настройка в панели MineGuard
- Добавьте сеть в панели MineGuard
- Укажите backend-адрес - IP и порт вашего Velocity (
ваш_сервер:25577) - Выберите режим защиты (рекомендуется "Умный" для начала)
- MineGuard выдаст вам защищённый IP - это адрес, который вы дадите игрокам
Proxy Protocol
Когда трафик проходит через MineGuard, Velocity по умолчанию видит IP-адрес MineGuard, а не реальный IP игрока. Для решения этой проблемы используется Proxy Protocol.
В панели MineGuard включите Proxy Protocol для вашей сети.
В velocity.toml включите поддержку:
[advanced]
haproxy-protocol = true
После этого Velocity будет корректно видеть IP-адреса игроков. Это важно для:
- Бан-листов по IP
- Геолокации
- Защиты от мультиаккаунтов
- Корректной статистики
Важно: после включения haproxy-protocol в Velocity, прямые подключения (минуя MineGuard) перестанут работать. Velocity будет ожидать Proxy Protocol header от каждого соединения. Это ещё один уровень защиты - даже если кто-то найдёт прямой IP, подключиться без Proxy Protocol не получится.
Systemd-сервис для Velocity
Чтобы Velocity автоматически запускался при перезагрузке сервера:
# /etc/systemd/system/velocity.service
[Unit]
Description=Velocity Minecraft Proxy
After=network.target
[Service]
User=minecraft
WorkingDirectory=/opt/velocity
ExecStart=/usr/bin/java -Xms512M -Xmx512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -jar velocity.jar
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable velocity
sudo systemctl start velocity
Тестирование
Перед тем как давать адрес игрокам, проверьте всё по чек-листу:
1. Проверка подключения через MineGuard:
Подключитесь к защищённому IP из Minecraft клиента. Вы должны попасть на lobby-сервер.
2. Проверка modern forwarding:
Зайдите на сервер и выполните /velocity dump. Убедитесь, что forwarding mode стоит "modern". На Paper-сервере проверьте, что ваш UUID корректный (совпадает с Mojang UUID).
3. Проверка Proxy Protocol:
На Paper-сервере выполните команду, которая показывает ваш IP (например, через EssentialsX: /whois ваш_ник). IP должен быть вашим реальным, а не адресом MineGuard.
4. Проверка файрвола:
Попробуйте подключиться напрямую к IP сервера на порт 25577, минуя MineGuard. Соединение должно быть отклонено файрволом.
# С внешней машины
nc -zv ваш_сервер 25577
# Должен быть таймаут или отказ
5. Проверка прямого доступа к Paper:
Попробуйте подключиться Minecraft-клиентом напрямую к адресу Paper-сервера. Соединение должно быть отклонено (modern forwarding не пропустит).
Мониторинг
Настроенная сеть требует мониторинга. Вот что стоит отслеживать:
В панели MineGuard
- График трафика - резкие скачки означают атаку
- Заблокированные соединения - покажут интенсивность атак
- Латентность - время между MineGuard и вашим Velocity
На сервере
# Количество активных соединений к Velocity
ss -tn state established '( dport = :25577 )' | wc -l
# Потребление ресурсов
journalctl -u velocity -f
# Сетевой трафик
vnstat -l -i eth0
Логи Velocity
В velocity.toml можно настроить уровень логирования. Для продакшена оставьте стандартный уровень, но при диагностике проблем переключайте на debug.
Полезно настроить алерты: если количество соединений резко падает или растёт - что-то не так. Простейший вариант - cron-скрипт, который проверяет доступность Velocity и шлёт уведомление в Telegram/Discord.
Частые ошибки
"Соединение с сервером потеряно" при подключении. Обычно проблема с modern forwarding. Проверьте, что секрет в paper-global.yml совпадает с forwarding.secret и что режим стоит "modern" на обеих сторонах.
IP игроков отображается как IP MineGuard. Не включен Proxy Protocol. Включите в панели MineGuard и в velocity.toml.
Velocity не стартует с haproxy-protocol = true. Это нормально, если вы подключаетесь напрямую. С включённым Proxy Protocol соединения без PROXYv2-заголовка отклоняются. Подключайтесь только через MineGuard.
Игроки попадают на сервер, но не могут переключаться между серверами. Проверьте, что все серверы в [servers] доступны с машины Velocity. Используйте ping и nc для диагностики.
Итого
Связка MineGuard + Velocity - это продакшен-решение для Minecraft сети любого масштаба. MineGuard берёт на себя фильтрацию DDoS-атак на сетевом уровне, Velocity занимается маршрутизацией игроков, Paper-серверы отвечают за геймплей.
Ключевые моменты:
- Используйте modern forwarding, не legacy
- Закройте файрволом все порты, кроме необходимых
- Включите Proxy Protocol для корректной передачи IP
- Скройте реальный IP сервера - он не должен быть в DNS или публичном доступе
- Мониторьте трафик и соединения
Эта архитектура выдерживает серьёзные DDoS-атаки и при этом не добавляет заметной задержки для игроков. Фильтрация на уровне XDP работает быстрее, чем любое программное решение в user space, а Velocity обеспечивает минимальный overhead при проксировании.
Protégez votre serveur contre les attaques DDoS
Protection gratuite avec configuration en 5 minutes. 1 To de bande passante inclus.
Essayer gratuitementArticles connexes
Как монетизировать Minecraft сервер: донат, ранги, магазин и EULA
Полное руководство по заработку на Minecraft сервере без нарушения EULA Mojang. Разбираем модели монетизации, плагины для доната, ценовые стратегии и реальные цифры дохода.
Установка Minecraft сервера на Ubuntu Linux: пошаговое руководство
Подробное руководство по установке и настройке Minecraft сервера на Ubuntu 22.04/24.04. Java 21, Paper, systemd, файрвол, JVM-флаги и автоперезапуск.
Pixelmon SMP сервер: полный гайд по покемонам в Minecraft
Как поднять Pixelmon Reforged сервер с нуля: установка Forge 1.16.5, моды, конфиг, спортзалы, PvP и фикс античита для летающих покемонов.