Сервис запущен, а снаружи порт мёртв. Это самый частый технический тикет, и в большинстве случаев лечение занимает одну команду. Пройдите чеклист сверху вниз, и сломанное звено найдётся.
Сначала поймём, что значит «закрыт»
Соединение с портом умирает в одном из трёх мест: приложение не слушает, файрвол сервера отбрасывает пакет, либо клиент вообще не долетает до сервера. Чеклист ниже разделяет эти случаи.
Шаг 1: слушает ли кто-нибудь?
ss -tlnp | grep :8080
Пустой вывод означает, что приложение просто не слушает порт. Смотрите его конфиг и логи; файрвол невиновен.
Вывод вида 127.0.0.1:8080 означает, что приложение слушает только localhost и никогда не примет внешнее соединение. Поменяйте адрес привязки на 0.0.0.0 (или IP сервера) в конфиге приложения и перезапустите его.
Шаг 2: проверка с самого сервера
curl -v http://127.0.0.1:8080/
Если не работает и так, проблема в приложении, точка. Если локально работает, а снаружи нет, идём дальше.
Шаг 3: какой файрвол на самом деле активен?
Современные дистрибутивы возят разные инструменты, часто два сразу. Проверьте все; побеждает тот, где есть правила:
sudo ufw status verbose # Ubuntu/Debian
sudo firewall-cmd --list-all # AlmaLinux/Rocky
sudo iptables -L -n | head -30
sudo nft list ruleset | head -30
Шаг 4: открыть порт в правильном инструменте
# ufw
sudo ufw allow 8080/tcp
# firewalld
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
Шаг 5: проверка из другой сети
nc -vz ip.вашего.сервера 8080
Проверяйте с машины вне сервера и желательно не из офисного Wi-Fi: корпоративные сети любят резать нестандартные порты на своей стороне.
Классические ловушки из тикетов
- Docker публикует порты сам: контейнер без
-p 8080:8080недостижим ниоткуда, что бы ни говорил файрвол. - Приложение перезапустили, а порт держит старый процесс.
ss -tlnpпоказывает PID; убедитесь, что это тот процесс, о котором вы думаете. - Исходящий порт 25 - особый случай на большинстве хостингов, включая наш: он ограничен по умолчанию как антиспам-мера. Нужна отправка почты - используйте релей на 2525/587 или напишите в поддержку.
- Проверка «снаружи» через VPN, который заводит вас обратно в ту же сеть, ничего не доказывает. Для чистого теста подойдёт мобильный интернет.