MadWars
БАЗА ЗНАНИЙ · Q3

Quake III: q3ded, ioquake3, Vanilla, OSP, CPMA и защита сервера

Чем оригинальный q3ded отличается от ioq3ded и Q3SDC, что выбрать для Vanilla, OSP и CPMA и где начинается настоящая DDoS-защита.

MadWars · 28.07.2026

Quake III: q3ded, ioquake3, Vanilla, OSP, CPMA и защита сервера

В разговорах о Quake III словом «движок» часто называют сразу всё: оригинальную игру, OSP, CPMA и современные исполняемые файлы. Из-за этого легко смешать несовместимые вещи или решить, что установка мода автоматически обновила сетевую часть сервера. На практике система состоит из нескольких слоёв.

  • Игровые данные — легальный pak0.pk3 и официальные файлы обновления в каталоге baseq3.
  • Движок — программа, которая запускает клиент или выделенный сервер: оригинальный Quake III 1.32c, ioquake3, Quake3e или CNQ3.
  • Мод и правила — Vanilla/baseq3, OSP, CPMA и другие каталоги, выбираемые через fs_game.
  • Конфигурация — серверные CVar, ротация карт, пароли, лимиты и настройки конкретного мода.

Замена движка не превращает Vanilla в CPMA, а установка OSP не исправляет уязвимости старого q3ded. Для публичного сервера важны оба слоя: совместимый современный движок и правильно настроенный мод.

Vanilla, или VQ3

Vanilla Quake 3 — базовые правила игры из baseq3: стандартная физика, оружие, предметы и режимы id Software. Это не отдельный современный движок. Один и тот же Vanilla-сервер можно запустить старым q3ded, ioq3ded или серверной сборкой Quake3e.

Оригинальный исполняемый файл 1.32c полезен для проверки исторической совместимости, но для нового публичного сервера его лучше не выбирать. Современные проекты сохранили совместимость и получили исправления ошибок, поддержку актуальных систем и дополнительные сетевые защиты.

q3ded — оригинальный выделенный сервер

q3ded означает Quake III Dedicated Server. Это оригинальная серверная программа эпохи id Software, а не мод и не набор игровых правил. Она запускает карты и игровую QVM без окна рендера, звука и локального игрока. В старых Linux-дистрибутивах файл обычно назывался q3ded; под Windows сервер также часто запускали через quake3.exe +set dedicated 2.

Для работы q3ded нужны те же игровые данные:

  • легальный baseq3/pak0.pk3;
  • официальные файлы обновления pak1.pk3–pak8.pk3;
  • каталог мода, например osp, если используется +set fs_game osp;
  • отдельный серверный CFG.

Типичная историческая строка запуска:


./q3ded +set dedicated 2 +set net_port 27960 +set fs_game osp +exec server.cfg

Здесь dedicated 2 означает публичный интернет-сервер, net_port задаёт игровой UDP-порт, fs_game выбирает мод, а exec загружает конфигурацию. Для Vanilla параметр fs_game osp убирают, и сервер работает с baseq3.

q3ded, ioq3ded и Q3SDC — не одно и то же

  • q3ded — старый оригинальный выделенный сервер Quake III.
  • ioq3ded — современный выделенный сервер проекта ioquake3, происходящий от опубликованного исходного кода id Software.
  • Серверная сборка Quake3e — ещё одна современная замена оригинальному q3ded.
  • Q3SDC — сторонняя историческая программа для записи и воспроизведения серверных демонстраций; она не является обычной заменой движка.

Формат CFG и основные параметры у этих серверов похожи, поэтому старую конфигурацию часто можно взять за основу. Но переносить её целиком опасно: в архивных CFG встречаются отключённый sv_floodProtect, слабые RCON-пароли, устаревшие master server и значения памяти, рассчитанные на компьютеры начала 2000-х.

Когда q3ded ещё может понадобиться

  • Для воспроизведения исторического окружения и проверки старого мода.
  • Для точного сравнения поведения с финальной официальной версией Quake III.
  • Когда конкретная нативная библиотека мода не запускается на современной 64-битной сборке.

В таком случае q3ded лучше держать на отдельном тестовом узле без административных прав и без доступа к сайту или базе. Для постоянного публичного сервера предпочтительнее ioq3ded, Quake3e или CNQ3: оригинальная программа больше не сопровождается и не получает исправлений сетевой безопасности.

ioquake3

ioquake3, иногда называемый «io-quake», — свободное продолжение открытого исходного кода Quake III. Это полноценный современный клиент и серверный движок, но не бесплатная копия самой игры: для Quake III Arena по-прежнему нужен легальный pak0.pk3. Файлы официального обновления pak1.pk3–pak8.pk3 также помещаются в baseq3.

