RE:NODE

Сервер BeamMP не виден в списке или игроки не могут зайти: решения

Автор Команда RE:NODE
15 мин чтения


Сервер BeamMP, который «не работает», почти всегда страдает от одной из двух разных неисправностей, которые с места игрока выглядят одинаково. Либо сервер так и не зарегистрировался на бэкенде BeamMP и потому отсутствует в списке - это проблема с auth key или с Private. Либо он зарегистрировался, но недоступен на порту 30814: тогда он виден в списке, но никого не пускает. Третья группа проблем целиком живёт на компьютере игрока: лаунчер, версия игры, кеш модов. Быстрее всего понять, какой случай ваш, можно так: попробовать прямое подключение по адресу и порту и прогнать порт сервера через инструмент CheckBeamMP. Эти две проверки разделяют проблему ещё до того, как вы откроете хоть один файл.

В этой статье - порядок диагностики и то, что показывает каждый шаг. О первоначальной настройке сервера - ServerConfig.toml строка за строкой, карты, Lua - читайте в руководстве по серверу BeamMP. Общую версию этого чек-листа, подходящую для любой игры, см. в статье почему игроки не могут подключиться к вашему серверу.

Нет в списке или недоступен? Сначала разделите проблему#

Каждый раз, когда кто-то заходит на сервер, участвуют две системы, и ломаются они независимо друг от друга.

исходящее, регистрациясписок, входтолько локальноTCP и UDP 30814BeamNG.driveклиентский мод BeamMPЛаунчер игрокаlocalhost порт 4444Сервер BeamMPServer.logБэкенд BeamMPauth key, список
Список и подключение - два разных пути

Сервер обращается к бэкенду по исходящему соединению, чтобы подтвердить, кто он, и попасть в список. Лаунчер игрока обращается к бэкенду, чтобы получить список и авторизовать игрока, а затем подключается напрямую к вашему серверу по его порту. Список - это просто каталог: присутствие в нём ничего не говорит о том, открыт ли ваш порт, а отсутствие - о том, что порт закрыт.

Что вы видитеВероятнее всего, виноват уровень
Сервера нет в списке, прямое подключение работаетAuth key, Private, регистрация на бэкенде
Сервер в списке, но никто не может зайтиПорт, протокол, firewall
Нет в списке, и прямое подключение тоже не работаетСервер не запущен либо обе причины сразу
У одного игрока не получается, у остальных получаетсяЛаунчер, игра или сеть этого игрока
Не заходит никто сразу после патча BeamNGНесовпадение версий
Игроки подключаются, затем зависают на загрузке модовРазмер пакета модов или испорченный файл в кеше

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

Порядок диагностики#

Проходите шаги по очереди. Каждый занимает минуту и исключает один уровень, а перескакивать вперёд - например, переписывать правила firewall, не прочитав лог, - значит потерять весь вечер.

  1. Прочитайте лог сервера. Запустился ли он и прошёл ли аутентификацию?
  2. Проверьте Private и регистрацию в списке.
  3. Подключитесь напрямую по адресу и порту из-за пределов сети сервера.
  4. Проверьте порт через CheckBeamMP.
  5. Сверьте версии: BeamNG, клиент BeamMP, сборка сервера.
  6. Проверьте пакет модов в Resources/Client.
  7. И только потом смотрите на лаунчер и компьютер игрока.

Остальная часть статьи разбирает каждый шаг.

Шаг 1: сначала прочитайте Server.log#

Сервер записывает всё, что выводит, в Server.log в своём каталоге. Файл повторяет консоль и никогда не содержит ваш auth key, поэтому его можно без правок вставлять в канал поддержки.

