Christmas Patriarch

Почему серверы Killing Floor лагают и зависают

Короткий ответ: чаще всего это не ваш интернет и не «сервер слабый». Это DDoS — поток поддельных подключений, который заставляет игровой процесс тратить такты на мусор вместо игры. К 2026 году такие атаки на серверы Killing Floor идут почти ежедневно, и это общая беда сцены, а не одного хостера.

Страница объясняет, что именно происходит, почему это тяжело фильтровать и что реально может сделать игрок.

Что видит игрок

Симптомы узнаваемые и очень характерные:

Отличить от собственных проблем просто: если у вас тормозит только Killing Floor, а все остальные серверы и сайты в порядке — почти наверняка вы попали в окно атаки.

Как это устроено

Killing Floor работает на Unreal Engine 2.5, а это движок 2004 года. У него есть свойство, которое и делает атаку такой дешёвой:

Сервер создаёт объект соединения на любой UDP-пакет с незнакомого адреса — ещё до всякой проверки, игрок это или мусор.

То есть один поддельный пакет заставляет сервер выделить память под соединение, записать две строки в лог и тут же всё уничтожить. Умножьте на десятки тысяч в минуту — и однопоточный игровой процесс упирается в 100% своего ядра. Тик встаёт, и замирают все игроки этого сервера, независимо от их пинга и провайдера.

Именно поэтому лагает у всех сразу и одинаково: узкое место не в сети, а внутри игрового процесса.

Атаки идут не по одному сценарию, а семействами. Основные три:

Флуд подключений. Тысячи мелких UDP-пакетов на игровой порт, каждый с нового адреса. Самый вредный вариант — именно он сжигает процессорное время сервера.

Амплификация (отражение). Атакующий отправляет короткий запрос на чужой плохо настроенный сервер (NTP, DNS, CLDAP, SSDP), подставив в качестве обратного адреса игровой сервер. Тот отвечает пакетом в десятки и сотни раз больше — и весь этот объём валится на игру. Отношение бывает 1:800.

Флуд запросов состояния. Массовые обращения к порту, который отдаёт список игроков и настроек. Ответ большой, запрос маленький — та же экономика.

Почему это трудно отфильтровать

Причина в том, что на уровне пакета атака выглядит как обычный заход игрока. У неё эфемерный порт-источник, как у настоящего клиента, нормальная длина и обычный TTL. Классические признаки амплификации (служебный порт-источник, нулевая длина, аномальный TTL) в новых волнах не срабатывают: атакующие их знают и обходят.

Второй момент — атака распределённая по построению. С одного адреса приходит десяток попыток в сутки, что ниже любого разумного порога. Ограничение «не больше N подключений с одного IP» такую схему не видит вообще.

Третий — атакующие подстраиваются под защиту. Когда закрывается один признак, следующая волна приходит уже без него. Поэтому конкретные правила фильтрации серверные администраторы обычно не публикуют: опубликованное правило перестаёт работать через несколько дней.

Почему бан по IP бесполезен

Адреса в логах атаки — подделанные. Отправитель просто пишет в поле «откуда» чужой адрес, и ответ (которого он и не ждёт) уходит в никуда.

Насколько это очевидно: в разборах наших собственных волн среди «источников» регулярно оказываются пограничные узлы AWS CloudFront. CDN физически не подключается к игровому серверу Killing Floor по UDP — эти адреса подставлены. Забанив их, вы забаните непричастных и сломаете себе часть интернета.

Отдельная неприятная сторона: когда атака идёт через отражение, пакеты приходят с настоящих адресов — но это адреса таких же жертв, чужих плохо настроенных серверов, которых используют втёмную.

Технически проблему решает BCP 38 (RFC 2827) — проверка исходящего адреса на стороне провайдера отправителя. Стандарту больше двадцати лет, и он до сих пор внедрён не везде: сети, которая его включит, это ничего не даёт, выигрывают только соседи. Проект CAIDA Spoofer измеряет охват по всему миру — дыр по-прежнему много, тысячи автономных систем пропускают подделанные адреса наружу. Атакующие целенаправленно покупают хостинг именно там.

Тогда почему провайдеров-источников не банят

Вопрос звучит логично, но упирается в то, что случаев на самом деле два, и они разные.

Флуд подключений — банить некого. Провайдеры, чьи адреса вы видите в логах, не отправляли ничего. Пакеты вышли из совсем другой сети, а в поле «отправитель» вписан чужой адрес. Жалоба к ним уйдёт мимо цели: у них этого трафика не было. Остановить может только та сеть, откуда пакеты реально вышли, — и это ровно тот BCP 38, которого там нет.

Амплификация — банить пришлось бы своих клиентов. Здесь адреса настоящие: пакеты приходят с реальных, но плохо настроенных чужих серверов. Их владельцы — такие же пострадавшие, их машины используют втёмную. Жалоба доходит по адресу, но для провайдера это сервер клиента, а не его собственный, и чинить чужую конфигурацию почти никто не берётся.

Сколько это стоит атакующему

Меньше, чем кажется: порядка 15–50 долларов в месяц, и скорее ближе к нижней границе.

Услуги «стресс-тестирования» (booter, stresser) продаются по подписке от 20 до 125 долларов в месяц, входные тарифы встречаются по 15–20. Платится подписка, а не атака: сутки непрерывного флуда стоят ровно столько же, сколько пять минут. Отсюда и характер происходящего — атака идёт неделями, потому что останавливать её незачем, деньги уже уплачены.

Есть вариант ещё дешевле, без всякого сервиса: один арендованный VPS у хостера, который не фильтрует исходящий трафик. Это 5–20 долларов в месяц, и с одной такой машины выдавливается больше ста тысяч пакетов в секунду — достаточно, чтобы положить игровой сервер.

Объёмы, от которых Killing Floor встаёт колом, по меркам DDoS смешные: единицы-десятки мегабит в секунду. Убивает не полоса, а число пакетов — каждый заставляет движок создать соединение. Атаку такого масштаба закрывает самый дешёвый тариф любого сервиса.

В этом и вся асимметрия: нападение стоит десятки долларов в месяц, а защита — фильтрующий канал, резервные маршруты и время администратора. Разница на два порядка, и она не в пользу обороняющегося.

Что может сделать игрок

Честно: помешать атаке вы не можете. Но можете не тратить нервы:

  1. Проверьте, что дело не в вас. Если тормозит только Killing Floor, а остальное работает — это не ваша сторона.
  2. Смените сервер. Атака обычно бьёт по одному-двум серверам за раз и переезжает каждые несколько минут. Соседний режим в это время часто работает нормально.
  3. Смените точку входа. Если у проекта есть несколько адресов (например, отдельные для разных регионов), попробуйте другой — они идут разными маршрутами.
  4. Почистите избранное. Мёртвые записи в списке избранного дают ? и N/A и выглядят как «всё лежит», хотя серверы живы. Как это сделать — в отдельной инструкции: Как очистить избранные серверы.
  5. Сообщите админам время. Полезнее всего не «всё лагает», а точное время по часам и название сервера — по этому находят окно атаки в логах.

Чего делать не надо: переустанавливать игру, менять настройки сети, покупать «игровой» VPN «от лагов». К этой проблеме ничего из перечисленного отношения не имеет.

Что делают администраторы

Рабочая схема на 2026 год выглядит так:

Полностью надёжной защиты не существует: исходный код сетевой части Unreal Engine 2.5 закрыт, и отличать настоящего клиента от подделки приходится по косвенным признакам. Это открыто признаётся и в сообществе, и в запросах к хостерам.

Ссылки