Proxy Protocol для Minecraft: зачем нужен и как настроить
Что такое Proxy Protocol
Когда Minecraft-сервер стоит за reverse proxy (будь то DDoS-защита, CDN или свой проксирующий сервер), возникает одна фундаментальная проблема: сервер видит IP-адрес прокси, а не реальный IP игрока. Для сервера все подключения выглядят так, будто они идут с одного и того же адреса.
Proxy Protocol решает именно эту задачу. Это простой протокол, разработанный в HAProxy, который передаёт информацию об исходном подключении (IP-адрес и порт клиента) в самом начале TCP-соединения. Прокси добавляет специальный заголовок перед передачей трафика на бэкенд, а бэкенд его считывает и знает, кто на самом деле подключился.
Существует две версии протокола. Proxy Protocol v1 передаёт данные в текстовом формате, v2 - в бинарном. Вторая версия компактнее и быстрее в парсинге. Большинство современных решений (включая MineGuard) используют v2.
Зачем это нужно Minecraft-серверу
Без реальных IP-адресов ломается целый набор серверных механик, на которые администраторы полагаются каждый день.
Баны и модерация
Самый очевидный кейс. IP-бан - один из основных инструментов борьбы с гриферами и читерами. Если сервер видит только IP прокси, забанить конкретного игрока по IP невозможно. Хуже того, если попробовать забанить тот единственный IP, который сервер видит, отключатся вообще все игроки.
Геоблокировка и гео-аналитика
Многие серверы ограничивают подключения по географии. Русскоязычный сервер может блокировать подключения из регионов, откуда обычно идут боты. Или наоборот, событийный сервер открыт только для определённого региона. Без реальных IP гео-фильтрация не работает в принципе.
Плюс аналитика: понимать, откуда приходят игроки - полезно для развития проекта. Какие регионы растут, где нужно рекламироваться, нужны ли дополнительные локации серверов.
Плагины и лимиты
Множество плагинов завязано на IP игрока. Лимиты подключений с одного IP, антибот-системы, системы голосования, привязка аккаунтов. Когда все игроки "приходят" с одного адреса, эти плагины либо не работают, либо работают некорректно.
Логирование
В случае инцидента (взлом аккаунта, атака изнутри, нарушение правил) логи с реальными IP-адресами - единственный способ разобраться в ситуации. Логи, где у всех один IP - бесполезны.
Настройка Proxy Protocol для Paper
Paper (и его форки типа Purpur) поддерживают Proxy Protocol начиная с относительно свежих версий. Настройка зависит от того, какую версию Paper вы используете.
Paper 1.19.4 и новее
В конфигурационном файле config/paper-global.yml найдите секцию proxies:
proxies:
proxy-protocol: true
Сохраните файл и перезапустите сервер. Готово.
Старые версии Paper
Для версий до 1.19.4 конфигурация лежит в paper.yml:
settings:
proxy-protocol: true
Важный момент
После включения Proxy Protocol сервер начнёт ожидать PP-заголовок от каждого входящего подключения. Это значит, что прямые подключения (без прокси) перестанут работать. Не включайте эту опцию до того, как настроите прокси, иначе никто не сможет зайти на сервер, включая вас.
Если вы тестируете на локальной машине и подключаетесь напрямую, вам нужно либо отключить PP на время тестирования, либо подключаться через прокси.
Настройка Proxy Protocol для Velocity
Velocity - популярный прокси-сервер для сетей из нескольких серверов. Если ваша архитектура выглядит как "DDoS-защита -> Velocity -> Paper", то PP нужно включить на Velocity, а уже Velocity передаст реальный IP на бэкенд-серверы через свой протокол.
В файле velocity.toml:
[advanced]
haproxy-protocol = true
После перезапуска Velocity будет читать PP-заголовки из входящих подключений.
Цепочка проксирования
Типичная схема для защищённого сервера:
Игрок → DDoS-защита (PP v2) → Velocity (haproxy-protocol = true) → Paper
В такой схеме PP включается только на Velocity. Paper получает реальные IP через встроенный механизм forwarding Velocity (modern forwarding). Включать PP на Paper не нужно.
Если же у вас нет Velocity и архитектура проще:
Игрок → DDoS-защита (PP v2) → Paper (proxy-protocol = true)
Тогда PP включается на Paper напрямую.
Не включайте PP одновременно и на Velocity, и на Paper в одной цепочке. Paper за Velocity не должен ожидать PP-заголовки.
Как Proxy Protocol работает с DDoS-защитой
Сервис DDoS-защиты для Minecraft работает как reverse proxy: принимает входящие подключения на свой IP, фильтрует вредоносный трафик и пересылает чистый трафик на ваш реальный сервер. Без Proxy Protocol при такой схеме сервер увидит IP фильтра, а не IP игрока.
MineGuard поддерживает Proxy Protocol v2. Включается одной галочкой в панели управления, в настройках сети. После включения фильтр автоматически добавляет PP v2-заголовок к каждому проксируемому соединению, передавая реальный IP игрока на ваш сервер.
Что происходит технически:
- Игрок подключается к защищённому адресу (IP фильтра MineGuard).
- Фильтр анализирует трафик, отсеивает атаки и ботов.
- Легитимное соединение проксируется на ваш реальный сервер.
- В начало TCP-соединения добавляется PP v2-заголовок с IP и портом игрока.
- Ваш сервер (Paper/Velocity) читает заголовок и видит реальный IP.
Вся цепочка прозрачна для игрока. Он просто подключается по адресу и играет, не замечая ни защиту, ни проксирование.
Типичные ошибки при настройке
За время работы с Proxy Protocol в контексте Minecraft собралось несколько граблей, на которые наступают чаще всего.
Ошибка 1: MOTD не показывается или показывается некорректно
Когда Minecraft-клиент отправляет запрос на получение MOTD (Server List Ping), он устанавливает обычное TCP-соединение. Если на сервере включён Proxy Protocol, а запрос MOTD идёт без PP-заголовка (например, через мониторинг или напрямую), сервер не может разобрать пакет и обрывает подключение.
Решение: убедитесь, что все подключения к серверу идут через прокси, которая отправляет PP-заголовок. Если вам нужен мониторинг напрямую, используйте инструменты, которые умеют отправлять PP-заголовок, или мониторьте через отдельный порт без PP.
Ошибка 2: Двойной Proxy Protocol
Классическая ситуация: DDoS-защита шлёт PP-заголовок в Velocity, Velocity пересылает соединение на Paper, а на Paper тоже включён PP. Paper пытается прочитать PP-заголовок из данных, которые шлёт Velocity, не находит его (потому что Velocity передаёт данные своим протоколом) и крашится или отклоняет подключение.
Правило простое: PP включается только на первом принимающем звене вашей инфраструктуры.
- Есть Velocity? PP включаем на Velocity, Paper оставляем без PP.
- Нет Velocity? PP включаем на Paper.
- Никогда не включаем PP на обоих.
Ошибка 3: Забыли включить PP на сервере, но включили на прокси
Прокси шлёт PP-заголовок, а сервер его не ожидает. Сервер пытается интерпретировать заголовок как начало Minecraft Handshake, не может его распарсить и отклоняет подключение. Игроки видят "Connection refused" или "Can't connect to server".
Ошибка 4: Включили PP на сервере, но забыли на прокси
Зеркальная ситуация. Сервер ожидает PP-заголовок, но получает сразу Minecraft Handshake. Результат тот же: соединение обрывается.
Ошибка 5: Файрволл блокирует порты или протоколы
PP работает поверх обычного TCP-соединения, не на отдельном порту. Но если у вас жёсткие правила файрволла, которые разрешают подключения только с определённых IP, убедитесь, что IP-адрес прокси-сервера (или фильтра DDoS-защиты) разрешён. Это же касается правил iptables/nftables: они должны пропускать трафик от прокси.
Проверка работоспособности
После настройки нужно убедиться, что всё работает корректно. Несколько способов:
Через логи сервера
Подключитесь к серверу и посмотрите логи. Если в latest.log вы видите ваш реальный IP (а не IP прокси или фильтра), значит PP работает.
[Server thread/INFO]: PlayerName[/203.0.113.45:52341] logged in
Если вместо вашего IP там стоит адрес прокси (например, внутренний IP вашей защиты), значит что-то настроено неверно.
Через плагины
Плагин GeoIP или любой другой плагин, показывающий IP игрока, покажет реальный адрес, если PP настроен правильно.
Через команду
На Paper можно посмотреть IP подключённого игрока через /whois (если есть соответствующий плагин) или через Essentials команду /seen <player>.
Безопасность и Proxy Protocol
Есть важный аспект безопасности, о котором редко говорят. Если ваш сервер принимает PP-заголовки, то любой, кто подключится к серверу напрямую (минуя прокси), теоретически может подделать свой IP, отправив фальшивый PP-заголовок.
Поэтому критически важно:
-
Закрыть прямой доступ к серверу. Файрволлом разрешите подключения только с IP-адресов вашей прокси/защиты. Все остальные адреса должны быть заблокированы.
-
Не публикуйте реальный IP сервера. Если злоумышленник знает ваш реальный IP, он может атаковать вас напрямую, обходя защиту. Используйте только адрес защиты в DNS и на площадках мониторинга.
-
Проверяйте конфигурацию после обновлений. При обновлении Paper или Velocity убедитесь, что настройки PP не сбросились на значения по умолчанию.
При использовании MineGuard реальный IP вашего сервера знает только система фильтрации. Игрокам виден только адрес фильтра, что добавляет дополнительный уровень защиты.
Proxy Protocol и BungeeCord
Отдельно стоит упомянуть BungeeCord. Он тоже поддерживает Proxy Protocol, но механизм отличается от Velocity.
В config.yml BungeeCord:
proxy_protocol: true
Работает аналогично: BungeeCord начинает читать PP-заголовки из входящих подключений.
Однако если вы выбираете между BungeeCord и Velocity, Velocity предпочтительнее по нескольким причинам: он быстрее, у него лучше поддержка modern forwarding, и он активнее развивается. Proxy Protocol работает одинаково хорошо на обоих, но в целом Velocity - более современное решение.
Итого
Proxy Protocol - простая штука, которая решает одну конкретную проблему: потерю реальных IP-адресов при проксировании. Без него вы теряете возможность банить по IP, использовать гео-фильтрацию, собирать адекватную аналитику и полноценно работать с плагинами.
Настройка занимает пару минут: включить на прокси (или DDoS-защите), включить на принимающем сервере, проверить логи. Главное помнить три правила:
- PP включается только на одном звене цепочки.
- Прямой доступ к серверу должен быть закрыт файрволлом.
- После включения PP прямые подключения (без прокси) работать не будут.
Если вы используете MineGuard для защиты сервера, включение PP v2 занимает ровно один клик в панели. Сервер продолжает видеть реальные IP игроков, а защита продолжает фильтровать мусорный трафик. Все довольны.
Proteja Seu Servidor de Ataques DDoS
Proteção gratuita com configuração em 5 minutos. 1 TB de tráfego incluso.
Experimentar GrátisArtigos Relacionados
Оптимизация Minecraft сервера для устойчивости к атакам
Как правильная настройка JVM, ядра Linux и Paper/Purpur делает сервер устойчивее к DDoS. Конкретные флаги, конфиги sysctl, лимиты подключений и оптимизация плагинов для максимального запаса производительности.
Тренды DDoS-атак на игровые серверы в 2026 году
Анализ ключевых тенденций DDoS-атак на игровую индустрию в 2026 году: рост объёмов до терабитных масштабов, эволюция Minecraft-специфичных атак, распространение IoT-ботнетов и новые технологии защиты на базе XDP/eBPF и машинного обучения.
Защита Minecraft-сервера от сканирования портов
Как работает сканирование портов, какие инструменты используют атакующие для поиска Minecraft серверов, и как защитить свой сервер от разведки. Nmap, masscan, Shodan, iptables rate limiting, port knocking и DDoS-прокси.