Почему серверы Killing Floor лагают и зависают
Короткий ответ: чаще всего это не ваш интернет и не «сервер слабый». Это DDoS — поток поддельных подключений, который заставляет игровой процесс тратить такты на мусор вместо игры. К 2026 году такие атаки на серверы Killing Floor идут почти ежедневно, и это общая беда сцены, а не одного хостера.
Страница объясняет, что именно происходит, почему это тяжело фильтровать и что реально может сделать игрок.
Что видит игрок
Симптомы узнаваемые и очень характерные:
- Пинг нормальный, а игра дёргается. Это не рост задержки, а джиттер: пакеты приходят неравномерно. Формулировка «пинг 80, но фризы есть» — почти дословно описывает эту атаку.
- Сервер замирает на 1–3 минуты. Зеды стоят, урон не проходит, потом всё «догоняет» рывком. Можно пропустить целый магазин.
- В браузере серверов вместо пинга
?. Сервер жив, но не успевает ответить на запрос списка. - Выбрасывает с сервера и не пускает обратно — а через пару минут пускает.
- Лагает на всех серверах сразу, независимо от того, через какой адрес вы заходите.
Отличить от собственных проблем просто: если у вас тормозит только 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 смешные: единицы-десятки мегабит в секунду. Убивает не полоса, а число пакетов — каждый заставляет движок создать соединение. Атаку такого масштаба закрывает самый дешёвый тариф любого сервиса.
В этом и вся асимметрия: нападение стоит десятки долларов в месяц, а защита — фильтрующий канал, резервные маршруты и время администратора. Разница на два порядка, и она не в пользу обороняющегося.
Что может сделать игрок
Честно: помешать атаке вы не можете. Но можете не тратить нервы:
- Проверьте, что дело не в вас. Если тормозит только Killing Floor, а остальное работает — это не ваша сторона.
- Смените сервер. Атака обычно бьёт по одному-двум серверам за раз и переезжает каждые несколько минут. Соседний режим в это время часто работает нормально.
- Смените точку входа. Если у проекта есть несколько адресов (например, отдельные для разных регионов), попробуйте другой — они идут разными маршрутами.
- Почистите избранное. Мёртвые записи в списке избранного дают
?иN/Aи выглядят как «всё лежит», хотя серверы живы. Как это сделать — в отдельной инструкции: Как очистить избранные серверы. - Сообщите админам время. Полезнее всего не «всё лагает», а точное время по часам и название сервера — по этому находят окно атаки в логах.
Чего делать не надо: переустанавливать игру, менять настройки сети, покупать «игровой» VPN «от лагов». К этой проблеме ничего из перечисленного отношения не имеет.
Что делают администраторы
Рабочая схема на 2026 год выглядит так:
- Фильтрующий канал перед серверами. Трафик сначала попадает на площадку, которая чистит его аппаратно, и только потом доходит до игры.
- Скрытый настоящий адрес. Если реальный IP машины известен, фильтр обходится напрямую.
- Отсев мусора до игрового процесса. Всё, что можно опознать как подделку, должно умирать в ядре системы — до того, как Unreal Engine создаст объект соединения.
- Несколько независимых плеч. Когда провайдер под давлением снимает адрес с анонса (а это происходит), должен остаться второй путь.
Полностью надёжной защиты не существует: исходный код сетевой части Unreal Engine 2.5 закрыт, и отличать настоящего клиента от подделки приходится по косвенным признакам. Это открыто признаётся и в сообществе, и в запросах к хостерам.
Ссылки
- ovh/infrastructure-roadmap #482 — запрос к OVHcloud сделать профиль фильтрации под Killing Floor 1; описание механики атаки.
- Защита выделенного сервера KF2 средствами iptables/firewalld — разбор амплификации с соотношением 1:800.
- GenZmeY/KF2-AntiDDoS — попытка защиты через разбор логов сервера.
- CAIDA Spoofer Project — измерение охвата BCP 38 по миру.
- Cloudflare: что такое booter и IP stresser — экономика услуг «DDoS по найму».