Основные исполняемые файлы:

  • ioquake3.x86_64 или ioquake3.x86_64.exe — клиент с графикой и возможностью открыть локальный сервер;
  • ioq3ded.x86_64 или ioq3ded.x86_64.exe — выделенный сервер без графического клиента;
  • baseq3 — Vanilla Quake III;
  • +set fs_game osp — запуск установленного мода OSP;
  • +set dedicated 2 — публичный интернет-сервер, публикуемый через master server;
  • +set dedicated 1 — LAN-сервер или подключение напрямую по адресу.

ioquake3 сетево совместим с финальным Quake III 1.32c, и большинство модов для 1.32c работает на нём без изменений. Старые моды для 1.16n — отдельный случай: исходный код той версии id Software не публиковала, поэтому обещать совместимость нельзя.

Важная особенность современных сборок ioquake3 — усиленный сетевой протокол, затрудняющий UDP spoofing. За него отвечают com_protocol и com_legacyprotocol: первый обозначает защищённый протокол, второй сохраняет подключение старых клиентов. Если отключить legacy-протокол, защита строже, но оригинальный клиент 1.32c подключиться не сможет. Значения следует брать из документации и текущей сборки, а не копировать вслепую из старого CFG.

Для карт и модов ioquake3 поддерживает перенаправление загрузки через sv_dlURL. Практичная схема — sv_allowDownload 1 вместе с HTTP-каталогом и отключением медленной передачи PK3 через игровой UDP. Сам sv_dlURL должен указывать на каталог, где структура baseq3 и каталогов модов совпадает с сервером.

Пример запуска Vanilla-сервера под Windows:


ioq3ded.x86_64.exe +set dedicated 2 +set net_port 27960 +set sv_pure 1 +exec server.cfg

Пример запуска OSP:


ioq3ded.x86_64.exe +set dedicated 2 +set net_port 27961 +set fs_game osp +exec server.cfg

Официальное руководство администратора ioquake3 описывает установку под Linux, Windows и macOS, работу rcon, pure-режим, порты и HTTP-загрузки.

Когда выбирать ioquake3

  • Нужна максимально понятная и консервативная база, близкая к открытому коду id Software.
  • Важна подробная официальная документация для администратора.
  • Требуется Vanilla или старый мод Quake III 1.32c, который уже проверен с ioquake3.
  • Нужен один проект и для клиента, и для выделенного сервера на разных операционных системах.

ioquake3 не содержит PunkBuster и не обещает автоматическую защиту от читов. Администратору всё равно нужны журналы, серверные демозаписи, наблюдение за матчами и инструменты конкретного мода.

Quake3e

Quake3e — современный движок Quake III с упором на производительность, совместимость со старыми модами и усиление сервера. В проекте отдельно заявлены улучшенная защита серверной части от DoS, уменьшенное потребление памяти и повышенные лимиты файловой системы.

Для нового публичного Vanilla- или OSP-сервера Quake3e выглядит практичным первым кандидатом. Однако старые QVM и нативные библиотеки модов всё равно нужно проверять на тестовом экземпляре: совместимость движка не делает двадцатилетний мод современным и безопасным.

OSP

Orange Smoothie Productions, или OSP, — мод, а не движок. Он добавляет турнирное управление матчем, команды ready, удобное наблюдение, статистику и набор соревновательных настроек. Финальная ветка Quake III OSP относится к исторической эпохе игры и больше не получает современных исправлений.

OSP имеет смысл сохранять для аутентичных матчей и старых конфигураций. Сервер лучше запускать на совместимой современной серверной сборке, использовать отдельный каталог osp, не давать процессу административных прав и заранее проверять все PK3 и QVM. Практические команды собраны в материалах «Быстрый старт матча OSP» и «Справочник команд OSP».

Challenge, CQ3, CPMA и CNQ3

Здесь названия особенно легко перепутать.

  • Challenge Quake 3 (CQ3) — исторический проект и набор изменений правил. Найденная редакция 2002 года описана отдельно в архиве правил CQ3.
  • Challenge ProMode Arena (CPMA) — соревновательный мод Quake III с собственными режимами, физикой и развитой турнирной частью.
  • Challenge Quake 3 (CNQ3) — современный официальный движок, рекомендуемый авторами CPMA. Сокращение CNQ3 помогает отличить его от старых описаний правил CQ3.

На официальной странице загрузок актуальной стабильной парой указаны CPMA 1.53 и CNQ3 1.53, выпущенные в ноябре 2023 года. Для нового CPMA-сервера разумнее начинать с этой пары, а не собирать окружение вокруг оригинального EXE 1.32c.

Что выбрать

  • Классический Vanilla-сервер — Quake3e или ioquake3 плюс baseq3.
  • Исторический OSP — современный совместимый движок плюс OSP; сначала полный тест подключения, голосований, загрузок и статистики.
  • Актуальный CPMA — CPMA 1.53 вместе с CNQ3 1.53 и документацией PlayMorePromode.
  • Старый CQ3 или экспериментальные сборки — отдельный архивный стенд, не основной публичный сервер.
  • Оригинальный q3ded — только когда точная историческая совместимость важнее исправлений и защиты.

