MAATRIX GAMES / Блог / MTA:SA: клиент не может подключиться к серверу

MTA:SA: клиент не может подключиться к серверу

MAATRIX GAMES

Пишешь свой сервер, зовёшь друзей потестить — и половина не может зайти. У кого-то просто крутится "Connecting...", у кого-то вылетает ошибка про версию, у кого-то сервер вообще не виден в списке. MTA:SA в этом плане капризнее многих движков: клиент и сервер жёстко сверяют версию друг с другом, а ACL-баны и файрвол добавляют ещё пару слоёв, где можно застрять. Разберём по порядку, с чего начинать диагностику и как быстро найти конкретную причину.

Сначала — что именно пишет клиент

Прежде чем лезть в конфиги, посмотри на текст ошибки — MTA обычно говорит достаточно конкретно, просто не все привыкли читать эти сообщения внимательно.

Сообщение клиентаЧто скорее всего не так
Connection timed out / бесконечный "Connecting..."Порт закрыт файрволом, сервер не запущен, или указан неверный порт
Bad version / Your client version does not match the serverВерсия клиента и сервера не совпадают
You are banned from this server / Banned: ...IP забанен через ACL/banlist
Server is fullДостигнут <maxplayers>
Nickname already in useИгрок с таким ником уже на сервере — это не баг подключения, просто смени ник
Подключение проходит, но через пару секунд кикаетПроблема не в сети, а в ресурсе (падает скрипт при заходе игрока)

Если ошибки нет вообще и клиент просто висит на "Connecting" — почти всегда сетевая проблема: порт или файрвол. Если ошибка текстовая и конкретная — она обычно прямо называет причину, дальше в статье разберём каждую по отдельности.

Быстрый способ проверить, жив ли сервер вообще и на каком порту он реально слушает — зайти на саму машину:

ss -tulnp | grep mta-server

Если строки нет — сервер не запущен или упал, и дело не в клиенте вовсе. Если есть — смотри, на каком порту и адресе он висит, и сверяй с тем, что вводит игрок.

Неверный порт — самая частая причина

MTA использует не один порт, а три, и путаница между ними — источник половины жалоб "не подключается":

  • serverport (по умолчанию 22003, UDP) — основной игровой порт, именно его игрок вводит в Quick Connect как порт сервера.
  • serverport_udp — на практике равен игровому порту, отдельно почти никогда не трогают.
  • httpport (по умолчанию 22005, TCP) — порт для загрузки карт и ресурсов клиенту, не для самого подключения.
  • Ase/query порт (обычно 22126, UDP, serverport + 123 по конвенции MTA) — отвечает за появление сервера в браузере серверов, на прямое подключение не влияет.

Игроки регулярно путают httpport с игровым и вбивают в Quick Connect 22005 вместо 22003 — получают таймаут, потому что игровой протокол на TCP-порт ресурсов не отвечает. Проверь актуальные значения прямо в конфиге сервера:

grep -E "serverport|httpport" mods/deathmatch/mtaserver.conf
<serverport>22003</serverport>
<serverport_udp>22003</serverport_udp>
<httpport>22005</httpport>

Если админ менял порт при установке (например, чтобы развести несколько серверов MTA на одной машине), именно это значение и нужно давать игрокам — не дефолтное 22003 "по памяти". Формат подключения: IP:игровой_порт, например 95.111.22.33:22003. Подробно про сам процесс установки и структуру конфига — в статье как поднять сервер MTA:SA, если конфиг ещё не трогали вообще.

Поднять сервер MTA:SA за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Версия клиента не совпадает с сервером

