Когда игроки не могут подключиться, причина почти всегда одна из шести, и проверять их можно по порядку: сервер ещё не закончил запуск; он слушает не тот порт или адрес, который вы думаете; игрок использует неверный адрес или порт; сеть между ними отбрасывает трафик; сама игра отказывает игроку (версия, пароль, белый список, моды, баны, слоты); или проблема целиком на стороне игрока. Каждый шаг занимает минуту и исключает целый слой. Если перескакивать вперёд - переписывать правила файрвола, не заглянув в консоль, - пятиминутное исправление превращается в целый вечер.
Эта статья - порядок шагов и признаки для каждого из них. Сами номера портов - в таблице в статье порты игровых серверов; для серверов, на которые можно зайти, но которые не находятся в списке, нужна статья почему сервер не виден в списке серверов.
Сначала: один игрок или все?#
Самый полезный вопрос, потому что он делит проблему пополам ещё до того, как вы что-то тронете.
| Кто не может подключиться | Куда смотреть первым делом |
|---|---|
| Никто, включая вас | На сервер: запущен ли, слушает ли, тот ли порт |
| Никто, кроме людей у вас дома | На роутер домашнего сервера: проброс, протокол, CGNAT |
| Все, кроме одного-двух игроков | На этих игроков: версия, моды, их сеть, бан |
| Игроки на одной платформе | Настройки кроссплея, клиентские моды, порты конкретной платформы |
| Все, но только иногда | Циклы падений, лимит памяти, заполненные слоты, потеря пакетов |
Если в группе из десяти не может зайти один человек, не трогайте сервер. Девять успешных подключений доказывают, что с сервером и сетью всё в порядке.
Шаг 1: сервер действительно запущен?#
«Running» в панели или в диспетчере задач означает, что процесс существует. Это не значит, что игра закончила загрузку. Большим мирам, модифицированным серверам и первым запускам после обновления могут понадобиться минуты, а порт часто открывается только в самом конце.
Прочитайте консоль и найдите строку, которую игра выводит, когда готова. Несколько примеров:
[Server thread/INFO]: Done (14.208s)! For help, type "help" <- MinecraftConnection to Steam servers successful. <- Source gamesSession "Longship Crew" with join code 483920 ... is active <- ValheimЕсли последние строки - ошибка, стектрейс или сервер, который остановился и запустился заново, у вас не проблема с подключением, а проблема с сервером. Что искать, объясняет статья как читать консоль, а о циклах падений - статья почему игровой сервер постоянно перезапускается. На RE:NODE консоль показывает живой, нефильтрованный вывод с графиками памяти, CPU и диска рядом, поэтому сервер, упёршийся в лимит памяти и перезапустившийся, виден с первого взгляда.
Шаг 2: слушает ли он там, где вы думаете?#
Игра привязывается к адресу и порту. Оба могут отличаться от ожидаемых: конфиг не сохранили, игра переписала свой конфиг при выключении, переменная порта задана в двух местах, и значения не совпадают. К чему сервер привязался на самом деле, он сообщает в первых строках вывода. На машине, которой вы управляете, можно спросить операционную систему напрямую:
# Linux: every listening TCP and UDP socket, with the process$ ss -lntup | grep -E '25565|2456|27015'udp UNCONN 0 0 0.0.0.0:2456 0.0.0.0:* users:(("valheim_server",pid=812))udp UNCONN 0 0 0.0.0.0:2457 0.0.0.0:* users:(("valheim_server",pid=812))В Windows то же самое делают Get-NetUDPEndpoint -LocalPort 2456 или netstat -ano | findstr 2456. Внимательно прочитайте столбец адреса:
0.0.0.0или*- слушает на всех интерфейсах. Хорошо.127.0.0.1- слушает только на loopback. Снаружи до него никто никогда не достучится. Исправьте адрес привязки в конфиге игры; для Minecraft этоserver-ip=вserver.properties, и почти всегда его нужно оставлять пустым.- Частный LAN-адрес на машине, у которой их несколько, - дома нормально, но неправильно, если машина переехала в другую сеть.
Если на порту вообще ничего не слушает, проблема в конфигурации игры, а не в сети.
Шаг 3: правильный адрес, правильный порт#
Следующая по частоте причина - игрок вводит не то. Проверяйте, что он ввёл на самом деле, а не что он думает, что ввёл.
- Игровой порт, а не query-порт. В играх с двумя портами игроки подключаются по игровому. В Valheim подключаются на
2456, а не на2457. Игрок, скопировавший второе число из списка, получит таймаут. - Порт вообще. Если сервер не на порту игры по умолчанию, игроку нужно его ввести:
203.0.113.10:25570. Без него клиент пробует порт по умолчанию и не попадает никуда - или попадает на чужой сервер. - Домен указывает в другое место. Если игроки пользуются именем, проверьте, куда оно резолвится сегодня:
nslookup play.example.com. Недавнее изменение может ещё оставаться в кэше на время TTL записи. В Windowsipconfig /flushdnsочищает собственный кэш игрока; вышестоящие резолверы догонят сами. О записях - статья привязка домена к игровому серверу, а для Minecraft статья SRV-записи объясняет, как имя может нести в себе порт. - Адрес сменился. Публичный адрес домашнего сервера может смениться при любом переподключении. Адрес арендованного сервера не меняется, но меняется у сервера, переехавшего к другому хостингу.
Шаг 4: пропускает ли сеть?#
Только теперь имеет смысл смотреть на порты и файрволы. Проверяйте снаружи - с телефона через мобильный интернет с выключенным Wi-Fi или с помощью друга, - потому что проверка с самого сервера или из той же сети ничего не доказывает.
Для TCP-игры (Minecraft Java, Terraria):
$ nc -vz 203.0.113.10 25565Connection to 203.0.113.10 25565 port [tcp/*] succeeded!«Succeeded» значит, что с путём и портом всё в порядке. «Connection refused» значит, что машина ответила, но на порту никто не слушает, - возвращайтесь к шагу 2. Долгое ожидание, а затем таймаут значит, что пакет что-то отбросило: файрвол, отсутствующий проброс или неверный протокол. В клиенте Minecraft это выглядит как Connection refused: no further information и Connection timed out: no further information соответственно, и разница между ними - самая полезная подсказка, которую даёт игра.
Для UDP-игры nc не может отличить открытый порт от фильтруемого, потому что UDP ничего не отправляет обратно, если не отвечает приложение. Используйте вместо этого собственный запрос игры - в статье query-порты и A2S есть проверка в одну строку для игр Steam - или просто попробуйте подключиться.
Обычные сетевые причины, в порядке частоты:
- Неверный протокол. Правило TCP для UDP-игры ни с чем не совпадает. Valheim, игры на Source, Palworld, Project Zomboid и большинство выживалок работают по UDP; Minecraft Java и Terraria - по TCP; некоторым нужны оба.
- Порт не выделен или не проброшен. В панели хостинга настройка порта игры должна совпадать с портом, который действительно выделен серверу. Дома проброс должен указывать на текущий LAN-адрес сервера.
- Файрвол на машине. Windows Defender Firewall по умолчанию блокирует входящие. Если и игроки в вашей LAN не могут зайти, дело именно в нём.
- CGNAT или двойной NAT дома. Никакой проброс на роутере никогда не заработает, если у роутера нет публичного адреса. Как это определить, объясняет статья NAT и CGNAT для домашнего хостинга.
На RE:NODE выделенные порты перечислены на вкладке Network сервера, а настройки портов игры находятся на вкладке Startup. Если они не совпадают, сервер слушает порт, на который ничего не маршрутизируется. Исправьте так, чтобы игра использовала выделенный порт, перезапустите и прочитайте первые строки консоли для подтверждения.
Шаг 5: игра отказывает игроку#
Если соединение доходит до игры, а игра говорит «нет», обычно появляется сообщение, и обычно оно точное. Беда в том, что игроки пересказывают его как «не работает». Попросите точный текст или скриншот.
| Что видит игрок | Причина | Решение |
|---|---|---|
| Outdated client или outdated server (Minecraft, формулировка бывает разной) | Несовпадение версий | Подберите версию сервера или добавьте плагин-мост между версиями |
| Incompatible version (Valheim) | Сервер или клиент обновился, а другой нет | Обновите оба; для модифицированных серверов дождитесь модов |
| Server is full | Достигнут лимит слотов или «призраки» после падения | Увеличьте максимум игроков или перезапустите, чтобы очистить зависшие сессии |
| Bad password, incorrect password | Неверный пароль или старый, сохранённый в клиенте | Введите его заново; проверьте текущую настройку на сервере |
| Not whitelisted, not on the allow list | Включён белый список | Добавьте игрока по тому идентификатору, который ожидает игра |
| Banned | Забанен игрок или его адрес | Проверьте списки банов, включая баны по IP, задевающие общие адреса |
| Failed to verify username (Minecraft) | Сессия игрока или сервис авторизации Mojang | Перезапустите лаунчер и войдите заново; проверьте статус сервиса |
| Кик сразу после входа, сообщение про моды | Отсутствующие или несовпадающие моды | Те же моды, те же версии, тот же конфиг на обеих сторонах |
О двух пунктах стоит предупредить. Белые списки по именам ломаются, когда игрок меняет имя; где игра позволяет, используйте ID. А баны по IP задевают всех за одним NAT оператора или в одной университетской сети, так что бан, предназначенный одному человеку, может запереть незнакомца - способы получше описаны в статье читеры и списки банов.
Несовпадение модов даёт самые запутанные ошибки, потому что сообщение приходит от загрузчика модов, а не от игры, и часто называет мод, а не проблему. Если не могут зайти только игроки с модами, прежде всего сравните списки модов и версии. Порядок действий - в статье что делать, когда обновление мода всё сломало.
Сбои платформ и кроссплея
Когда не могут зайти все игроки одной платформы, а все игроки другой заходят, причина почти никогда не в сети. Она в том, как подключается эта платформа.
- Valheim: игроки на Xbox или из Microsoft Store могут зайти только на сервер, запущенный с
-crossplay, и подключаются они по шестизначному коду из лога, а не по IP. Код меняется при каждом перезапуске, так что вчерашний код ведёт в тупик. Сервер с клиентскими модами фактически только для PC, потому что игроки на консолях не могут их установить. Всё это разобрано в статье кроссплей Valheim и игроки с Xbox. - Minecraft Bedrock: игроки вообще не могут зайти на Java-сервер без слоя трансляции вроде Geyser, а консольные издания Bedrock не умеют добавлять произвольный адрес сервера без обходных путей. Настройка и нужные порты описаны в статье Minecraft Geyser и кроссплей с Bedrock - Bedrock, в отличие от Java, работает по UDP.
- Копии одной игры в Steam и вне Steam иногда используют разные сетевые механизмы и не видят серверы друг друга. Прежде чем искать неисправность, прочитайте собственные заметки игры.
На следующий день после обновления
Большая доля обращений «никто не может подключиться» приходит в течение суток после патча игры. Клиент обновился автоматически; сервер - нет, или обновился, но моды ещё не догнали. Симптом - ошибка версии у всех сразу, о которой игроки часто сообщают как «сервер лежит».
Сравните версию, которую сервер сообщает при запуске, с версией у игроков. Если они различаются, обновите сервер - в панели это обычно перезапуск с включёнными обновлениями, - а для модифицированного сервера сначала проверьте, что у каждого мода есть релиз под новую версию. Если игрок через свойства Steam сидит на бета-ветке, у него будет версия, отличная от всех, пока он из неё не выйдет. Как держать сервер в ногу с игрой, не ломая моды в день патча, - статья автоматизация обновлений игрового сервера.
Шаг 6: дело в сети игрока#
Когда все остальные подключаются, а один игрок нет, сервер ни при чём. У стороны игрока свой список:
- VPN, который он забыл выключить, или который не нравится его античиту.
- Строгая сеть. Школы, офисы, отели и некоторые публичные Wi-Fi полностью блокируют не-веб UDP. Попробуйте мобильный интернет.
- Защитное ПО, которое блокирует исходящие соединения игры, или свежая установка, которой так и не дали разрешение.
- Устаревший кэш DNS после того, как вы перенесли или переименовали сервер.
- Маршрутизация его провайдера. Редко, но бывает: у одного провайдера сломан путь до сети вашего сервера.
mtrот игрока до сервера, прочитанный по статье как читать traceroute и MTR, покажет, где он обрывается.
Когда работает через раз#
Периодические сбои - проблема другой формы. Игроки заходят, потом не могут, потом снова могут.
- Сервер перезапускается. Цикл падений или лимит памяти выглядят как «сервер постоянно уходит в офлайн». Проверьте консоль и аптайм.
- В часы пик сервер заполнен. Очевидно, если задуматься; неочевидно из фразы «не могу подключиться в девять вечера».
- Потеря пакетов. На пути с потерями подключение чаще заканчивается таймаутом, потому что handshake - это несколько кругов приёма-передачи. Как это увидеть, объясняет статья задержка, джиттер и потеря пакетов.
- Атака. Флуд по серверу или его query-порту приводит к тому, что подключения не проходят, а уже подключённые игроки продолжают играть или их дёргает назад. Как это выглядит изнутри, описано в статье что мы делаем с атаками.
FAQ#
Почему я могу зайти на свой сервер, а мои друзья нет?
Если вы в той же сети, что и сервер, вы пользуетесь путём через LAN, который полностью минует роутер, проброс и интернет. Ваши друзья пользуются публичным путём. Проверьте снаружи своей сети, а также проброс, протокол и то, не находится ли ваше подключение за CGNAT.
Чем отличаются «connection refused» и «connection timed out»?
Refused значит, что пакет дошёл до машины, но на этом порту ничего не слушало, поэтому машина ответила отказом. Timed out значит, что не ответил никто, обычно потому, что пакет по дороге отбросил файрвол, отсутствующий проброс или неверный протокол.
Игроки получают «server is full», хотя никого нет онлайн. Почему?
Обычно это зависшие сессии: игроки, у которых упала игра или пропало соединение, продолжают учитываться, пока сервер не заметит, что их нет. Перезапуск их очищает. Если это повторяется, проверьте настройку максимального числа игроков и не резервирует ли слоты какой-нибудь плагин.
Нужно ли игрокам открывать порты, чтобы зайти на мой сервер?
Нет. Игроки подключаются наружу, а это разрешает любой домашний роутер. Открытые или выделенные порты нужны только на стороне сервера. Если игроку советуют открыть порты, чтобы зайти на выделенный сервер, совет неверный.
Может ли мой хостинг увидеть, почему кто-то не может подключиться?
Хостинг может подтвердить, что сервер работает, какие порты выделены и доходит ли трафик до узла. Сообщение об ошибке у игрока или его сеть он увидеть не может. Передайте хостингу точный текст ошибки и примерное местоположение игрока вместе с выводом консоли.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.