Как перенести Minecraft сервер на DDoS-защиту без даунтайма

Как перенести Minecraft сервер на DDoS-защиту без даунтайма

Зачем вообще переносить сервер под защиту

Если ты читаешь этот гайд, скорее всего, уже столкнулся с DDoS-атаками на свой Minecraft сервер. Или пока не столкнулся, но понимаешь, что это вопрос времени. Атаки на Minecraft серверы - реальность, с которой живут тысячи администраторов каждый день.

Главный страх при подключении DDoS-защиты - это даунтайм. Игроки не смогут зайти, кто-то уйдет на другой сервер, донаты пропадут. Знакомо? Хорошая новость: при правильном подходе перенос можно сделать вообще без простоя. Игроки даже не заметят, что что-то изменилось.

В этом гайде разберем весь процесс по шагам - от подготовки до финальной проверки.

Как работает DDoS-защита через DNS

Прежде чем лезть в настройки, стоит понять базовый принцип. Большинство сервисов защиты (включая MineGuard) работают по схеме обратного прокси:

  1. Игрок подключается к домену твоего сервера (например, play.myserver.ru)
  2. DNS направляет его не на твой реальный IP, а на IP фильтра защиты
  3. Фильтр проверяет трафик, отсеивает мусор
  4. Чистый трафик пересылается на твой настоящий сервер

Вся магия происходит на уровне DNS. Ты просто меняешь, куда указывает домен - и трафик начинает идти через фильтр. Сам сервер при этом продолжает работать как работал.

Шаг 1: Подготовка - бэкап и снижение TTL

Перед любыми изменениями - бэкап. Да, мы не трогаем сам сервер, но привычка делать бэкап перед любыми манипуляциями спасала не один проект.

Что забэкапить:

  • Конфиг DNS-зоны (скриншот или экспорт записей)
  • Настройки файрвола на сервере
  • Конфиги BungeeCord/Velocity, если используешь прокси

Снижаем TTL записей DNS

Это критически важный шаг, который многие пропускают. TTL (Time To Live) - это время, которое DNS-резолверы кэшируют запись. Если у тебя TTL стоит 86400 (24 часа), то после смены DNS часть игроков будет ходить на старый IP еще сутки.

Зайди в панель управления DNS (Cloudflare, Hetzner DNS, любой другой провайдер) и установи TTL для A-записи твоего игрового домена на минимум - 60 или 120 секунд. Сделай это за 24-48 часов до переноса. Нужно подождать, пока старый высокий TTL истечет у всех резолверов.

Если используешь Cloudflare с включенным проксированием (оранжевое облако) - TTL управляется автоматически, тут ничего менять не нужно.

Шаг 2: Регистрация и настройка защиты

Регистрируемся в панели управления DDoS-защиты. На примере MineGuard:

  1. Создаем аккаунт на сайте
  2. Добавляем новую сеть (network) - это контейнер для настроек твоего сервера
  3. Выбираем тариф - для начала подойдет базовый, потом всегда можно масштабировать

После создания сети ты получишь адрес фильтра - это может быть IP-адрес или CNAME-запись вида filter.mineguard.net. Именно на этот адрес мы потом направим DNS.

Важный момент: не торопись сразу менять DNS. Сначала нужно полностью настроить защиту.

Шаг 3: Добавление домена и бэкенда

В панели защиты нужно указать два ключевых параметра:

Домен (или поддомен) - тот адрес, по которому игроки подключаются к серверу. Например, play.myserver.ru или просто myserver.ru.

Бэкенд - реальный IP-адрес твоего Minecraft сервера и порт. Например, 185.100.50.25:25565. Это адрес, куда фильтр будет пересылать чистый трафик.

В MineGuard это делается в разделе настроек сети:

  • Backend Address: указываем IP и порт сервера
  • Backend Protocol: TCP (стандарт для Minecraft Java Edition)

Если у тебя несколько серверов за BungeeCord или Velocity - указывай IP прокси-сервера, а не отдельных бэкенд-серверов.

Шаг 4: Настройка Proxy Protocol (если нужно)

Proxy Protocol - это способ передачи реального IP-адреса игрока через прокси. Без него твой сервер будет видеть все подключения как идущие с IP фильтра, а не от реальных игроков.

Когда Proxy Protocol нужен:

  • Ты хочешь видеть реальные IP в логах
  • У тебя есть бан-система по IP
  • Используешь плагины, привязанные к IP игрока

Когда можно обойтись без него:

  • Маленький сервер, где IP не критичен
  • Используешь авторизацию только по нику

Настройка на стороне BungeeCord:

В config.yml BungeeCord найди секцию listeners и добавь:

listeners:
  - proxy_protocol: true

Для Velocity в velocity.toml:

haproxy-protocol = true

Для Paper/Spigot напрямую (без BungeeCord) потребуется плагин HAProxyDetector или аналогичный.

После включения Proxy Protocol на стороне сервера - включи его и в панели защиты. Порядок важен: сначала сервер, потом защита. Если включить Proxy Protocol только на одной стороне, подключения сломаются.

Шаг 5: Переключение DNS

Все настроено, протестировано локально (к этому вернемся) - пора переключать DNS. Это собственно момент переноса.

Вариант A: Используешь A-запись

Заходим в DNS-панель и меняем A-запись игрового домена с реального IP сервера на IP фильтра защиты.

Было:

play.myserver.ru  A  185.100.50.25

Стало:

play.myserver.ru  A  104.167.24.91

Вариант B: Используешь CNAME

Некоторые сервисы защиты дают CNAME-запись. В этом случае удаляем старую A-запись и создаем CNAME:

