TeaHost
Counter-Strike 2cs2rconадминистрированиеконсоль4 мин. чтения

RCON на сервере CS2 — настройка и команды

Как настроить RCON на сервере CS2: флаг usercon, rcon_password, подключение через консоль игры и внешние клиенты, полезные команды и защита от подбора пароля

Кратко

RCON на сервере CS2 требует флаг -usercon в параметрах запуска и rcon_password в server.cfg; работает по TCP на игровом порту, обычно 27015. Из консоли игры подключаются командами rcon_address ip:27015 и rcon_password, дальше rcon status, rcon kickid, rcon banid с обязательным writeid и rcon changelevel. Подбор пароля ограничивают конвары sv_rcon_maxfailures и sv_rcon_banpenalty.

RCON на сервере CS2 — способ выполнять серверные команды, не имея доступа к машине: сменить карту, кикнуть игрока, перезагрузить конфиг, поставить паузу в матче. Работает прямо из игровой консоли, так что администратору не нужен ни SSH, ни панель — достаточно пароля. И именно поэтому к паролю стоит относиться серьёзнее, чем принято.

Что включить на сервере CS2 для работы RCON

Два условия, оба обязательны.

Первое — флаг в параметрах запуска:

код
-usercon

Без него сервер не слушает RCON вообще. Это причина номер один для ситуации «пароль правильный, а подключиться не могу»: человек проверяет конфиг, меняет пароль, перезапускает сервер, а дело в отсутствующем флаге. Остальные параметры разобраны в заметке про параметры запуска сервера CS2.

Второе — пароль в server.cfg:

код
rcon_password "длинный_случайный_пароль"

RCON использует тот же порт, что и игра, — обычно 27015, но по TCP. Отдельно открывать ничего не нужно, если порт проброшен полностью.

Подключение из игры

Самый быстрый способ. В консоли клиента, будучи подключённым к серверу:

код
rcon_password вашпароль
rcon status

После ввода пароля все команды с префиксом rcon уходят на сервер. Ответ приходит в вашу консоль.

Если вы не на сервере, а хотите управлять им со стороны:

код
rcon_address ip:27015
rcon_password вашпароль
rcon status

Так удобно, например, сменить карту на сервере, куда сейчас никто не заходит.

Подключение снаружи

CS2 использует стандартный Source RCON, поэтому работает любой клиент, который его понимает:

  • Консольные утилиты вроде rcon-cli — идеальны для скриптов и автоматизации
  • Библиотеки на Python, Node или Go — если пишете своего бота
  • Веб-панель хостинга — это тот же RCON, только уже настроенный. Про неё — работа с консолью сервера

Общий разбор протокола и клиентов есть в заметке про подключение к серверу по RCON.

Команды, которые нужны каждый день

Информация о сервере и игроках:

код
rcon status
rcon users
rcon stats

status показывает список игроков с их userid, SteamID, пингом и адресом. Именно отсюда берётся userid для кика.

Управление игроками:

код
rcon kick "Nickname"
rcon kickid 3 "причина"
rcon banid 30 STEAM_ID
rcon addip 60 1.2.3.4

Числа в banid и addip — это минуты, 0 означает навсегда. Постоянные баны пишутся в banned_user.cfg и banned_ip.cfg, но только если выполнить:

код
rcon writeid
rcon writeip

Про это забывают чаще всего: без writeid бан живёт до перезапуска сервера.

Карты и режимы:

код
rcon changelevel de_inferno
rcon map de_nuke
rcon mp_restartgame 1

changelevel меняет карту с сохранением режима, map — с полной перезагрузкой. Для матчей чаще нужен второй.

Конфиги:

код
rcon exec server.cfg
rcon exec gamemode_competitive_server.cfg

Полезно при отладке — правите файл, применяете, не перезапуская сервер. Про то, какой конфиг что перебивает, написано в заметке про game_mode и game_type.

Проверка любого конвара — вызов без значения:

код
rcon mp_maxrounds
rcon sv_cheats

Защита

RCON-пароль даёт полный контроль над сервером. Человек с ним может выключить сервер, поменять конфиги, забанить всех и включить sv_cheats. Обращаться с ним нужно как с ключом от машины.

Встроенные механизмы защиты от подбора:

код
sv_rcon_maxfailures 5
sv_rcon_banpenalty 60
sv_rcon_minfailures 3
sv_rcon_minfailuretime 30
КонварЧто задаёт
sv_rcon_maxfailuresСколько неудачных попыток всего допускается до бана адреса
sv_rcon_minfailuresСколько неудачных попыток за короткое окно приводят к бану
sv_rcon_minfailuretimeДлина этого окна в секундах
sv_rcon_banpenaltyНа сколько минут блокируется адрес; 0 — навсегда

Смысл такой: после нескольких неудачных попыток за короткий промежуток адрес блокируется на указанное количество минут. Значения по умолчанию довольно мягкие, ужесточить их стоит на любом публичном сервере — сканеры перебирают пароли постоянно.

Если ваш IP статичный, можно пойти дальше и разрешить RCON только с него:

код
sv_rcon_whitelist_address 1.2.3.4

Адрес из белого списка не блокируется при неудачных попытках. С динамическим IP так делать не стоит — заблокируете себя.

Организационная часть, которая важнее конваров:

  • Модератору RCON не нужен. Ему нужны админ-права в игре — про них выдача прав администратора
  • Пароль не должен совпадать с паролем от панели хостинга
  • Меняйте его при уходе человека из команды
  • Не оставляйте server.cfg с паролем в публичном репозитории — это происходит регулярно

Если не подключается

Проверять по порядку:

  1. Флаг -usercon в строке запуска
  2. rcon_password не пустой и не содержит пробелов без кавычек
  3. Порт 27015 доступен по TCP, а не только по UDP
  4. Ваш адрес не забанен предыдущими неудачными попытками — перезапуск сервера снимает временный бан
  5. Вы указали rcon_address до ввода пароля, если подключаетесь не находясь на сервере

Отдельный случай: сервер отвечает «Bad rcon_password» на верный пароль. Так бывает, когда конфиг с паролем не выполнился при загрузке карты — проверьте, что server.cfg вообще читается; см. настройку server.cfg.

Коротко

-usercon в параметрах запуска, rcon_password в конфиге, подключение через rcon_address и rcon_password из консоли клиента, дальше status, kickid, banid с обязательным writeid, changelevel и exec. Пароль — как ключ от сервера, ограничения на подбор ужесточить сразу, модераторам выдавать игровые права, а не RCON.

Если нужен сервер, где консоль уже доступна в панели и не требует ручной настройки, — тарифы TeaHost под CS2 тут.