Волшебной кнопки нет: античит на CS2 сервере — это не один плагин, а слоёная оборона из VAC, ограничений на вход, банлистов, записи демо и живых модераторов. Настройка каждого слоя занимает от пяти минут до вечера, но вместе они отсекают подавляющую часть публичных читов и, что важнее, делают возвращение забаненного дорогим. Разберём, что реально работает на выделенном сервере, а что — плацебо.
Что вы можете и чего не можете
Начнём с честного разграничения, потому что оно экономит время.
Серверный админ не может сканировать память клиента и детектить читы как VAC или Faceit AC. Всё, что доступно, — анализ поведения, ограничения на вход и ручной разбор.
Серверный админ может: не пустить свежесозданный аккаунт, забанить по SteamID навсегда, записать демо каждого матча, ограничить то, что клиент имеет право менять на сервере, и вести общую базу банов на несколько серверов.
Именно поэтому у любого живого проекта в основе — модерация, а плагины лишь снижают её нагрузку.
| Слой | Чем делается | Что отсекает |
|---|---|---|
| 1. VAC и GSLT | +sv_setsteamaccount, sv_cheats 0, sv_pure 1 | Известные читы, которые ловит VAC |
| 2. Фильтр на входе | Плагин CounterStrikeSharp и Steam Web API | Свежие и покупные аккаунты |
| 3. Баны | banid и writeid, админ-плагин с MySQL | Повторный вход забаненных |
| 4. Демо | GOTV, tv_autorecord 1, MatchZy | Споры «показалось» — есть доказательства |
| 5. Модерация | Люди, репорты, дежурства | Всё, что пропустила автоматика |
Слой 1: VAC и GSLT — базовая настройка античита на CS2 сервере
VAC работает на серверах с корректно зарегистрированным аккаунтом сервера. Без GSLT-токена сервер либо не виден публично, либо работает в урезанном режиме — и защита от известных читов до него не доходит.
Токен создаётся на странице управления игровыми серверами Steam и указывается в параметрах запуска:
+sv_setsteamaccount ВАШ_GSLT_ТОКЕНПроверьте базовые переменные в server.cfg:
sv_cheats 0
sv_lan 0
sv_pure 1
sv_consistency 1sv_cheats 0 кажется очевидным, но на серверах, где админы гоняют тренировки, его периодически забывают вернуть — и следующие два часа паблик играет с включёнными читами официально. Держите тренировочные настройки в отдельном конфиге, как описано в статье про server.cfg.
Слой 2: фильтр на входе
Самая эффективная мера против одноразовых аккаунтов — не пускать их. Читер, которого забанили, покупает новый аккаунт за копейки; сделайте так, чтобы этот аккаунт не проходил проверку.
Что обычно проверяют плагины уровня Steam-рестрикта (работают поверх CounterStrikeSharp и Steam Web API):
- количество часов в CS2;
- уровень Steam-профиля;
- открытость профиля (закрытый профиль — типичный признак смурф-аккаунта);
- наличие Prime-статуса;
- дату создания аккаунта;
- наличие VAC-банов в других играх.
Порог вроде «100 часов в CS2 и открытый профиль» отсекает большую часть покупных аккаунтов и почти не задевает нормальных игроков. Ставить 500 часов — уже вредно: вы отрежете новичков, которых сами же пытаетесь набрать.
Для работы такого плагина нужен ключ Steam Web API, он выпускается на аккаунт разработчика Steam бесплатно.
Слой 3: баны
Встроенные банлисты CS2 никуда не делись и работают без плагинов.
Забанить и сохранить:
banid 0 <userid> kick
writeidaddip 0 <ip>
writeipСписки лежат в game/csgo/cfg/banned_user.cfg и banned_ip.cfg. Подключаются при старте:
exec banned_user.cfg
exec banned_ip.cfgНоль в banid 0 означает вечный бан; число — минуты.
Минусы у этого способа очевидные: список локальный, синхронизировать его между серверами руками невозможно, а IP-баны бьют по динамическим адресам и целым подсетям. Для одного сервера сойдёт, для сети — нет.
Для сети серверов используют админ-плагины с базой в MySQL (тот же класс решений, что и CS2-SimpleAdmin): бан ставится на одном сервере и применяется на всех, с историей, причиной и сроком. Как выдавать модераторам права на бан, разобрано в статье про выдачу прав администратора.
Слой 4: демо и разбор
Без записи вы не докажете ничего и будете банить по жалобам в Discord. Включите GOTV и автозапись:
tv_enable 1
tv_autorecord 1
tv_delay 90tv_delay 90 заодно закрывает стрим-снайпинг: зрители видят игру с задержкой полторы минуты.
На матчевом сервере запись демо делает MatchZy автоматически, отдельно настраивать не нужно.
Практика разбора: смотрите демо от первого лица подозреваемого, обращайте внимание не на «красивые» фраги, а на движение прицела через стены и на реакцию раньше появления модели. Хороший игрок предугадывает позиции, читер смотрит в них до звука.
Демо копятся быстро — заведите автоочистку старше 30 дней через планировщик задач, иначе диск закончится раньше читеров.
Слой 5: живая модерация
Ни один плагин не заменит человека на сервере в прайм-тайм. Что помогает:
- Кнопка жалобы прямо в игре (плагин с меню репорта), а не «пишите в Discord» — жалоб станет в разы больше, и вы увидите реальную картину.
- Дежурство модераторов по расписанию в часы пик.
- Иммунитет и разграничение флагов, чтобы модератор не мог банить админов и наоборот.
- Прозрачный публичный банлист: люди видят, что баны реальные, и жалуются охотнее.
Набрать и удержать команду — отдельная задача, про неё есть материал в блоге: как набрать команду модераторов.
Чего делать не стоит
- Ставить «античит-плагины» из непроверенных источников. Плагин работает на сервере с полными правами. Скачанная с форума сборка без исходников — это ваш сервер в чужих руках.
- Массово банить по IP. Один провайдер, одна подсеть — и вы отрезали половину города.
- Верить автоматике на слово. Плагины, банящие за «подозрительное aim-поведение», дают ложные срабатывания на хороших игроках. Автобан по эвристике = потеря аудитории.
- Оставлять
sv_cheats 1после тренировки. Проверьте прямо сейчас.
Частые вопросы
Можно ли поставить Faceit AC или ESEA на свой сервер?
Нет, это клиентские античиты закрытых платформ. Для приватных матчей ближайший аналог — вайтлист по SteamID: на сервер попадают только известные вам люди. Такой режим поддерживает MatchZy при загрузке матча из JSON.
VAC банит на моём сервере?
VAC-бан выдаётся Valve и действует глобально, а не по вашей инициативе. Ваш сервер лишь сообщает данные в общую систему. Рассчитывать на VAC как на основную защиту не стоит: между появлением чита и детектом проходят недели.
Помогает ли sv_pure против читов?
sv_pure 1 ограничивает подмену клиентских ресурсов — текстур и моделей. Против внешних читов не работает совсем, но убирает часть визуальных хаков вроде прозрачных моделей. Ставить стоит, полагаться — нет.
Коротко
Настройка защиты работает слоями: GSLT и корректные переменные сервера, фильтр по Steam-профилю на входе, нормальные баны с общей базой, обязательная запись демо и живые модераторы. Один слой без остальных пробивается за вечер, все вместе — делают ваш сервер невыгодной целью.
Часть работы снимает хостинг: защита от DDoS на уровне сети и бэкапы по расписанию для отката конфига после инцидента есть во всех тарифах.