play.myserver.ru  CNAME  yournetwork.filter.mineguard.net

Вариант C: Cloudflare + защита

Если домен на Cloudflare, можно использовать CNAME с включенным проксированием (оранжевое облако). Cloudflare будет проксировать HTTP/HTTPS трафик, а для игрового трафика Minecraft нужно выключить проксирование (серое облако) и использовать обычный CNAME или A-запись на фильтр.

Важно помнить: Cloudflare проксирует только веб-трафик. Игровой TCP/UDP трафик Minecraft через оранжевое облако не пойдет (если нет Cloudflare Spectrum, но это дорого и отдельная тема).

После сохранения DNS-записи изменения начнут распространяться. Благодаря низкому TTL, который мы выставили на шаге 1, большинство игроков переключатся на новый маршрут в течение нескольких минут.

Шаг 6: Проверка работы

DNS обновился, теперь проверяем, что все работает.

Проверка DNS-резолва:

nslookup play.myserver.ru

или

dig play.myserver.ru +short

В ответе должен быть IP фильтра защиты, а не реальный IP сервера.

Проверка подключения:

Запускаем Minecraft клиент и подключаемся к серверу по домену. Если зашел нормально, видишь мир, можешь двигаться - базовая проверка пройдена.

Проверка IP в логах:

Зайди на сервер и посмотри последний лог. Если настроен Proxy Protocol, в логах должны быть реальные IP игроков, а не IP фильтра. Если видишь IP фильтра - перечитай шаг 4.

Проверка через панель защиты:

В панели MineGuard можно увидеть активные подключения, статистику трафика и текущие угрозы. Если видишь входящие соединения - значит трафик идет через фильтр.

Проверка пинга:

Пинг может немного вырасти (на 1-5 мс) из-за дополнительного хопа через фильтр. Это нормально и незаметно для игроков. Если пинг вырос значительно (на 50+ мс), проверь географическое расположение фильтра - в идеале он должен быть ближе к основной аудитории сервера.

Шаг 7: Закрываем прямой доступ к серверу

Это шаг, который забывают чаще всего. Если реальный IP сервера известен атакующим (а он скорее всего известен), они просто будут бить напрямую, минуя защиту.

Настройка файрвола:

Разрешаем входящие подключения на игровой порт (25565) только с IP-адресов фильтра защиты. В iptables это выглядит примерно так:

iptables -A INPUT -p tcp --dport 25565 -s IP_ФИЛЬТРА -j ACCEPT
iptables -A INPUT -p tcp --dport 25565 -j DROP

У каждого сервиса защиты есть список IP-адресов, с которых приходит трафик. Убедись, что добавил все адреса, иначе часть игроков не сможет подключиться.

Смена IP (если скомпрометирован):

Если атакующие знают реальный IP сервера, файрвол поможет от прямых атак на порт Minecraft, но не спасет от volumetric атак на сам IP. В идеале - сменить IP у хостера и никому его не светить. Новый IP указать только в настройках защиты как бэкенд.

Что делать, если что-то пошло не так

Игроки не могут подключиться после смены DNS:

  • Проверь, что DNS обновился (nslookup/dig)
  • Попроси игроков очистить DNS-кэш (ipconfig /flushdns на Windows)
  • Проверь, что бэкенд-адрес в панели защиты указан верно
  • Убедись, что файрвол сервера разрешает подключения с IP фильтра

Подключение есть, но сервер лагает:

  • Проверь нагрузку на самом сервере - может быть не связано с защитой
  • Посмотри, нет ли потери пакетов на маршруте через mtr или traceroute
  • Обратись в поддержку сервиса защиты с результатами диагностики

В логах IP фильтра вместо реальных IP игроков:

  • Proxy Protocol не настроен или настроен только на одной стороне
  • Перечитай шаг 4 и проверь конфигурацию и на сервере, и в панели защиты

Часть игроков заходит, часть нет:

  • DNS еще не обновился у всех - подожди (зависит от старого TTL)
  • Если прошло больше суток - проблема в другом, проверяй файрвол и маршрутизацию

Откат: если все совсем плохо, просто верни DNS-запись на прежний IP сервера. Через несколько минут (благодаря низкому TTL) все вернется как было. Именно поэтому мы делали бэкап DNS-конфигурации.

Рекомендации после переноса

После успешного переноса не забудь:

  1. Поднять TTL обратно до 3600-86400 секунд. Низкий TTL создает лишнюю нагрузку на DNS-серверы.
  2. Настроить оповещения в панели защиты, чтобы получать уведомления об атаках.
  3. Изучить настройки файрвола в панели - можно ограничить подключения по версии протокола, включить капчу для подозрительных подключений, настроить rate limiting.
  4. Не светить реальный IP - не указывай его в публичных конфигах, DNS-записях для других поддоменов на том же IP, трекерах серверов.
  5. Проверить SRV-записи - если используешь SRV для Minecraft, убедись, что они тоже указывают на защищенный адрес.

Итого

Перенос Minecraft сервера под DDoS-защиту - не рокет сайенс. Весь процесс сводится к: подготовил DNS, настроил фильтр, переключил запись, проверил работу. При правильной подготовке (особенно с низким TTL) даунтайм равен нулю.

Главное - не торопиться и проверять каждый шаг. Лучше потратить лишние 30 минут на подготовку, чем потом разбираться, почему 200 игроков не могут зайти на сервер.


Sunucunuzu DDoS Saldırılarından Koruyun

5 dakikada kurulumla ücretsiz koruma. 1 TB bant genişliği dahil.

Ücretsiz Deneyin


İlgili Makaleler