Как исправить ошибку «Timed out»

1. Диагностика источника проблемы

Прежде чем менять настройки, локализуйте, на каком этапе происходит разрыв соединения.

  1. Зайдите в панель proxify.cloud → выберите ваш выделенный сервер → вкладка Console (VNC/NoVNC).
  2. Авторизуйтесь в Ubuntu (обычно root или пользователь с sudo).
  3. Проверьте, запущен ли процесс Java:
    ps aux | grep java
    
    Если процесса нет — сервер упал. Смотрите логи (latest.log в папке сервера).
  4. Проверьте, слушает ли порт (по умолчанию 25565):
    ss -tulpn | grep 25565
    
    Ожидаемый вывод: LISTEN 0 100 0.0.0.0:25565 0.0.0.0:* users:(("java",pid=1234,fd=10)).
  5. Проверьте локальную доступность с самой машины:
    nc -zv 127.0.0.1 25565
    
    Результат succeeded! означает, что внутри ОС порт открыт. Если Connection refused — проблема в конфиге сервера (server.properties) или фаерволе ОС.

2. Настройка фаервола Ubuntu (UFW/iptables)

На выделенных серверах proxify.cloud часто стоит чистая Ubuntu с включенным UFW или чистым iptables.

Вариант А: UFW (стандарт для Ubuntu)

  1. Проверьте статус:
    ufw status verbose
    
  2. Если статус active, разрешите порт Minecraft (TCP):
    ufw allow 25565/tcp comment 'Minecraft Server'
    
  3. Если используете RCON (порт 25575) или Query (UDP 25565), добавьте правила:
    ufw allow 25575/tcp comment 'RCON'
    ufw allow 25565/udp comment 'Query Protocol'
    
  4. Перезагрузите правила:
    ufw reload
    

Вариант Б: iptables / nftables (если UFW не используется)

  1. Проверьте текущие правила:
    iptables -L -n -v --line-numbers
    
  2. Добавьте правило в цепочку INPUT (вставьте перед первым REJECT/DROP или в конец, если политики ACCEPT):
    iptables -I INPUT -p tcp --dport 25565 -j ACCEPT
    iptables -I INPUT -p udp --dport 25565 -j ACCEPT
    
  3. Сохраните правила навсегда (установите iptables-persistent, если нет):
    apt update && apt install -y iptables-persistent
    # Во время установки выберите "Yes" для сохранения текущих правил IPv4 и IPv6
    netfilter-persistent save
    

3. Проверка конфигурации server.properties

Ошибка «Timed out» часто возникает, если сервер привязан к неверному IP-адресу.

  1. Перейдите в директорию сервера (примерный путь):
    cd /home/minecraft/server  # или /opt/minecraft, /var/lib/pterodactyl/volumes/...
    
  2. Откройте конфиг:
    nano server.properties
    
  3. Найдите параметр server-ip. Он должен быть пустым (привязка ко всем интерфейсам 0.0.0.0) или содержать внутренний IP сервера (например, 10.0.0.5), который виден в панели proxify.cloud на вкладке «Network» / «IP-адреса».
    # Правильно (пусто):
    server-ip=
    
    # Правильно (внутренний IP из панели proxify.cloud):
    server-ip=10.0.0.5
    
    # НЕПРАВИЛЬНО (внешний IP, localhost, 0.0.0.0 явно):
    server-ip=127.0.0.1
    server-ip=89.123.45.67
    
  4. Проверьте enable-query=true и query.port=25565, если используете мониторинги.
  5. Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X).
  6. Перезапустите сервер (через systemd, screen или панель управления, если стоит Pterodactyl/Pelican):
    systemctl restart minecraft  # если юнитом
    # или через панель proxify.cloud -> VNC -> screen -r -> stop/start
    

4. Настройка сетевого экрана в панели proxify.cloud (Критично)

На выделенных серверах proxify.cloud перед вашей ОС стоит аппаратный/виртуальный фаерволл Proxmox / пограничный роутер. Правила в Ubuntu (UFW) не сработают, если порт заблокирован на уровне хостера.

  1. Откройте панель proxify.cloud в браузере.
  2. Выберите ваш сервер → раздел Сеть (Network) или Фаервол (Firewall) / Security Groups.
  3. Найдите профиль правил, привязанный к вашему серверу (или создайте новый).
  4. Добавьте правило Inbound (Входящие):
    • Протокол: TCP
    • Порт: 25565 (или ваш кастомный порт из server-port)
    • Источник: 0.0.0.0/0 (все) или ваши подсети
    • Действие: Allow (Разрешить)
  5. (Опционально) Для Query/RCON добавьте UDP 25565 и TCP 25575.
  6. Нажмите Применить / Save / Apply Rules. Изменения вступают в силу мгновенно, перезагрузка сервера не требуется.