Нужно понять, дошёл ли сервер до момента, когда он принимает игроков. Сервер, который завершается через секунду после старта, - никогда не сетевая проблема. Обычные причины, и все они видны в логе:

  • Нет auth key или остался шаблон. По умолчанию ключ пустой, и без него сервер не работает. Это самая частая причина неудачи при первом запуске.
  • Синтаксическая ошибка TOML. Пропущенная кавычка у строки в ServerConfig.toml останавливает сервер, а не игнорируется. Лог указывает строку.
  • Старый `Server.cfg` рядом с новым файлом. Прежние серверы BeamMP использовали Server.cfg; современные сборки используют ServerConfig.toml и предупреждают, если старый файл ещё лежит рядом. Форматы несовместимы, так что правка не того файла ничего не меняет.
  • Ошибка привязки порта. Коды 10022 и 10048 означают, что сервер не смог занять свой порт, обычно потому, что его уже держит другая программа - нередко второй сервер BeamMP. Дайте каждому серверу на машине свой порт.

На RE:NODE консоль показывает живой лог, а файловый менеджер открывает Server.log и ServerConfig.toml прямо в браузере, так что этот шаг - две вкладки. Если сервер перезапускается по кругу, разбор такого поведения есть в статье циклы падений игровых серверов.

Шаг 2: ошибки auth key#

Каждому серверу BeamMP, в том числе приватному, нужен auth key из BeamMP Keymaster по адресу keymaster.beammp.com. Ключ идентифицирует сервер для бэкенда; без действительного ключа сервер не запускается или не регистрируется. Проблемы с аутентификацией бывают нескольких видов.

  • Опечатка или обрезанный ключ. Ключ - длинная строка с дефисами. При копировании из сообщения в Discord или с телефона легко потерять символ или добавить пробел в конце внутри кавычек. Вставьте ключ заново из Keymaster.
  • Ключ перевыпущен или удалён. Если вы или кто-то с доступом к вашей учётной записи перевыпустил ключ в Keymaster, старая строка перестаёт работать немедленно. Каждый сервер, который всё ещё её использует, не сможет зарегистрироваться при следующем запуске.
  • Один ключ на два сервера. Один ключ - один сервер. Два запущенных сервера с одним и тем же ключом не будут работать нормально, а симптом - сервер, который то появляется в списке, то исчезает, - настолько запутывает, что эту причину стоит исключить в самом начале. Держите тестовый сервер на отдельном ключе.
  • Закончились ключи. Число серверных ключей на учётную запись ограничено; в собственном FAQ BeamMP перечислены бонусы для поддержавших проект, которые добавляют ключи. Если вы не можете создать новый ключ, дело в этом, и решение - использовать ключ от сервера, который вы закрыли.
  • Ключ утёк. Ключ, опубликованный в открытом канале, может использовать чужой сервер. Перевыпустите его в Keymaster, а если взломана сама учётная запись, BeamMP решает это через обращение Account Support на своём официальном Discord.
ServerConfig.toml
[General]AuthKey = "paste-the-whole-key-here"Private = falsePort = 30814

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

Шаг 3: сервер запущен, но его нет в списке#

Если лог показывает чистый запуск, а сервера всё равно нет во внутриигровом браузере, проверяйте по порядку.

`Private` равно `true`. Этот параметр скрывает сервер из списка и больше ничего не делает. Это не пароль. Поставьте false, перезапустите и подождите пару минут.

Сервер не может связаться с бэкендом. Регистрация - это исходящее соединение от сервера к бэкенду BeamMP. На домашней машине исходящее правило firewall или защитный пакет, блокирующий BeamMP-Server, останавливает её без каких-либо сообщений. То же самое на VPS с политикой запрета исходящего трафика по умолчанию. Игровые панели хостинга исходящий трафик разрешают, так что это в основном проблема самостоятельного хостинга.

Вы ищете сервер из той же сети. Собственный FAQ BeamMP прямо на это указывает: чтобы зайти на домашний сервер через список, нужен NAT loopback на роутере, а многие домашние роутеры его не поддерживают. С компьютера, на котором запущен сервер, используйте Direct Connect с 127.0.0.1 и портом; с другого компьютера в доме - LAN-адрес сервера. Ваши друзья снаружи используют публичный адрес. Взгляд на список из вашей же сети - самая ненадёжная проверка из всех.

Поиск скрывает сервер. Список длинный. Ищите по необычному слову из Name вашего сервера, а не по распространённому вроде «freeroam». Коды форматирования в названии допустимы, но затрудняют поиск на глаз.

