При создании сети серверов Minecraft (хаб, выживание, мини-игры) объединение отдельных миров выполняется с помощью прокси-сервера. Современным стандартом индустрии является прокси Velocity от команды PaperMC, пришедший на смену устаревшему BungeeCord. Он обеспечивает экстремальную производительность, устойчивость к бот-атакам и нативную поддержку современных версий протокола.
Однако неопытные администраторы часто совершают критическую ошибку безопасности: они поднимают Velocity на порту 25565, но оставляют порты внутренних серверов Paper (например, 25566, 25567) открытыми в интернет. Злоумышленники могут подключиться к внутреннему серверу напрямую с модифицированным клиентом, подделав никнейм и UUID любого администратора. В этой статье разобран процесс безопасного развёртывания Velocity с криптографической пересылкой Modern forwarding и изоляцией бэкендов через UFW.
Конфигурация forwarding.secret в velocity.toml#
В отличие от устаревшего режима BungeeCord, где IP-адрес передавался в открытом текстовом заголовке рукопожатия, Velocity использует режим Modern forwarding. В этом режиме данные игрока (IP-адрес, UUID, текстуры скина) подписываются криптографическим секретом на основе HMAC.
Сгенерируйте файл секрета для прокси:
mkdir -p /opt/velocity /opt/paper-lobby
openssl rand -hex 32 > /opt/velocity/forwarding.secret
В файле конфигурации /opt/velocity/velocity.toml укажите порт входа для игроков (25565) и активируйте modern forwarding:
cat << 'EOF' | sudo tee -a /opt/velocity/velocity.toml
bind = "0.0.0.0:25565"
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
[servers]
lobby = "127.0.0.1:25566"
survival = "127.0.0.1:25567"
try = [
"lobby"
]
EOF
Настройка бэкенд-серверов Paper#
Теперь необходимо сконфигурировать серверы Paper (или Purpur), чтобы они принимали игроков только от вашего прокси и сверяли цифровую подпись.
Скопируйте сгенерированный файл forwarding.secret на каждый бэкенд-сервер:
cp /opt/velocity/forwarding.secret /opt/paper-lobby/
В конфигурации config/paper-global.yml на бэкенд-сервере настройте секцию proxies:
cat << 'EOF' | sudo tee -a /opt/paper-lobby/config/paper-global.yml
proxies:
velocity:
enabled: true
online-mode: true
secret: "PASTE_CONTENTS_OF_FORWARDING_SECRET_HERE"
EOF
В файле server.properties бэкенд-сервера установите online-mode=false (так как проверку лицензии Mojang берёт на себя Velocity) и привяжите сервер к локальному адресу:
cat << 'EOF' | sudo tee -a /opt/paper-lobby/server.properties
server-ip=127.0.0.1
server-port=25566
online-mode=false
EOF
Изоляция бэкенд-портов через межсетевой экран UFW#
Если ваши бэкенд-серверы запущены на разных физических VPS в одной приватной сети, привязки к 127.0.0.1 недостаточно. Необходимо заблокировать доступ к бэкенд-портам из внешней сети на уровне файрвола, разрешив подключения только с IP-адреса прокси.
Настройте правила межсетевого экрана UFW на хосте с бэкенд-сервером:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
# Allow game connections only from the Velocity proxy IP
sudo ufw allow from 10.0.0.5 to any port 25566 proto tcp
# Enable firewall
sudo ufw enable
sudo ufw status verbose
Теперь, если злоумышленник попытается ввести IP-адрес и порт 25566 в клиенте игры, запрос будет сброшен на уровне ядра Linux без ответа.
Проверка статуса сети и авторизации игроков#
Запустите службы Velocity и бэкенд-сервера, после чего проверьте логи инициализации:
sudo journalctl -u velocity -n 50 --no-pager
Подключитесь к серверу через публичный IP на порту 25565. Выполните команду на бэкенд-сервере:
tail -n 20 /opt/paper-lobby/logs/latest.log | grep -E "(logged in with entity id|UUID)"
Убедитесь, что в логе отображается реальный внешний IP-адрес игрока и его подлинный UUID, а не локальный адрес прокси 127.0.0.1. Это подтверждает корректную работу передачи IP для систем античита и банов.
Для централизованного управления десятками игровых серверов в единой сети, мониторинга онлайна и настройки безопасных приватных соединений администраторы задействуют панель управления серверами, где конфигурация прокси и балансировка нагрузки автоматизированы.




