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 statsstatus показывает список игроков с их 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 1changelevel меняет карту с сохранением режима, 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с паролем в публичном репозитории — это происходит регулярно
Если не подключается
Проверять по порядку:
- Флаг
-userconв строке запуска rcon_passwordне пустой и не содержит пробелов без кавычек- Порт 27015 доступен по TCP, а не только по UDP
- Ваш адрес не забанен предыдущими неудачными попытками — перезапуск сервера снимает временный бан
- Вы указали
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 тут.