Сервер только что запущен. Дайте новому или перезапущенному серверу пару минут, прежде чем решать, что его нет. Если его всё ещё нет, а прямое подключение работает, сервер в порядке для всех, у кого есть адрес, - раздайте адрес, пока разбираетесь со списком.

Об общих принципах работы мастер-списков и браузеров серверов в разных играх рассказывает парная статья почему сервер не отображается в списке серверов.

Шаг 4: порты, протоколы и firewall#

BeamMP нужен один номер порта на двух протоколах, и оба должны доходить до сервера.

ПортПротоколЧто передаёт
30814TCPПодключение (handshake), загрузка модов
30814UDPПоложение и состояние машин

Если вы изменили Port в ServerConfig.toml, этот номер заменяет 30814 везде ниже. Допустимые значения - больше 1024 и меньше 65535.

Проверьте порт снаружи

У BeamMP есть проверка, которая пытается достучаться до вашего сервера из интернета. При запущенном сервере откройте в браузере такой адрес, подставив свой публичный адрес IPv4 и порт:

code
https://check.beammp.com/api/v2/beammp/203.0.113.10/30814

Значение status, равное ok, означает, что порт доступен. Ошибка означает, что соединение не удалось: порт закрыт, мешает firewall, неверно настроена переадресация или нет публичного адреса вообще. BeamMP не поддерживает хостинг по IPv6, поэтому используйте адрес IPv4. Проверка с самого сервера или с компьютера в той же сети ничего не доказывает; проверка существует именно для того, чтобы вам не приходилось искать друга с мобильным интернетом.

Что означают коды ошибок лаунчера

При неудачном подключении игроки видят в лаунчере коды сокетов Windows. Они полезнее, чем кажется.

КодЗначениеКуда смотреть
10060Тайм-аут, никто не ответилПереадресация, firewall, протокол
10061Отказ: машина ответила, но порт никто не слушаетСервер выключен или неверный порт
10038Операция с сокетом не удаласьFirewall, затем переадресация
10051 / 10065Сеть или хост недоступныАдрес, переадресация, маршрутизация
10048Порт уже занятДругая программа на этом порту

Различие между 10060 и 10061 - лучшая подсказка, какая у вас есть. Отказ означает, что пакеты дошли до машины и были отклонены, то есть адрес верный, а сервер там не слушает: неверный порт или сервер не запущен. Тайм-аут означает, что что-то отбросило пакеты по дороге.

Открываем порт на своей машине

В Windows разрешите входящий трафик для обоих протоколов. В FAQ BeamMP отмечено, что полное отключение firewall обычно не помогает, поэтому добавляйте правила:

PowerShell, as administrator
New-NetFirewallRule -DisplayName "BeamMP TCP" -Direction Inbound `    -Protocol TCP -LocalPort 30814 -Action AllowNew-NetFirewallRule -DisplayName "BeamMP UDP" -Direction Inbound `    -Protocol UDP -LocalPort 30814 -Action Allow

На Linux VPS с ufw:

bash
$ sudo ufw allow 30814/tcp$ sudo ufw allow 30814/udp$ sudo ufw status

Дома переадресация на роутере тоже должна охватывать оба протокола - некоторые роутеры требуют добавить два отдельных правила - и вести на LAN-адрес сервера, который должен быть постоянным, чтобы не меняться после перезагрузки. За CGNAT переадресация не заработает никогда, а мобильные подключения 4G и 5G переадресацию не поддерживают вообще. Как понять, есть ли у вашего подключения публичный адрес, объясняет статья NAT и CGNAT для хостеров игровых серверов, а сторону VPS подробнее разбирает руководство по firewall ufw.

Классический симптом «наполовину открытого» порта: TCP открыт, UDP заблокирован. Игроки подключаются, скачивают моды, карта загружается, а потом все остальные машины стоят неподвижно или невидимы, потому что поток состояния не доходит. Если люди описывают именно это, проверьте правило для UDP.

На хостинговой панели

