Connection timed out и Connection refused: почему не подключается к серверу

Ошибки

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

Экран подключения к серверу Minecraft с ошибкой соединения

Недействительная сессия: «перезапустите лаунчер или игру»

Ошибка входа «Недействительная сессия (перезапустите лаунчер или игру)» появляется при подключении к серверу с включённой проверкой лицензии. Сервер спрашивает у Microsoft, действительно ли вы вошли в аккаунт, и получает отказ. Чаще всего причина в одном из четырёх:

  1. Истёк токен входа. Лаунчер долго был открыт или компьютер уходил в сон. Решение: полностью закройте игру и лаунчер, откройте заново.
  2. Вход с другого устройства. Если зайти в тот же аккаунт на другом ПК, старая сессия становится недействительной. Выйдите из аккаунта в лаунчере и войдите снова.
  3. Сбитое время на компьютере. Если часы отстают или спешат, проверка входа не проходит. Включите автоматическую синхронизацию времени в настройках системы.
  4. Нелицензионный лаунчер. С пиратского лаунчера на сервер с проверкой лицензии не зайти — нужен сервер с отключённой проверкой (online-mode=false). Если сервер ваш, учтите: без проверки любой может зайти под чужим ником, поэтому ставьте плагин авторизации.

Если ничего не помогло, проверьте статус серверов Microsoft: при сбоях авторизации ошибка появляется у всех игроков сразу.

Connection refused

io.netty.channel.AbstractChannel$AnnotatedConnectException:
Connection refused: no further information

До машины вы достучались, но на указанном порту никто не отвечает. Варианты:

Connection timed out

io.netty.channel.AbstractChannel$AnnotatedConnectException:
Connection timed out: no further information

Ответа нет вообще — пакеты уходят в пустоту. Это уже не про сам сервер, а про дорогу к нему:

Unknown host

java.net.UnknownHostException

Адрес не преобразуется в IP: опечатка в домене, либо домен не существует. Проверьте написание, и если это домен сервера — что он вообще жив.

Порядок проверки, чтобы не гадать

Разделите задачу надвое: работает ли сервер вообще и доходит ли до него трафик.

  1. Зайдите с той же машины по адресу localhost. Получилось — сервер жив, проблема в сети. Не получилось — проблема в сервере.
  2. Проверьте порт снаружи любым сервисом проверки портов. Закрыт — занимайтесь роутером и файрволом.
  3. Сверьте порт в server.properties (server-port) с тем, что вводите в клиенте.
Проверить и собрать настройки сервера поможет генератор server.properties.

Отдельно про UDP

Сама игра работает по TCP, но есть дополнения, которым нужен UDP: голосовые чаты (Simple Voice Chat, Plasmo Voice) и Geyser для входа с телефонов. Их «не работает» выглядит иначе: в игру вы заходите нормально, а голос не работает или Bedrock-клиент не видит сервер.

У многих хостингов UDP-порт нужно запрашивать отдельно. Спрашивайте до оплаты тарифа, а не после.

Если сервер чужой

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

Статус и аптайм русских серверов — в мониторинге: мы пингуем их каждые пять минут.

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

Что значит «Недействительная сессия, перезапустите лаунчер или игру»?

Сервер не смог проверить ваш вход: истёк токен авторизации или вы вошли в аккаунт на другом устройстве. Выйдите из аккаунта в лаунчере, войдите снова и перезапустите и лаунчер, и игру.

Чем Connection refused отличается от Connection timed out?

Refused — до машины вы достучались, но на этом порту никто не слушает: сервер выключен или указан не тот порт. Timed out — ответа нет вообще: адрес неверен, либо пакеты режет файрвол или роутер.

Сервер работает у меня, но друзья не заходят. Почему?

Вы подключаетесь изнутри своей сети, а они снаружи. Значит, порт не проброшен на роутере или закрыт файрволом.

Читайте также