MTA:SA жёстко сверяет версию протокола клиента и сервера — это не "рекомендация", а хардовая проверка при рукопожатии: если версии не совместимы, подключение обрывается с ошибкой про версию ещё до входа в игру. Причины расхождения обычно такие:

  • Клиент давно не обновлялся. MTA обновляется через встроенный лаунчер, но если у игрока отключено автообновление или клиент запускался офлайн долгое время, версия отстаёт.
  • Сервер обновили, а игроков не предупредили. После апдейта серверных файлов минимальная поддерживаемая версия клиента может подняться — старые клиенты отваливаются массово и одновременно, это хороший диагностический признак: если "не подключается" написали сразу несколько человек после того, как ты обновил сервер — дело почти наверняка в версии.
  • Nightly/тестовая сборка клиента. Часть игроков стоит на экспериментальных билдах с форумов сообщества — они не всегда совместимы со стабильным сервером.

В mtaserver.conf можно явно ограничить минимальную версию клиента, которой разрешено подключаться:

<minclientversion>1.6</minclientversion>

Это полезно, если сервер использует ресурсы с зависимостью от свежих функций клиента — тогда лучше явно отсечь совсем старые версии понятным сообщением, чем ловить непонятные баги в ресурсах у части игроков. Проверить свою версию клиента игрок может в самом MTA — окно настроек или экран About в лаунчере, точный пункт меню слегка отличается между сборками. Универсальный совет игроку: полностью переустановить MTA с multitheftauto.com, не через сторонние сборки — это закрывает 90% версийных проблем разом.

Бан в ACL или banlist

Если клиент пишет прямым текстом You are banned — это не сетевая проблема, сервер осознанно отказывает конкретному IP или серийному номеру (serial). Список банов лежит в:

mods/deathmatch/banlist.xml

Каждая запись — это IP, серийник игрока (уникальный ID клиента MTA), причина и срок. Посмотреть текущие баны и снять конкретный можно прямо из серверной консоли (или через RCON):

aclrequest reload
banlist
unban 95.111.22.33

Точный набор консольных команд зависит от того, каким именно admin-ресурсом пользуется сервер (штатный admin или сторонняя админ-панель) — если стандартные unban/banlist не срабатывают, проверь, какой ресурс держит бан-лист на конкретном сервере, обычно это видно в логе при старте ресурса admin.

Отдельная частая ситуация — бан не по нику, а по serial, уникальному идентификатору установки MTA у игрока. Если человек банился и переустановил игру или сменил ПК, serial может остаться прежним (он привязан к системе, а не к переустановке клиента) — так что "я переустановил MTA, а бан всё равно есть" это нормальное поведение, а не баг.

Проверить права доступа и группы можно через файл ACL:

mods/deathmatch/acl.xml

Там же настраивается whitelist, если сервер закрыт для посторонних — если в acl.xml прописана группа с ограничением по IP или аккаунту, а игрока в ней нет, он получит отказ в подключении, хотя формально это не "бан" в привычном смысле, а просто отсутствие прав.

Файрвол блокирует подключение

Если ошибка — таймаут без внятного текста, и порт в mtaserver.conf игрок вводит правильный, следующий подозреваемый — файрвол. Причём проверять нужно с обеих сторон:

На стороне сервера (VPS). Игровой порт — UDP, и его нужно явно открыть в файрволе ОС:

sudo ufw allow 22003/udp
sudo ufw allow 22126/udp
sudo ufw allow 22005/tcp
sudo ufw reload

Если хостер даёт отдельный облачный файрвол (security groups) поверх файрвола внутри ОС — проверь и его, это отдельный слой, который правило ufw не отменяет.

На стороне игрока. Домашний Windows Defender Firewall или антивирус иногда блокирует исходящий UDP-трафик от Multi Theft Auto.exe, особенно после переустановки клиента (правило файрвола не подхватывается автоматически на новый путь к экзешнику). Игроку стоит проверить Панель управления → Брандмауэр Защитника Windows → Разрешить приложение и убедиться, что MTA в списке разрешённых.

NAT и провайдер. Если сервер стоит не на VPS, а дома за роутером — это уже проблема проброса порта, а не файрвола сервера, и там своя логика с NAT и белым IP. Полный разбор именно этого случая — в статье порт не проброшен: как проверить и исправить, там же про частую путаницу TCP/UDP, которая для MTA актуальна вдвойне — сервис вроде canyouseeme.org по умолчанию шлёт TCP-пробу и покажет "закрыто" даже для нормально открытого UDP-порта игры.