Здесь нет ни роутера, ни брандмауэра Windows, но есть одна эквивалентная ошибка: Port в ServerConfig.toml указан числом, которое не выделено серверу. На RE:NODE выделенный порт указан на вкладке Network; если в конфигурации назван любой другой порт, сервер слушает там, куда ничего не маршрутизируется. Сделайте так, чтобы значения совпадали, перезапустите и снова запустите проверку. Почему выделение портов важно, объясняет статья порты игровых серверов.

Шаг 5: несовпадение версий после обновления BeamNG#

Значительная часть жалоб «никто не может зайти» приходит в день обновления BeamNG.drive. Должны согласоваться три составляющие: игра, клиентский мод BeamMP и лаунчер на компьютере каждого игрока, а также сборка сервера.

  • Игра обновилась раньше, чем BeamMP. После обновления BeamNG разработчики BeamMP должны выпустить совместимый клиент. Пока этого не произошло, игроки на новой версии игры не могут играть в мультиплеер нигде, и ничто на вашем сервере это не исправит. Прежде чем разбираться, прочитайте анонсы BeamMP.
  • Сервер старше клиентов. Когда BeamMP обновляет протокол, старая сборка сервера отклоняет обновлённых клиентов или путается с ними. Обновите сервер; это небольшой исполняемый файл, а на панели это обычно переустановка или перезапуск с включёнными обновлениями. Сначала сохраните копию ServerConfig.toml и Resources/Server.
  • Один игрок отстал. Игрок, у которого не обновился лаунчер или стоит устаревшая версия игры, не может зайти, пока остальные заходят. В FAQ BeamMP прямо сказано, что мультиплеер не работает с пиратскими и устаревшими копиями BeamNG.drive.
  • Мод сломался после патча. Моды машин и карт в Resources/Client регулярно ломаются при обновлениях BeamNG. Сервер запускается, игроки заходят, а потом вылетают или зависают при загрузке. Чтобы убедиться, уберите папку с модами в сторону и запустите сервер с чистого листа.

Не обновляйте работающий сервер вечером, когда люди ждут возможности поездить. Привычки из чек-листа дня обновления игрового сервера здесь применимы без изменений.

Шаг 6: загрузка модов зависает или не заканчивается#

Когда игрок заходит, сервер отправляет ему по TCP каждый .zip из Resources/Client, и только после этого можно ехать. Именно на этой передаче возникает большинство жалоб «застряло на загрузке».

  • Пакет слишком большой. Пакет в несколько гигабайт, который канал сервера делит между несколькими одновременно заходящими людьми, качается минутами. Игроки думают, что всё зависло, и выходят, из-за чего при следующем заходе загрузка начинается заново. Уменьшите пакет и укажите его размер в своём Discord, чтобы люди знали, что нужно подождать.
  • Один повреждённый zip. Файл, обрезанный при загрузке на сервер, добросовестно отправляется каждому игроку и не загружается у всех. Загрузите его заново по SFTP, а не через ненадёжную загрузку в браузере; сравните размеры файлов с оригиналом.
  • В `Resources/Client` лежит то, что не является модами. Там должны быть только zip-архивы модов. Плагины Lua кладут в Resources/Server, которая клиентам никогда не отправляется; плагин, попавший не в ту папку, рассылается каждому игроку как мод.
  • Неверный путь к карте. Если Map указывает на папку уровня, которой нет ни в одной установленной карте или zip-архиве мода, сервер запускается, а игроки попадают в никуда. Откройте zip карты и прочитайте имя папки внутри levels/.
  • Испорченный файл в кеше игрока. Лаунчер кеширует скачанные серверные моды в папке Resources внутри собственного каталога установки. Если один игрок зависает на моде, который у всех остальных загружается, пусть закроет игру и лаунчер и удалит эту папку Resources; при следующем заходе она заполнится заново.
  • Собственные моды игрока. Сторонние моды, установленные локально, могут мешать BeamMP. Документированный в BeamMP способ начать с чистого листа - закрыть игру и переименовать папку current в пользовательском каталоге BeamNG во что-нибудь вроде current_old: так вы получите свежий профиль, а старый сохранится, и его можно вернуть.

