Протокол удалённого управления RCON позволяет администраторам выделенных серверов Facepunch Rust выполнять консольные команды, управлять вайпами, блокировать читеров и транслировать сообщения игрокам без необходимости заходить на сервер через игровой клиент.
В современных сборках Rust устаревший бинарный протокол Source RCON заменён на протокол WebRCON, работающий поверх WebSocket с форматом сообщений JSON. Прямое открытие порта WebRCON в интернет с простым паролем несёт огромные риски: трафик передаётся в открытом виде, а боты непрерывно сканируют порт 28016 методом перебора паролей. В этой статье показано, как настроить WebRCON, изолировать его на локальном интерфейсе и защитить шифрованием WSS через Nginx.
Конфигурация параметров WebRCON при запуске Rust#
Для активации WebRCON используются специфические аргументы командной строки в скрипте запуска сервера Rust (RustDedicated).
Убедитесь, что сервер запускается со следующими параметрами:
./RustDedicated -batchmode \
+server.port 28015 \
+rcon.port 28016 \
+rcon.web 1 \
+rcon.ip 127.0.0.1 \
+rcon.password "STRONG_RCON_PASSWORD_HERE"
Ключевой параметр безопасности — +rcon.ip 127.0.0.1. Он привязывает веб-сокет RCON исключительно к локальному интерфейсу (loopback), предотвращая любые попытки подключения к порту 28016 из внешней сети.
Проверьте, что сокет RCON слушает только локальный адрес:
ss -tulpn | grep 28016
Настройка обратного прокси Nginx с шифрованием WSS#
Чтобы безопасно подключаться к WebRCON через веб-клиенты (например, RustAdmin Web или кастомные боты) из дома, трафик должен быть зашифрован протоколом TLS (WSS вместо обычного WS).
Создайте конфигурационный блок виртуального хоста в Nginx:
cat << 'EOF' | sudo tee /etc/nginx/sites-available/rust-rcon
server {
listen 443 ssl http2;
server_name rcon.example.com;
ssl_certificate /etc/letsencrypt/live/rcon.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rcon.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:28016;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
EOF
Активируйте виртуальный хост и перезагрузите конфигурацию Nginx:
sudo ln -sf /etc/nginx/sites-available/rust-rcon /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Директивы proxy_set_header Upgrade и Connection "upgrade" критически важны: без них Nginx попытается обработать соединение как обычный HTTP-запрос и оборвёт WebSocket-рукопожатие с ошибкой 400 Bad Request.
Ограничение доступа по белому списку IP-адресов#
Дополнительный уровень защиты заключается в ограничении доступа к RCON только с доверенных IP-адресов администраторов.
Добавьте правила allow и deny непосредственно в секцию location в Nginx:
cat << 'EOF' | sudo tee -a /etc/nginx/sites-available/rust-rcon
# IP Whitelist example
# allow 203.0.113.50;
# deny all;
EOF
Либо заблокируйте несанкционированные попытки на уровне межсетевого экрана UFW:
sudo ufw allow from 203.0.113.50 to any port 443 proto tcp
Формат сообщений WebRCON и тестирование подключения#
WebRCON использует текстовый формат JSON для обмена командами и логами. Каждое входящее сообщение имеет следующую структуру:
Identifier: числовой ID команды для сопоставления ответа.Message: исполняемая консольная команда (например,status,serverinfo,kick).Name: имя отправителя (обычноWebRcon).
Протестируйте локальное подключение к WebSocket с помощью консольной утилиты wscat:
wscat -c "ws://127.0.0.1:28016/STRONG_RCON_PASSWORD_HERE"
После успешного подключения отправьте тестовую команду serverinfo и убедитесь, что сервер возвращает JSON со статистикой онлайна и частотой кадров.
Для гибкого администрирования сообществ и автоматизации задач по расписанию (вайпы, кики, бэкапы) без ручной настройки Nginx и SSL-сертификатов удобно использовать возможности панели управления серверами, где защищённый доступ к консоли уже встроен в единый интерфейс.