Общий подход к разделению портов по игре и настройке файрвола на VPS — в статье про настройку портов и файрвола для игрового сервера.

Реже, но встречается

Если порт верный, версия совпадает, банов нет и файрвол открыт — а всё равно не заходит, проверь эти случаи по остаточному принципу:

  • Сервер заполнен. <maxplayers> в mtaserver.conf достигнут — клиент честно пишет Server is full, увеличить лимит можно только с перезапуском сервера.
  • Пароль на сервере. Если задан <password>, а клиент подключается напрямую по IP без ввода пароля (например, через сохранённую строку без пароля) — подключение отклонится. Через нормальный Quick Connect с паролем проблем обычно нет.
  • Ресурс кикает сразу после входа. Это выглядит как "не подключается", но на деле подключение проходит, а затем падает скрипт в одном из стартующих ресурсов (например, ошибка в античит-ресурсе или конфликт двух ресурсов на одном событии). Смотри лог сервера сразу после попытки подключения игрока — обычно там прямо видно, какой ресурс и с какой ошибкой оборвал сессию.
  • Сервер не виден в браузере серверов, хотя по прямому IP заходит. Это отдельная история — не сама проблема подключения, а недоступность ASE-порта (22126/UDP), из-за которого сервер не отвечает на запросы списка. Прямое подключение по IP при этом продолжает работать нормально.
  • Устаревший клиент показывает сервер, но с ошибкой при попытке зайти. Иногда список серверов кэширует старые данные — обнови список (F5 в браузере серверов) перед повторной попыткой, прежде чем искать проблему глубже.

Быстрый чек-лист для админа

Когда игрок пишет "не подключается", прогони по порядку, экономит время на разборе:

  1. Спроси точный текст ошибки — это сразу отсекает половину версий из таблицы в начале статьи.
  2. Проверь, что сервер вообще жив: ss -tulnp | grep mta-server.
  3. Сверь порт в mtaserver.conf с тем, что игрок вводит.
  4. Проверь версию сервера и попроси игрока проверить свою (или просто переустановить клиент).
  5. Проверь banlist.xml и acl.xml на этот IP/serial.
  6. Проверь ufw status на сервере и файрвол на стороне игрока.
  7. Если всё выше в порядке — смотри лог сервера в момент подключения, дело в ресурсе.

Поднять сервер MTA:SA за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Почему у одних друзей заходит, а у других — нет, хотя сервер один?

Обычно это версия клиента (у кого-то отстала) или локальный файрвол/антивирус на конкретной машине — сервер тут ни при чём, проблема индивидуальная для каждого клиента.

Как узнать serial своего MTA-клиента, если нужно снять бан?

В самом клиенте MTA есть экран с информацией об аккаунте и серийным номером установки; также serial попадает в лог сервера при попытке подключения — админ может посмотреть его там при разборе конкретного бана.

Обязательно ли обновлять сервер сразу после выхода новой версии MTA?

Нет, но если минимальная версия клиента в новом релизе резко выросла, а сервер остаётся на старой сборке — часть игроков со свежими клиентами не сможет подключиться уже к серверу, а не наоборот. Стоит следить за анонсами на официальном сайте перед плановым обновлением.

Можно ли забанить по нику, а не по IP или serial?

Штатный бан в MTA работает через IP и/или serial, привязка чисто к нику ненадёжна — ник можно сменить в любой момент, а IP и serial так просто не меняются.

Что делать, если после всех проверок причина так и не нашлась?

Включи расширенный лог сервера (mods/deathmatch/logs) и попроси игрока подключиться ещё раз, глядя на лог в реальном времени — в девяти случаях из десяти сервер сам честно пишет причину отказа в момент рукопожатия, просто её не всегда видно в клиентском окне ошибки.