Большие пакеты загружайте нормальным клиентом - подробности в статье SFTP и файловый менеджер - и после каждого изменения модов проверяйте вход сами, с пустым кешем.

Шаг 7: лаунчер и компьютер игрока#

Если с сервером всё в порядке, а один игрок всё равно не может зайти, неполадка на его стороне. Клиент BeamMP состоит из двух частей: лаунчера BeamMP и мода внутри BeamNG.drive, который общается с ним через локальный порт на том же компьютере.

  • Игру запустили отдельно. Для мультиплеера лаунчер должен быть запущен; стартуйте игру через BeamMP-Launcher, а не напрямую из Steam.
  • Антивирус удалил или заблокировал лаунчер. Поскольку лаунчер работает с сетью, защитное ПО иногда помещает его в карантин. В FAQ BeamMP это разобрано и описано добавление исключения в Windows Defender. Если лаунчер исчезает после загрузки, проверьте карантин.
  • Локальный порт лаунчера занят. По умолчанию игра и лаунчер общаются через порт 4444 на компьютере самого игрока. Если его держит другая программа, лаунчер показывает ошибку привязки, например 10013 или 10048, и игра не подключается. Измените порт в двух местах, чтобы они совпадали: в BeamNG - Options, Multiplayer, show advanced options, Launcher port; затем значение Port в launcher.cfg рядом с лаунчером. Подойдёт любое число примерно от 2000 и выше.
  • VPN, школьная или гостиничная сеть. VPN создают проблемы с BeamMP, а в ограниченных сетях часто отбрасывается UDP. Пусть игрок проверит с другого подключения.
  • Гостевые аккаунты. При AllowGuests = false игроков без учётной записи BeamMP не пускают. На большинстве серверов это сделано намеренно; скажите им войти в аккаунт.
  • Сервер заполнен. Достигнут MaxPlayers. Очевидно задним числом, но редко очевидно из сообщения «меня не пускает в девять вечера».

Клиент для Linux официально не поддерживается, поэтому игроку на Linux, столкнувшемуся с ошибками лаунчера, сам BeamMP помогать не будет.

FAQ#

Почему я захожу на сервер BeamMP по IP, но не вижу его в списке?

Потому что подключение и листинг - разные вещи. Прямое подключение доказывает, что порт открыт; список же зависит от того, что сервер зарегистрировался на бэкенде со своим auth key и что Private равно false. Если вы находитесь в одной домашней сети с сервером, возможно, вы просто не можете увидеть его в списке без NAT loopback.

Нужен ли BeamMP TCP или UDP?

Оба, на одном и том же номере порта - 30814, если вы его не меняли. TCP передаёт подключение и загрузку модов; UDP передаёт состояние машин. Если открыт только TCP, игроки заходят, но другие машины замирают или не появляются.

Можно ли запустить два сервера BeamMP на одном ключе?

Нет. Каждому серверу нужен свой ключ из Keymaster. При повторном использовании ключа серверы не регистрируются или мерцают в списке, а лечится это вторым ключом или закрытием первого сервера.

Игроки зависли на загрузке модов. Сервер слишком слабый?

Редко. Сервер нетребователен к CPU и памяти; загрузка ограничена каналом, размером пакета и числом одновременно заходящих людей. Сначала уменьшите пакет. Если застрял один игрок, а остальные нет, очистите кеш Resources в его лаунчере.

Нужно ли игрокам открывать порты, чтобы зайти?

Нет. Игроки подключаются по исходящему соединению. Единственный порт, который игрок может изменить, - локальный порт лаунчера 4444, и только когда его уже занимает другая программа на его компьютере.

Все перестали заходить сразу после обновления BeamNG. Что делать?

Дождитесь, пока BeamMP выпустит обновление клиента для новой версии игры, затем обновите сборку сервера и проверьте клиентские моды. Пока BeamMP не догнал игру, мультиплеер не работает ни у кого на новой версии, ни на одном сервере.