Вылетает при подключении: Connection timed out
Заходишь в игру, вводишь адрес сервера, а вместо лаунча — красная плашка «Connection timed out» и зависание на пару минут перед ней. Это не «сервер сломан» в смысле краша — это клиент вообще не достучался до сервера за отведённое время. Разберём по шагам, где искать причину: от банального «сервер не запущен» до блокировки порта провайдером.
Содержание
Что вообще значит «timed out»
Клиент Minecraft посылает запрос на IP:порт сервера и ждёт ответа. Если ответа нет вообще — ни отказа, ни рукопожатия — за 10-15 секунд (таймаут в самом клиенте, точное значение чуть отличается между версиями), он вываливает именно «Connection timed out». Это принципиально отличается от других ошибок подключения:
- Connection timed out — сервер не отвечает вообще. Пакет либо не дошёл, либо дошёл, но никто не слушает на этом порту. Причина почти всегда сетевая: порт закрыт, IP неверный, файрвол режет трафик.
- Connection refused — сервер активно ответил «нет», порт закрыт явно (например, ничего не слушает на нём, но хост доступен).
- Failed to login: Bad Login или ошибка про версию протокола — сервер отвечает, но у клиента и сервера разные версии Minecraft. Это уже не про сеть, а про несовместимость версий — чинится сменой версии клиента или сервера, сюда файрвол не имеет отношения.
- Internal Exception: io.netty... с деталями — тоже указывает на разрыв соединения, но уже после установки, часто из-за модов или несовпадения набора модов.
Если у тебя именно зависание с таймаутом (а не мгновенный отказ) — иди по чек-листу ниже по порядку, не перепрыгивая шаги: экономит время.
Шаг 1: сервер вообще запущен и не завис
Первое, что нужно исключить — сервер просто не работает или завис в процессе запуска/генерации мира.
Подключись к хосту (SSH для VPS, или консоль панели, если сервер у хостера с управляемой панелью вроде Pterodactyl) и глянь, жив ли процесс:
ps aux | grep java
Если процесса нет — сервер упал или не стартовал. Смотри логи запуска:
tail -n 100 logs/latest.log
Ищи строку Done (X.XXXs)! For help, type "help" — это признак того, что сервер реально поднялся и слушает порт. Если лог обрывается раньше, на ошибке — проблема не в сети, а в самом сервере (битый конфиг, несовместимый мод, недостаточно RAM для генерации мира). Это отдельная история, детали разбора логов — в статье про логи и краш-репорты.
Если процесс есть, но сервер завис (не отвечает на команды в консоли, не растёт TPS) — иногда помогает просто подождать (первая генерация большого мира на слабом железе реально может занять несколько минут), но если зависание длится дольше 10-15 минут без прогресса в логе — перезапускай.
Проверить, что процесс реально слушает нужный порт:
ss -tlnp | grep 25565
Если строки нет — Java-процесс есть, а порт не слушается. Обычно это значит, что сервер ещё не успел завершить старт, либо в server.properties порт указан не 25565, а другой (проверь параметр server-port).
Поднять сервер Minecraft за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверШаг 2: порт 25565 открыт на файрволе хоста
Самая частая причина «Connection timed out», когда сервер точно жив — файрвол на самом хосте блокирует входящие подключения на игровой порт. Сервер слушает локально, но пакеты снаружи до него не доходят.
Проверка на Ubuntu/Debian с ufw:
sudo ufw status
Если в списке нет правила на 25565/tcp — добавляй:
sudo ufw allow 25565/tcp
sudo ufw allow 25565/udp
UDP тоже стоит открыть — некоторые модпаки и Bedrock-совместимые прокси используют его, плюс query/RCON-функции иногда идут через UDP.
Если файрвол через iptables напрямую:
sudo iptables -L -n | grep 25565
Добавить правило, если порта нет:
sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 25565 -j ACCEPT
Не забудь сохранить правила (iptables-persistent или аналог для твоего дистрибутива), иначе после перезагрузки хоста они слетят.
На CentOS/RHEL с firewalld:
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --permanent --add-port=25565/udp
sudo firewall-cmd --reload
Если у тебя выделенный сервер или домашний ПК за роутером — отдельно нужен проброс порта (port forwarding) на самом роутере в сторону локального IP машины с сервером, плюс правило файрвола на ОС. Оба уровня должны быть открыты одновременно — забыл про один, получаешь тот же timeout. Подробный разбор настройки портов и файрвола — в статье про порты и файрвол на игровом сервере.
Быстрая проверка снаружи, реально ли порт открыт (с любого сайта-сканера портов или командой с другой машины, не из локальной сети сервера):
nc -zv IP_СЕРВЕРА 25565
Если пишет Connection refused — файрвол или проброс не настроены (либо сервер сам не слушает). Если timed out — с высокой вероятностью пакеты режутся где-то на пути, часто это уже про сеть провайдера (шаг 4).
Шаг 3: IP-адрес указан верно
Банальная, но очень частая причина — в клиенте указан не тот IP. Особенно если сервер за NAT (домашний ПК, некоторые VPS-конфигурации) или ты путаешь внешний и локальный адрес.
- Внешний IP — тот, который видит весь интернет. Узнать на самом сервере:
curl ifconfig.me. Именно этот адрес должен быть в клиенте, если игрок подключается извне. - Локальный (внутренний) IP — вида
192.168.x.xили10.x.x.x, виден только внутри локальной сети. Работает, только если игрок физически в той же сети (та же Wi-Fi точка), что и сервер.
Если ты сам себе прописал внешний IP, а играешь с той же машины или из той же локальной сети, где стоит сервер — иногда это тоже вызывает проблемы (NAT hairpinning не на всех роутерах работает корректно). В этом случае для локального подключения используй localhost или локальный IP, а внешний — только для тех, кто снаружи.
Если у хостинга динамический IP (актуально для домашних серверов на обычном интернет-тарифе) — адрес мог просто смениться после перезагрузки роутера. Проверяй текущий внешний IP каждый раз, если раньше подключение работало, а теперь нет без других изменений.
Отдельно: если у сервера указан нестандартный порт (не 25565), в клиенте IP нужно писать через двоеточие: IP:ПОРТ, например 123.45.67.89:25566. Забытый порт при нестандартной настройке — тоже частая причина timeout ровно с тем же симптомом.
Шаг 4: провайдер или сеть блокирует порт
Если сервер точно жив, порт открыт на файрволе, IP верный — а таймаут всё равно есть, дело может быть на уровне сети, до которой ты не достаёшь напрямую администрированием ОС.
Что стоит проверить:
- Хостинг блокирует нестандартные порты по умолчанию — у некоторых бюджетных VPS-провайдеров порты вне стандартного веб-набора (80, 443, 22) закрыты на уровне сетевого файрвола платформы (это отдельный слой поверх ufw/iptables внутри самой VM). Такое правило не видно через
ufw statusизнутри сервера — его настраивают в панели управления хостинга или через тикет в поддержку. - Провайдер игрока блокирует исходящие на игровые порты — редко, но бывает в корпоративных и учебных сетях, иногда у мобильных операторов. Проверяется просто: попробуй подключиться с другого интернета (мобильный интернет вместо домашнего Wi-Fi или наоборот).
- DDoS-защита или anti-abuse системы хостера режут трафик на нестандартных портах при подозрительной активности — если сервер недавно словил атаку или аномальный трафик, защита могла временно заблокировать входящие. Смотри в панели хостинга раздел про защиту от DDoS, если он есть.
- CGNAT у провайдера игрока (Carrier-Grade NAT) — актуально, если проблема на стороне подключающегося и он сам держит сервер дома. Тогда проброс порта на его роутере ничего не даёт, потому что провайдер сам сидит за NAT ещё на уровень выше. Проверяется сравнением внешнего IP на сайте вроде whatismyip и IP, который видно в настройках роутера в разделе WAN — если они разные, это CGNAT, и без VPN/туннеля или отдельного IP от провайдера порт снаружи не пробросить.
Когда идти в поддержку хостинга
Если по всем предыдущим шагам всё чисто — сервер жив и слушает порт, ufw/iptables пропускают трафик на 25565, IP в клиенте верный, а другой человек с другого интернета тоже не может подключиться — это сигнал, что проблема на уровне сети хостинга, а не твоей настройки.
В таком случае пиши в поддержку и сразу прикладывай:
- вывод
ss -tlnp | grep 25565(показывает, что сервер реально слушает порт) - вывод
sudo ufw statusили аналога (показывает, что файрвол ОС не блокирует) - результат
nc -zv IP 25565снаружи с другой сети - время, когда началась проблема (если раньше всё работало)
Это экономит пару итераций переписки — поддержка сразу видит, что базовые вещи проверены, и может сразу смотреть в сторону сетевого файрвола платформы или маршрутизации.
Профилактика на будущее
Чтобы не наступать на те же грабли:
- После любой переустановки ОС или смены хостинга сразу проверяй правила файрвола заново — они не переносятся автоматически.
- Если меняешь порт сервера в
server.properties, не забывай синхронно менять правило файрвола — рассинхрон порт/правило встречается постоянно. - Держи под рукой команду
nc -zv(или её аналог для Windows —Test-NetConnection -ComputerName IP -Port 25565в PowerShell) для быстрой диагностики без ожидания игрового клиента. - Если сервер на управляемом хостинге с готовой панелью — там обычно порты уже открыты автоматически при создании инстанса конкретно под Minecraft, и «Connection timed out» с высокой вероятностью означает проблему на стороне игрока (шаг 3-4), а не хоста.
Поднять сервер Minecraft за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сервер запущен, порт открыт, а всё равно timeout — что ещё проверить?
Убедись, что нет второго файрвола выше уровня ОС (сетевой файрвол хостинг-платформы или облачного провайдера) — он не виден изнутри сервера и настраивается отдельно в панели управления. Также проверь, что в server.properties не стоит server-ip=127.0.0.1 — так сервер слушает только локальный интерфейс и снаружи недоступен, даже если порт формально открыт.
Разница между Connection timed out и Connection refused на практике?
Timed out — пакет ушёл в пустоту, ответа нет вообще (закрытый файрвол, неверный IP). Refused — что-то на пути (ОС или файрвол) явно ответило отказом, обычно значит, что хост доступен, но конкретно этот порт закрыт или ничего не слушает на нём.
Может ли антивирус или файрвол на стороне игрока вызывать эту ошибку?
Да, изредка. Локальный файрвол Windows или сторонний антивирус иногда блокирует исходящие подключения Minecraft на нестандартные порты. Если у друзей подключение работает, а у тебя нет — попробуй временно отключить локальный файрвол для проверки (и включить обратно после теста).
Помогает ли просто перезапуск сервера?
Иногда да — если порт был занят зависшим процессом или сеть контейнера/VM подвисла. Но если после перезапуска ошибка повторяется стабильно — это не разовый глюк, а конфигурация, и нужно идти по чек-листу выше.
Что делать, если играю по локальной сети (LAN) и всё равно timeout?
Проверь, что на компьютере с сервером в локальном файрволе разрешены входящие для Java (или конкретно для порта 25565), и что оба устройства реально в одной подсети — не в гостевой Wi-Fi сети роутера, которая часто изолирована от основной.