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

Rust-сервер не виден в списке: проверка query-порта и фильтров

Сопоставьте игровые и query-порты Rust, UDP-доступность, фильтры браузера и фактически запущенный экземпляр сервера.

Rust-сервер не виден в списке: проверка query-порта и фильтров

Сначала попробуйте прямое подключение. Если игрок входит по адресу, игровой endpoint уже доступен. Поиск сервера в браузере дополнительно использует query-путь и клиентские фильтры. Отсутствие строки в списке само по себе не требует переустановки или сброса мира.

Инструкция относится к dedicated server Rust для ПК на Linux. У Console Edition другая инфраструктура. Примеры продолжают руководство по Ubuntu: сервис rust, identity friends, установка /srv/rust/game, игровой UDP 28015, query UDP 28017, закрытый RCON TCP 28016. Подставьте свои значения: другой администратор мог выделить серверу другие порты.

Проверьте, могут ли игроки войти напрямую#

В подходящем клиенте Rust для ПК нажмите F1 и замените пример реальным доступным адресом сервера:

text
connect 203.0.113.10:28015

Адрес 203.0.113.10 предназначен для документации и не является рабочим назначением. Для домашнего сервера нужна также проверка из другой сети: локальный вход не проверяет firewall провайдера и перенаправление роутера. Запишите время и результат, включая появление игрока в мире.

Если прямой вход тоже не работает, сначала проверяйте готовность игры, совпадение версий клиента и сервера, игровой UDP-путь. Читайте игровой журнал: активный сервис может ещё генерировать карту.

bash
sudo systemctl status rust --no-pager
sudo tail -n 100 /srv/rust/rust.log
sudo ss -lunp 'sport = :28015 or sport = :28017'

Путь журнала в примере задан аргументом -logfile из инструкции по установке. Если ваш сервис устроен иначе, найдите фактический путь. Во время диагностики сохраняйте файлы мира и identity: видимость списка не является причиной их очистки.

Разделите игровые запросы, query и администрирование#

В документации Facepunch для игры и query требуются разные UDP-порты. Значение query по умолчанию зависит от настроек игрового и RCON-портов. Правило «всегда игровой плюс один» ненадёжно; задайте query явно в фактической конфигурации запуска.

Для нашего примера ниже приведён фрагмент существующей команды, а не её полная замена:

text
+server.port 28015 +server.queryport 28017

Сохраните identity, параметры мира, настройки RCON и остальные необходимые аргументы. Просматривайте определение сервиса приватно: в некоторых установках пароль администрирования записан прямо в командной строке. Полные аргументы процесса публиковать не следует.

Настройки identity могут переопределить запуск. Выведите только нужные строки без секретов из файла этой identity:

bash
sudo sed -n '/^server\.port /p; /^server\.queryport /p; /^server\.tags /p' /srv/rust/game/server/friends/cfg/server.cfg

До запланированного перезапуска устраните противоречия. При смене порта обновите соответствующие firewall и forwarding, а после загрузки проверьте сокет. Не запускайте второй процесс Rust с той же identity ради эксперимента с другим портом.

Успешный игровой вход не подтверждает доступность query. Для публичного списка не требуется открывать RCON.

Проследите UDP query через все сетевые границы#

На сервере, где уже используется UFW, посмотрите правила и добавьте только недостающие разрешения:

bash
sudo ufw status verbose
sudo ufw allow 28015/udp
sudo ufw allow 28017/udp

Команды не включают UFW и не меняют доступ SSH. Если firewall управляется другим инструментом, меняйте его правила. Разрешите эти же UDP-endpoint у VPS-провайдера. За роутером перенаправьте их на правильный частный адрес. Публикация порта контейнера тоже должна указывать UDP: TCP с таким же номером — другой endpoint.

Оставьте публичный RCON закрытым. Открытие TCP 28016 не исправляет UDP query и расширяет доступ к администрированию. Если настроен закрытый RCON через SSH, сохраните этот путь.

Проверьте query извне доверенным инструментом, поддерживающим Steam A2S. При неудаче сравните адрес назначения, протокол, сокет процесса и каждую границу. Сайт проверки TCP-портов использует неподходящий протокол. Молчание UDP-сканирования также не даёт однозначного вывода о закрытом порте.

Уберите фильтры перед следующим изменением сервера#

Если внешний query возвращает сведения нужного сервера, переходите к игровому браузеру. Снимите ограничения по тексту, числу игроков, ping, карте и тегам; выберите категорию фактического сервера. Установку с плагинами нельзя искать исключительно в категории vanilla. Убедитесь, что клиент использует нужную public-ветку, а не staging.

Используйте различимое имя и возвращайте фильтры по одному. В справочнике тегов Facepunch описано, что конфликтующие теги одной группы мешают отфильтрованному поиску. Например, не указывайте одновременно еженедельный и ежемесячный wipe. Тег описывает политику; его установка сама не создаёт расписание очистки.

Исторические обращения игроков после отказа от общего query-порта объясняют, почему старые команды запуска вводят в заблуждение. Они не доказывают одинаковую причину у всех отсутствующих серверов. Аналогично кешированный список одного клиента слабее воспроизводимого внешнего запроса и игрового входа.

Сохраните доказательства отдельных этапов#

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

Для поддержки подготовьте сборку, имя, публичные игровые и query-endpoint, время сбоев и очищенные фрагменты журналов. Исключите пароли RCON и полные environment-файлы. После исправления выполните один перезапуск в окно обслуживания, повторите внешние проверки и убедитесь, что загружается прежний мир. Identity и параметры карты должны оставаться неизменными: исправление поиска не должно стоить группе игрового прогресса.