Если на одном хосте нужны разные правила, безопаснее держать отдельные процессы, каталоги конфигурации, журналы и UDP-порты: например, 27960 для Vanilla, 27961 для OSP и 27962 для CPMA.

От чего защищает сам движок

Quake III работает по UDP. Сервер должен отвечать на служебные запросы до полноценного подключения игрока, поэтому старые реализации могут использоваться для флуда, подмены адреса и отражённых атак. CISA прямо включает Quake Network Protocol в перечень протоколов, которые могут участвовать в UDP amplification-атаках.

Обновлённый движок, проверка пакетов и встроенные ограничения помогают при:

  • потоке некорректных или слишком частых игровых запросов;
  • попытках перегрузить один процесс разбором пакетов;
  • части атак с подменённым адресом источника;
  • обычном command/chat flood от подключённого клиента.

sv_floodProtect 1 стоит держать включённым, но эта CVar не является полноценной DDoS-защитой. Она ограничивает часть действий на уровне игры и не может освободить уже забитый интернет-канал.

От чего настройки сервера не спасут

Если входящий поток больше пропускной способности порта или канала дата-центра, пакеты не успеют дойти до локального firewall. В этой ситуации не помогут ни sv_floodProtect, ни смена порта, ни Fail2ban, ни более быстрый процессор. Фильтрация должна происходить выше по сети.

Рекомендации CISA по объёмным DDoS-атакам советуют заранее согласовать действия с ISP или upstream-провайдером и проверить, способен ли он выдерживать и очищать большой поток. Для игрового UDP это может быть постоянная или включаемая по запросу очистка трафика, сетевые ACL, перенаправление через защищённую площадку либо временный blackhole как крайняя мера.

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

  • Использовать поддерживаемую сборку Quake3e, ioquake3 или CNQ3, а не старый EXE из случайного архива.
  • Открыть наружу только нужные UDP-порты игры; SSH, панель, база данных и веб-админка не должны становиться доступнее из-за игрового сервера.
  • Запускать каждый игровой процесс от отдельного непривилегированного пользователя.
  • Включить sv_pure 1, если сервер не рассчитан на произвольные клиентские файлы.
  • Оставить sv_floodProtect 1.
  • Задать длинный уникальный rconPassword, не публиковать рабочий пароль в CFG и старых архивах. По возможности администрировать через VPN или ограниченный список адресов.
  • Большие PK3 отдавать через отдельный HTTP-каталог или штатную систему загрузки современного клиента, а не превращать игровой UDP-процесс в файловый сервер.
  • Отделить игровой UDP от сайта, базы статистики и панели хотя бы правилами доступа, а при серьёзных требованиях — разными адресами или узлами.
  • Собирать метрики канала, packets per second, CPU и журналы. Без них невозможно отличить сетевое насыщение от ошибки мода или флуда запросами.
  • Заранее узнать аварийный контакт хостера и условия его защиты именно для UDP-игр.

Минимальная часть серверного CFG может выглядеть так:


seta sv_pure "1"
seta sv_floodProtect "1"
seta rconPassword "ЗАМЕНИТЬ_НА_ДЛИННЫЙ_УНИКАЛЬНЫЙ_ПАРОЛЬ"
seta g_log "games.log"
seta g_logSync "0"

g_logSync 0 подходит для обычной работы и создаёт меньше дисковой нагрузки. Значение 1 полезно временно при диагностике или когда внешней статистике критична немедленная запись каждой строки, но его влияние нужно проверить под нагрузкой.

Не следует без измерений копировать универсальные правила iptables или nftables с жёстким лимитом пакетов в секунду. Они могут отрезать master-запросы, браузеры серверов и настоящих игроков, особенно во время смены карты. Лимиты подбирают по нормальному профилю конкретного сервера и желательно применяют на внешнем фильтре, где атака ещё не заняла локальный канал.

Что делать во время атаки

1. Проверить, заполнен ли входящий канал. Если да, сразу обращаться к хостеру: локальная настройка уже не вернёт пропускную способность. 2. Если канал свободен, но один процесс съедает CPU, сохранить время события, журналы, типы запросов и короткий сетевой дамп без публикации адресов игроков. 3. Обновить движок до поддерживаемой версии и воспроизвести проблему на тестовом экземпляре. 4. Передать хостеру порт, протокол, packets per second, полосу и образцы вредоносного трафика; запросить upstream ACL или очистку. 5. Временный blackhole использовать только как аварийную остановку: он гасит атаку вместе с доступностью сервера.

Итог

Для MadWars логичная базовая схема такая: Vanilla и OSP проверять на Quake3e либо ioquake3, а CPMA запускать на рекомендованной связке CPMA/CNQ3. Встроенные защиты, sv_floodProtect, закрытые служебные порты и сильный RCON уменьшают прикладной флуд и риск взлома. Настоящая объёмная DDoS-защита начинается у провайдера, поэтому её нужно выбирать и проверять до атаки, а не после заполнения канала.

Дополнительные материалы: обзор актуальных клиентов и модов и запуск выделенного сервера Quake III под Windows.