Rust Руководство

Rust+ не подключается: companion port и регистрация

Настройте отдельный TCP-порт companion 28082, listenip и внешний IP для стабильного подключения мобильного приложения Rust+.

Rust+ не подключается: companion port и регистрация

Если сервер работает, игроки строят базы, а мобильное приложение Rust+ не может связаться с сервером или зависает на этапе регистрации, проблема почти всегда кроется в сетевой изоляции порта компаньона. Rust+ использует отдельный транспорт и протокол, независимые от основного игрового порта.

Инструкция предназначена для администраторов выделенных серверов Rust на Linux. На 27 октября 2026 года Rust использует выделенный TCP-порт компаньона по умолчанию — 28082, в то время как игровой трафик идёт по UDP-портам 28015 и 28016.

Как устроен обмен данными Rust+#

Сервис Rust+ работает в два этапа: отправка уведомления и прямое WebSocket-соединение.

  1. Регистрация в игре: Игрок открывает меню Esc → Rust+ и нажимает «Привязать сервер» (Pair with Server). Сервер Rust формирует криптографический токен и через защищённый бэкенд Facepunch отправляет push-уведомление (FCM для Android или APNs для iOS) на мобильное устройство игрока.
  2. Прямое подключение приложения: Мобильный телефон получает уведомление с адресом сервера, открывает приложение Rust+ и устанавливает прямое входящее TCP-соединение на порт app.port сервера.

Если игроки видят сообщение «Уведомление отправлено», но телефон не подключается или бесконечно крутит индикатор загрузки, push-уведомление ушло, но входящий TCP-трафик к вашему серверу заблокирован файрволом или NAT.

Настройка параметров запуска сервера#

В строке запуска или конфигурационном файле проверьте четыре ключевых параметра Rust+:

ПараметрНазначениеПример
+app.portTCP-порт компаньона28082
+app.listenipIP-интерфейс для прослушивания0.0.0.0
+app.publicipВнешний IP-адрес для клиентов198.51.100.10
+app.notificationsВключение отправки уведомленийtrue

Если параметр +app.publicip не указан, Rust попытается определить его самостоятельно. Однако за NAT, маршрутизатором или в контейнере Docker сервер часто ошибочно передаёт клиентам внутренний IP-адрес (например, 172.17.0.2 или 192.168.1.50). В результате телефон вне домашней сети не сможет достучаться до сервера.

Пример корректного блока аргументов в скрипте запуска:

bash
./RustDedicated -batchmode \
  +server.port 28015 \
  +server.queryport 28016 \
  +app.port 28082 \
  +app.listenip 0.0.0.0 \
  +app.publicip "198.51.100.10" \
  +app.notifications true

Замените 198.51.100.10 на фактический публичный IP-адрес вашего VPS. Если IP динамический, используйте скрипт автоматического обновления перед запуском.

Rust+ разделяет облачный push-канал регистрации и прямое TCP-соединение смартфона с сервером.

Проверка открытых портов и файрвола#

Игровые порты Rust работают по протоколу UDP, поэтому многие администраторы по ошибке открывают порт 28082 тоже как UDP. Для компаньона требуется TCP.

На хосте Linux проверьте статус слушателя с помощью утилиты ss:

bash
sudo ss -tulpn | grep -E '28015|28016|28082'

В выводе вы должны увидеть 28015 и 28016 с меткой udp, а 28082 — с меткой tcp и адресом 0.0.0.0:28082 или :::28082.

Если порт слушается, откройте его в UFW:

bash
sudo ufw allow 28082/tcp comment 'Rust Plus Companion'
sudo ufw status | grep 28082

При запуске сервера в Docker убедитесь, что порт явно проброшен как TCP:

bash
docker run -d \
  -p 28015:28015/udp \
  -p 28016:28016/udp \
  -p 28082:28082/tcp \
  --name rust-server rust-image

Тестирование доступности порта снаружи#

После настройки правил проверьте доступность TCP-порта с внешнего компьютера с помощью curl или nc:

bash
nc -zv -w 5 198.51.100.10 28082

Если утилита сообщает Connection to 198.51.100.10 28082 port [tcp/*] succeeded!, сетевой уровень готов к приёму подключений мобильного приложения.

Если вы управляете собственными игровыми узлами через Nexardo, проверяйте согласованность портов и внешних адресов в шаблонах развёртывания: панель не заменяет корректную маршрутизацию TCP-трафика на уровне провайдера.

Источники#