На выделенном сервере с BattlEye или Easy Anti-Cheat вы контролируете на удивление мало: включён ли античит, несколько настроек вокруг него и - только у BattlEye - локальный бан-лист, интерфейс RCon и набор фильтров скриптов в некоторых играх. Само обнаружение, сигнатуры и все глобальные баны принадлежат разработчику античита и разработчику игры. Вы не можете разбанить того, кого забанили они, не можете узнать, почему игрока кикнуло, кроме короткого сообщения, и не можете добавить собственные правила обнаружения. Точное понимание того, где проходит эта граница, отличает нормальную настройку от вечера, потраченного на поиск несуществующих параметров.
В этой статье - что каждая система делает на сервере, какие переключатели есть в разных играх, какие файлы ваши, как устроены баны на каждом уровне и какой чит ни одна система никогда не остановит. Именно там в дело вступает ваша собственная модерация.
Что делает античит уровня ядра и при чём тут сервер#
BattlEye и Easy Anti-Cheat (EAC, теперь часть Epic Online Services) - прежде всего клиентские системы. Основная часть работает на компьютере игрока, в современных версиях на уровне ядра, и ищет известное читерское ПО, вмешательство в память, внедрённые модули и неподписанные драйверы. Серверная часть сравнительно тонкая: она проверяет, что у каждого подключающегося клиента запущен античит, передаёт отчёты клиента на бэкенд разработчика античита и кикает клиента, когда бэкенд так решил.
У такой архитектуры есть три следствия, которые стоит проговорить прямо:
- Обнаружение происходит не у вас. Ваш сервер ничего не сканирует. Он лишь исполняет вердикт, вынесенный на машине игрока и на серверах разработчика античита.
- Сервер может только требовать античит, но не улучшить его. Не существует «строгого режима», который можно купить или настроить. Все серверы на одной сборке игры получают одни и те же правила обнаружения.
- Отключение - это полностью. Сервер с выключенным античитом принимает клиентов, у которых он вообще не запущен, а значит, можно всё.
Valve Anti-Cheat (VAC) - третья система, которая встретится вам в играх на Source и в CS2. VAC работает иначе - отложенные баны от Valve, никакого драйвера ядра, никакого взаимодействия с сервером, кроме того, что сервер помечен как «secure», - но ответ на вопрос о том, кому что принадлежит, тот же: решает Valve, а вы выбираете, участвует ли в этом ваш сервер.
Какие игры используют какую систему#
Это со временем меняется, и разработчики иногда переходят к другому поставщику, поэтому считайте таблицу отправной точкой и проверяйте актуальную серверную документацию игры, прежде чем на неё полагаться.
| Игра | Античит | Переключатель на сервере |
|---|---|---|
| Arma 3 | BattlEye | BattlEye = 1; в server.cfg |
| DayZ | BattlEye | По умолчанию включён на публичных серверах |
| Arma Reforger | BattlEye | battlEye в JSON-конфиге |
| ARK: Survival Evolved | BattlEye | Параметр запуска -NoBattlEye отключает его |
| 7 Days to Die | EAC | EACEnabled в serverconfig.xml |
| Rust | EAC | server.secure (включён по умолчанию) |
| CS2, TF2, GMod, L4D2 | VAC | Параметр запуска -insecure отключает его |
О некоторых из них стоит сказать по предложению. У Arma 3 и DayZ самая глубокая серверная интеграция BattlEye, с фильтрами и RCon, о которых ниже. 7 Days to Die - типичный случай, когда античит отключают сознательно: моды с собственным кодом (DLL-моды) не загружаются при включённом EAC, а модлеты только на XML загружаются - остальное об этом файле есть в статье настройки сервера 7 Days to Die. Комьюнити-серверы Rust запускают EAC как само собой разумеющееся; сервер Rust с server.secure false - курьёз, на который большинство игроков не пойдёт.
В играх на Source VAC включён, если сервер не запущен с -insecure или если sv_lan 1 не делает его LAN-сервером. Небезопасный сервер не показывается игрокам с VAC обычным образом, а аккаунты с VAC-баном могут на него заходить, - на публичном сервере это редко то, что вам нужно.
Переключатели, которые действительно ваши#
Вот полный список решений по античиту, которые в большинстве игр принимаете вы:
- Включён или выключен. Самый важный выбор. Для любого публичного сервера оставляйте его включённым. Отключайте только для закрытой группы, которой нужны моды, блокируемые античитом, и смиритесь с тем, что теперь вы полагаетесь на доверие.
- Проверка подписей и файлов в играх, где она есть. Это не сам античит, но работает рядом с ним, и в некоторых играх значит больше.
- Лимиты пинга и таймаутов, которые BattlEye открывает в некоторых играх.
- Ваш локальный бан-лист и доступ к RCon в играх с BattlEye.
- Фильтры скриптов в играх семейства Arma.
В Arma 3 нужная часть server.cfg выглядит так:
BattlEye = 1; // require BattlEyeverifySignatures = 2; // reject clients with unsigned or mismatched addonskickDuplicate = 1; // kick a second connection from the same IDallowedFilePatching = 0; // clients may not load loose files over packed dataverifySignatures = 2 - настройка, которая больше всего делает против бытового читерства в Arma 3. Она требует, чтобы каждый аддон, загружаемый клиентом, был подписан ключом, лежащим на сервере в папке keys, и не даёт игроку загрузить изменённый PBO, который сервер никогда не одобрял. BattlEye ловит читерское ПО, проверка подписей - читерский контент. Остальное об этом файле - в статье server.cfg и миссии Arma 3.
BattlEye на сервере: файлы, RCon и фильтры#
Серверная часть BattlEye живёт в папке BattlEye, обычно внутри каталога профиля сервера. Редактируемый файл - BEServer_x64.cfg (или BEServer.cfg на старых 32-битных сборках). Он короткий:
RConPassword a-long-generated-passwordRConPort 2306MaxPing 250RConPassword и RConPort включают собственную удалённую консоль BattlEye - протокол поверх UDP, отдельный от игрового. MaxPing кикает игроков с пингом выше заданного, и это грубее, чем кажется: игрока со скачком пинга выкинет посреди боя, поэтому ставьте значение с запасом или не задавайте его вовсе. Некоторые сборки при запуске переписывают этот файл с суффиксом _active_ в имени; редактируйте исходный файл, а не сгенерированный.
Через BattlEye RCon с серверами Arma и DayZ общается почти любой сторонний инструмент администрирования. Команд немного, и их стоит знать напрямую:
| Команда | Действие |
|---|---|
players | Список игроков с номером, IP, пингом и BattlEye GUID |
kick <number> [reason] | Кик по номеру игрока |
ban <number> [minutes] [reason] | Бан подключённого игрока, 0 или без значения - навсегда |
addBan <GUID or IP> [minutes] [reason] | Бан того, кто сейчас не подключён |
removeBan <ban number> | Снимает бан по его позиции в bans |
bans | Показывает бан-лист с номерами |
writeBans / loadBans | Сохраняет список на диск / перечитывает его |
say -1 <message> | Сообщение всем |
loadScripts / loadEvents | Перечитывает файлы фильтров после правки |
К BattlEye RCon применимы те же правила, что и к любой удалённой консоли: длинный случайный пароль, порт открыт только если он действительно нужен инструменту, и доступ у как можно меньшего числа людей. Логика объяснена в статье безопасный RCON, а инструменты для DayZ - в статье инструменты администратора DayZ и BattlEye RCon.
BattlEye GUID в выводе players - не секретный идентификатор. Он вычисляется из SteamID64 игрока - это MD5-хеш байтов BE, за которыми идёт 64-битный ID, - поэтому инструмент для банов может получить его из SteamID, а бан по GUID по сути равен бану по аккаунту Steam.
Фильтры скриптов в Arma
В Arma 3 BattlEye умеет ещё и фильтровать скриптовый трафик: файлы вроде remoteexec.txt, createvehicle.txt, publicvariable.txt и setvariable.txt в папке BattlEye содержат правила, которые пишут в лог или кикают, когда клиент отправляет что-то, подходящее под шаблон. Хорошо сделанные фильтры останавливают большой класс атак с внедрением скриптов, которые компонент уровня ядра никогда бы не увидел, потому что «чит» здесь - это обычная игровая команда, отправленная клиентом, который не должен был её отправлять.
Фильтры - это ещё и самый простой способ сломать миссию. Фильтр, достаточно строгий, чтобы останавливать внедрённый код, начнёт кикать честных игроков, как только миссия или мод сделает что-то, чего автор фильтра не предусмотрел. Рабочий подход такой: возьмите фильтры, опубликованные для вашей миссии или набора модов, запустите их в режиме только логирования, сыграйте несколько сессий, прочитайте, кого бы они кикнули, и только после этого включайте кики. loadScripts и loadEvents перечитывают их без перезапуска.
Как устроены баны на каждом уровне#
В игре с античитом есть три вида банов, и путаница между ними порождает большую часть растерянных обращений, которые владельцы серверов отправляют не туда.
Ваш только нижний блок.
- Глобальные баны античита выдаёт BattlEye или разработчик через EAC; они действуют на всех серверах этой игры, и снять их вы не можете. Игрок видит сообщение о глобальном бане. Если он считает, что это ошибка, апелляция идёт к поставщику античита или разработчику, а не к вам, и стоит сказать ему об этом, не вступая в дальнейшее обсуждение.
- Игровые баны в играх Valve (VAC и game bans) выдаёт Valve. Правило то же: снимать их не вам, и сервер с VAC такой аккаунт не пустит.
- Ваши локальные баны целиком ваши. В играх с BattlEye они лежат в
bans.txtв папке BattlEye, по строке на бан: GUID или IP, срок окончания (или-1для постоянного) и причина. В играх с EAC и VAC они хранятся в собственном бан-листе игры, который у каждой игры свой.
Локальный бан хорош ровно настолько, насколько хорош идентификатор за ним. Баны по GUID и Steam следуют за аккаунтом, а упорный читер просто заводит новый. IP-баны привязаны к адресу, которым может пользоваться целая семья или университет и который меняется при следующей перезагрузке роутера. Какой идентификатор банить и что делать со вторым аккаунтом, разобрано в статье читеры и бан-листы.
Чего античит не поймает никогда#
Это самое важное для ваших ожиданий. Античит уровня ядра хорошо ловит известное читерское ПО на клиенте. По своему устройству он не способен поймать:
- Скрытое читерство с хорошими читами. Приватные, хорошо финансируемые читы месяцами уходят от обнаружения. Игрок с аккуратным аимботом и естественной манерой игры может долго оставаться незамеченным.
- Аппаратные и внешние читы. Устройства, которые считывают экран вторым компьютером, или модифицированные устройства ввода вообще не касаются процесса игры.
- Информацию извне игры. Кто-то смотрит стрим вашего сервера, тиммейт сидит в голосовом канале другой команды или друг подсказывает позиции.
- Эксплойты самой игры. Проваливание под карту, баги с дюпом, злоупотребление сломанной логикой мода. Игра это допускает, поэтому античит видит обычного клиента, который делает обычные вещи.
- Злоупотребления на стороне сервера. Администратор с RCon спавнит предметы друзьям. У античита нет мнения о вашей команде.
- Гриферство и токсичность. Это вообще не читерство в понимании античита.
Именно поэтому античит - это базовый уровень, а не решение. Поверх него вам всё равно нужны логи, по которым можно разобрать произошедшее, администраторы, которые наблюдают за игрой, понятный свод правил и процесс банов, который выдерживает проверку. Организационная сторона описана в статье правила сервера, модерация и команда, а сторона багов, а не читеров, - в статье эксплойты и краш-баги игровых серверов.
Моды, античит и компромисс закрытого сервера#
Самая частая причина, по которой владелец сервера трогает переключатель античита, - моды. Правила зависят от игры, но схема повторяется:
- Моды, меняющие только данные, обычно работают с включённым античитом. Изменения конфигурации, XML-модлеты в 7 Days to Die, подписанный и проверенный контент из Workshop в Arma и DayZ.
- Моды, внедряющие код в клиент, обычно не работают. DLL-моды 7 Days to Die, клиентские фреймворки, которые цепляются к процессу игры, всё, что для античита выглядит в точности как чит, потому что технически это тот же приём.
- Серверные моды для античита невидимы. Плагины Oxide или Carbon в Rust, серверные скрипты DayZ, инструменты администрирования - ничто из этого не касается клиентов, поэтому античит о них не знает и знать не хочет.
Если вашей группе нужен клиентский мод с кодом, который античит блокирует, честных вариантов два: запустить такой сервер с выключенным античитом и паролем или белым списком, чтобы заходили только знакомые вам люди, или отказаться от мода. Чего делать не стоит, так это держать публичный сервер в списке с отключённым античитом, потому что он понадобился одному моду. Такой сервер становится местом назначения именно для тех игроков, которых забанили везде.
Серверные моды для администрирования и логирования, напротив, стоит иметь в любой игре с античитом. Они дают доказательства, которых античит не даст никогда: кто кого убил и откуда, кто что подобрал, кто что сказал. В DayZ это обычно инструмент администратора, читающий админ-лог сервера, в Rust - плагины для логирования и репортов.
Работа на арендованном сервере#
Ни BattlEye, ни EAC не требуют особого хостинга. Серверные компоненты поставляются вместе с файлами выделенного сервера и обновляются вместе с ними. Важно вот что:
- Порты. BattlEye RCon нужен собственный UDP-порт, если вы пользуетесь внешними инструментами. На RE:NODE в каждом тарифе указано, сколько портов выделено, и вы можете добавить порт на вкладке Network и указать его в
RConPort. Если внешними RCon-инструментами вы не пользуетесь, не задавайте его и работайте через консоль панели. - Обновления. Версии античита привязаны к версиям игры. Сервер, который обновился с опозданием, получает отказы клиентам, или наоборот; в Arma и DayZ обновите сервер, когда обновилась игра, и проблема исчезнет. Как делать это в тихий час, описано в статье расписания перезапусков, которые помогают.
- Учётные данные. Для установки Arma 3, DayZ и 7 Days to Die на RE:NODE нужен вход в Steam, который хранится в том виде, в каком вы его ввели, поэтому используйте запасной аккаунт Steam, а не тот, на котором играете. Сервер создаётся сразу, а установка ждёт на вкладке Setup, пока вы не введёте данные.
- Логи. BattlEye пишет собственные логи в папку BattlEye, и это первое место, куда стоит смотреть, когда игроки жалуются на кик с сообщением BattlEye.
Решение проблем с киками и ошибками античита#
«BattlEye: Client not responding». Служба BattlEye на клиенте перестала общаться с сервером. Обычно проблема на стороне игрока: файрвол, упавшая служба BE или очень плохое соединение. Если это случается у всех игроков сразу, файлы BattlEye на сервере не соответствуют версии игры - обновите сервер.
«BattlEye: Global Ban». Поставщик античита забанил аккаунт. С вашей стороны делать нечего.
Игроков кикает за script restriction в Arma. Сработал фильтр. В сообщении о кике есть файл фильтра и номер строки; прочитайте эту строку, решите, был ли это чит или ваша миссия, и поправьте правило или добавьте исключение.
Не прошла проверка подписей в Arma. У клиента есть аддон, для которого на сервере нет ключа, или другая версия мода. Убедитесь, что сервер и клиент загружают одни и те же версии модов и что соответствующий .bikey лежит в keys.
EAC кикает всех игроков в 7 Days to Die после установки мода. В моде есть собственный код. Либо удалите его, либо выставьте EACEnabled в false - и если выбрали второе, поставьте на сервер пароль.
После обновления игры никто не может зайти. Клиентский античит обновился вместе с игрой, а сервер нет. Обновите сервер; на сервере с модами обновите и моды.
FAQ#
Можно ли забанить кого-то через BattlEye так, чтобы он не мог зайти ни на один сервер?
Нет. Ваши баны действуют только на вашем сервере. Глобальные баны выдают BattlEye или разработчик на основе собственного обнаружения. В некоторых играх можно сообщить о читере поставщику античита с доказательствами, но прямого способа запустить глобальный бан у вас нет.
Можно ли разбанить игрока, которого глобально забанили по ошибке?
Нет, и не пытайтесь обойти это, отключив античит. Игрок подаёт апелляцию поставщику античита или разработчику игры. Вы можете подсказать, куда обращаться, и на этом ваше участие заканчивается.
Снижает ли античит производительность сервера?
Совсем немного. Серверные компоненты почти не нагружают сервер по сравнению с симуляцией игры. Фильтры скриптов BattlEye в Arma добавляют некоторую нагрузку на загруженном сервере со сложными фильтрами, но редко настолько, чтобы это было заметно.
Сервер с выключенным античитом автоматически полон читеров?
Нет, если на него никто не может зайти. Закрытый сервер с паролем или белым списком для группы, где все друг друга знают, - вполне разумный способ играть с модами, которые блокирует античит. Проблема - это публичный сервер с выключенным античитом.
Конфликтуют ли серверные плагины с BattlEye или EAC?
Как правило, нет. Серверный код никогда не касается клиента, а античит смотрит только туда. Конфликты возникают из-за клиентских модов, которые цепляются к процессу игры.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.