Важно: Если в панели proxify.cloud стоит «Default Deny» (запрет всего по умолчанию) и вы не создали правило для 25565/tcp — игроки получат «Timed out» даже при идеальной настройке Ubuntu.

5. Проверка сетевого стека и MTU

Иногда «Timed out» появляется не сразу, а при передаче больших пакетов (логин, загрузка чанков). Это проблема MTU (фрагментация).

  1. Проверьте MTU на интерфейсе (обычно ens18, eth0 или enp0s3):
    ip link show | grep mtu
    
    Стандарт — 1500. В виртуализированных средах (Proxmox/KVM) иногда требуется 1450 или 1400 из-за оверхеда VXLAN/GENEVE.
  2. Протестируйте прохождение больших пакетов с флагом «Don't Fragment» с вашего ПК к серверу (внешний IP из панели proxify.cloud):
    • Windows: ping -f -l 1472 <EXTERNAL_IP>
    • Linux/Mac: ping -M do -s 1472 <EXTERNAL_IP>
    • 1472 байт данных + 28 байт заголовков = 1500 MTU.
  3. Если пакет не проходит («Packet needs to be fragmented» / «Message too long»), понизьте MTU на сервере:
    # Временно (до перезагрузки):
    ip link set dev ens18 mtu 1450
    
    # Навсегда (Netplan - стандарт Ubuntu 20.04+):
    nano /etc/netplan/01-netcfg.yaml
    
    Добавьте mtu: 1450 под addresses::
    network:
      version: 2
      ethernets:
        ens18:
          dhcp4: true
          mtu: 1450
    
    Примените:
    netplan apply
    

6. Проверка Java-флагов и производительности (False Timeout)

Если сервер лагает (TPS < 15), клиент может отключиться по «Timed out» / «Connection lost: Timed out», так как сервер не успевает отправить пакеты keep-alive.

  1. Посмотрите на нагрузку в консоли сервера (Can't keep up! Is the server overloaded?).
  2. Оптимизируйте запуск (файл start.sh или systemd unit):
    # Пример современных флагов для Paper/Purpur 1.20+ (Xms=Xmx)
    -Xms4G -Xmx4G \
    -XX:+UseG1GC \
    -XX:+ParallelRefProcEnabled \
    -XX:MaxGCPauseMillis=200 \
    -XX:+UnlockExperimentalVMOptions \
    -XX:+DisableExplicitGC \
    -XX:+AlwaysPreTouch \
    -XX:G1NewSizePercent=30 \
    -XX:G1MaxNewSizePercent=40 \
    -XX:G1HeapRegionSize=8M \
    -XX:G1ReservePercent=20 \
    -XX:G1HeapWastePercent=5 \
    -XX:G1MixedGCCountTarget=4 \
    -XX:InitiatingHeapOccupancyPercent=15 \
    -XX:G1MixedGCLiveThresholdPercent=90 \
    -XX:G1RSetUpdatingPauseTimePercent=5 \
    -XX:SurvivorRatio=32 \
    -Dusing.aikars.flags=https://mcflags.emc.gs \
    -Daikars.new.flags=true \
    -jar paper.jar --nogui
    
  3. Убедитесь, что выделено достаточно RAM (в панели proxify.cloud проверьте тариф/ресурсы). Для 20+ игроков нужно минимум 4-6 Гб под кучу + 1-2 Гб ОС.
  4. Используйте PaperMC или Purpur вместо Vanilla/Spigot — они значительно снижают задержки сети.

7. Проблемы с прокси (BungeeCord / Velocity / Waterfall)

Если вы используете прокси-сервер на этом же или другом сервере proxify.cloud:

  1. Backend-серверы (Spigot/Paper) должны иметь в server.properties:
    online-mode=false
    # bungeecord: true (для Spigot/Paper старых версий)
    # velocity-support: true (для Paper новых версий + Velocity)
    
  2. Прокси (Velocity) должен видеть бэкенды по внутренним IP (локальной сети proxify.cloud), а не по внешним.
    • В velocity.toml:
      [servers.lobby]
      address = "10.0.0.10:25565" # Внутренний IP из панели proxify.cloud