MTA:SA: клиент не может подключиться к серверу
Пишешь свой сервер, зовёшь друзей потестить — и половина не может зайти. У кого-то просто крутится "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 в браузере серверов) перед повторной попыткой, прежде чем искать проблему глубже.
Быстрый чек-лист для админа
Когда игрок пишет "не подключается", прогони по порядку, экономит время на разборе:
- Спроси точный текст ошибки — это сразу отсекает половину версий из таблицы в начале статьи.
- Проверь, что сервер вообще жив:
ss -tulnp | grep mta-server. - Сверь порт в
mtaserver.confс тем, что игрок вводит. - Проверь версию сервера и попроси игрока проверить свою (или просто переустановить клиент).
- Проверь
banlist.xmlиacl.xmlна этот IP/serial. - Проверь
ufw statusна сервере и файрвол на стороне игрока. - Если всё выше в порядке — смотри лог сервера в момент подключения, дело в ресурсе.
Поднять сервер 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) и попроси игрока подключиться ещё раз, глядя на лог в реальном времени — в девяти случаях из десяти сервер сам честно пишет причину отказа в момент рукопожатия, просто её не всегда видно в клиентском окне ошибки.