Для vanilla PC-сервера с подключением через Join via IP проверяйте отдельно игру, слушающий TCP-сокет и внешний маршрут. Успешная загрузка мира в консоли не доказывает доступность из другой сети. Открытый TCP-порт тоже ещё не подтверждает, что клиент войдёт в мир.
Примеры используют Ubuntu 24.04, пользователя terraria, tmux и TCP 7777 из инструкции установки. Это диагностика прямого подключения PC-клиента. Steam-приглашения, мобильный и консольный crossplay, tModLoader и TShock требуют других проверок совместимости или транспорта. Не подменяйте один сценарий другим во время диагностики.
Определите этап ошибки до изменения firewall#
Запишите точный текст сообщения и момент появления. Адрес вообще недоступен, соединение немедленно отвергается, появляется запрос пароля или игра прямо сообщает о другой версии? Сначала сравните полный номер PC-клиента с версией в консоли работающего сервера. При расхождении используйте разбор несовпадения версий.
В старом обсуждении официального форума вокруг ошибки Steam-подключения перечислены переустановки и изменения firewall без установленной причины. Один текст ошибки не даёт готового диагноза. Здесь мы ограничиваемся прямым IP-подключением и проверяем по одной границе маршрута.
Уточните, проблема у одного игрока или у всех. Если другой внешний PC входит по тому же адресу и порту в тот же мир, сохраните этот рабочий пример для сравнения. Не пересоздавайте сервер посреди разбора единственного проблемного подключения: так можно потерять полезное различие условий.
Убедитесь, что порт слушает нужный процесс#
На сервере выполните читающие проверки из административной SSH-сессии:
sudo ss -ltnp 'sport = :7777'
pgrep -a -u terraria -f 'TerrariaServer'
sudo -u terraria sed -n '/^world=/p; /^port=/p' \
/srv/terraria/serverconfig.txt
Если реально настроен другой порт, замените 7777 во всех проверках. Отсутствие слушающего сокета означает, что TCP-точки входа здесь пока нет. Проверьте консоль tmux: сервер может ждать выбора мира, сообщать об ошибке загрузки или о занятом порте. Изменение роутера не завершит загрузку мира за него.
Если сокет привязан только к 127.0.0.1, прямое внешнее подключение невозможно. Проверьте фактические аргументы запуска, включая возможный -ip. Сокет на подходящем локальном интерфейсе необходим, но сам по себе ничего не говорит о firewall провайдера.
Сверьте пользователя и каталог релиза работающего процесса. Ожидаемый порт иногда занимает забытый второй сервер или вообще другая программа. Не освобождайте его массовым завершением процессов по подстроке: сначала определите владельца.
Проверьте TCP со стороны игрока#
В PowerShell на Windows-компьютере игрока подставьте настоящий адрес сервера вместо документального примера:
Test-NetConnection -ComputerName 203.0.113.10 -Port 7777
На Linux-компьютере с установленным netcat:
nc -vz -w 5 203.0.113.10 7777
Успешное TCP-рукопожатие подтверждает транспорт до слушающего приложения. Оно не проверяет версию Terraria, пароль и доступ в мир. Тайм-аут означает незавершённое рукопожатие, но не называет виновный firewall. Немедленный отказ обычно указывает на активное отклонение соединения: сравните результат с текущим сокетом и адресом.
Для проверки публичного маршрута используйте внешнюю сеть. Вход из той же LAN может обходить границу, через которую идут удалённые игроки. Ping не заменяет этот тест: ICMP и игровой TCP-трафик могут фильтроваться по-разному.
Разделите firewall ОС, правила провайдера и NAT#
Перед изменениями прочитайте текущие настройки:
sudo ufw status verbose
ip -brief address
ip route
Если UFW уже настроен, а правила игрового порта действительно нет, разрешите фактический TCP-порт:
sudo ufw allow 7777/tcp
Не включайте неиспользуемый firewall и не отключайте существующий ради этого теста. Сохраните доступ по SSH. В справочнике сервера TCP 7777 указан как стандартный порт прямого соединения. Одного открытого UDP-порта для этого TCP-маршрута недостаточно.
Проверьте отдельные входящие правила у VPS-провайдера. Для домашнего сервера настройте перенаправление внешнего TCP-порта на нужный LAN-адрес и внутренний TCP-порт. После смены адреса через DHCP перепроверьте назначение. Приватный адрес домашней сети нельзя раздать удалённым игрокам как интернет-адрес сервера.
Если WAN-адрес роутера приватный или общий и отличается от публичного, выясните у провайдера наличие upstream NAT или CGNAT. Дополнительное правило на домашнем роутере не управляет вышестоящим устройством. Нужен подходящий публичный адрес либо продуманный VPN-маршрут для всех участников. У него отдельно проверяют конечный адрес и порт.
Завершите проверку настоящим входом#
Введите подтверждённый адрес и порт в Multiplayer → Join via IP, укажите игровой пароль и проверьте нужный мир. Если используется домен, сравните результат его разрешения с рабочим прямым адресом до изменения DNS. Помимо версии игры проверьте совместимость выбранного персонажа.
Для диагностики сохраните время, версии обеих сторон, выбранные адрес и порт, состояние сокета, внешний TCP-результат и сообщение игры. Перед передачей уберите секреты и приватные сетевые данные. Если игрок уже входит в мир, но позже отключается, зафиксируйте состояние серверного процесса и одновременные отключения других игроков. Это следующий сценарий диагностики, который нельзя объяснить одним отсутствующим входящим правилом.




